shithub: riscv

Download patch

ref: fb1551e9973ee86ccdd0ed8b125de97e9865e5ba
parent: 0276031c011d28f182492ebbee34df35b005b4f9
author: ftrvxmtrx <[email protected]>
date: Thu Mar 10 17:43:00 EST 2016

libvorbis: update to 1.3.5

--- a/sys/src/cmd/audio/libvorbis/analysis.c
+++ b/sys/src/cmd/audio/libvorbis/analysis.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.55 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: analysis.c 16226 2009-07-08 06:43:49Z xiphmont $
 
  ********************************************************************/
 
@@ -26,11 +26,10 @@
 #include "os.h"
 #include "misc.h"
 
-int analysis_noisy=1;
-
 /* decides between modes, dispatches to the appropriate mapping. */
 int vorbis_analysis(vorbis_block *vb, ogg_packet *op){
-  int                   ret;
+  int ret,i;
+  vorbis_block_internal *vbi=vb->internal;
 
   vb->glue_bits=0;
   vb->time_bits=0;
@@ -38,8 +37,9 @@
   vb->res_bits=0;
 
   /* first things first.  Make sure encode is ready */
-  oggpack_reset(&vb->opb);
-  
+  for(i=0;i<PACKETBLOBS;i++)
+    oggpack_reset(vbi->packetblob[i]);
+
   /* we only have one mapping type (0), and we let the mapping code
      itself figure out what soft mode to use.  This allows easier
      bitrate management */
@@ -52,7 +52,7 @@
       /* The app is using a bitmanaged mode... but not using the
          bitrate management interface. */
       return(OV_EINVAL);
-    
+
     op->packet=oggpack_get_buffer(&vb->opb);
     op->bytes=oggpack_bytes(&vb->opb);
     op->b_o_s=0;
@@ -63,6 +63,9 @@
   return(0);
 }
 
+#ifdef ANALYSIS
+int analysis_noisy=1;
+
 /* there was no great place to put this.... */
 void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,ogg_int64_t off){
   int j;
@@ -69,43 +72,41 @@
   FILE *of;
   char buffer[80];
 
-  /*  if(i==5870){*/
-    sprintf(buffer,"%s_%d.m",base,i);
-    of=fopen(buffer,"w");
-    
-    if(!of)perror("failed to open data dump file");
-    
-    for(j=0;j<n;j++){
-      if(bark){
-	float b=toBARK((4000.f*j/n)+.25);
-	fprintf(of,"%f ",b);
-      }else
-	if(off!=0)
-	  fprintf(of,"%f ",(double)(j+off)/8000.);
-	else
-	  fprintf(of,"%f ",(double)j);
-      
-      if(dB){
-	float val;
-	if(v[j]==0.)
-	  val=-140.;
-	else
-	  val=todB(v+j);
-	fprintf(of,"%f\n",val);
-      }else{
-	fprintf(of,"%f\n",v[j]);
-      }
+  sprintf(buffer,"%s_%d.m",base,i);
+  of=fopen(buffer,"w");
+
+  if(!of)perror("failed to open data dump file");
+
+  for(j=0;j<n;j++){
+    if(bark){
+      float b=toBARK((4000.f*j/n)+.25);
+      fprintf(of,"%f ",b);
+    }else
+      if(off!=0)
+        fprintf(of,"%f ",(double)(j+off)/8000.);
+      else
+        fprintf(of,"%f ",(double)j);
+
+    if(dB){
+      float val;
+      if(v[j]==0.)
+        val=-140.;
+      else
+        val=todB(v+j);
+      fprintf(of,"%f\n",val);
+    }else{
+      fprintf(of,"%f\n",v[j]);
     }
-    fclose(of);
-    /*  } */
+  }
+  fclose(of);
 }
 
 void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
-		      ogg_int64_t off){
+                      ogg_int64_t off){
   if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB,off);
 }
 
-
+#endif
 
 
 
--- a/sys/src/cmd/audio/libvorbis/backends.h
+++ b/sys/src/cmd/audio/libvorbis/backends.h
@@ -5,14 +5,14 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: libvorbis backend and mapping structures; needed for 
+ function: libvorbis backend and mapping structures; needed for
            static mode headers
- last mod: $Id: backends.h,v 1.14 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: backends.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -35,7 +35,7 @@
   void (*free_look) (vorbis_look_floor *);
   void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *);
   int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *,
-		     void *buffer,float *);
+                     void *buffer,float *);
 } vorbis_func_floor;
 
 typedef struct{
@@ -68,16 +68,16 @@
   int   class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
 
 
-  int   mult;                      /* 1 2 3 or 4 */ 
-  int   postlist[VIF_POSIT+2];    /* first two implicit */ 
+  int   mult;                      /* 1 2 3 or 4 */
+  int   postlist[VIF_POSIT+2];    /* first two implicit */
 
 
   /* encode side analysis parameters */
-  float maxover;     
-  float maxunder;  
-  float maxerr;    
+  float maxover;
+  float maxunder;
+  float maxerr;
 
-  float twofitweight;  
+  float twofitweight;
   float twofitatten;
 
   int   n;
@@ -89,15 +89,16 @@
   void                 (*pack)  (vorbis_info_residue *,oggpack_buffer *);
   vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
   vorbis_look_residue *(*look)  (vorbis_dsp_state *,
-				 vorbis_info_residue *);
+                                 vorbis_info_residue *);
   void (*free_info)    (vorbis_info_residue *);
   void (*free_look)    (vorbis_look_residue *);
   long **(*class)      (struct vorbis_block *,vorbis_look_residue *,
-			float **,int *,int);
-  int  (*forward)      (struct vorbis_block *,vorbis_look_residue *,
-			float **,float **,int *,int,long **);
+                        int **,int *,int);
+  int  (*forward)      (oggpack_buffer *,struct vorbis_block *,
+                        vorbis_look_residue *,
+                        int **,int *,int,long **,int);
   int  (*inverse)      (struct vorbis_block *,vorbis_look_residue *,
-			float **,int *,int);
+                        float **,int *,int);
 } vorbis_func_residue;
 
 typedef struct vorbis_info_residue0{
@@ -108,19 +109,19 @@
   /* first stage (lossless partitioning) */
   int    grouping;         /* group n vectors per partition */
   int    partitions;       /* possible codebooks for a partition */
+  int    partvals;         /* partitions ^ groupbook dim */
   int    groupbook;        /* huffbook for partitioning */
   int    secondstages[64]; /* expanded out to pointers in lookup */
-  int    booklist[256];    /* list of second stage books */
+  int    booklist[512];    /* list of second stage books */
 
-  float  classmetric1[64];  
-  float  classmetric2[64];  
-
+  const int classmetric1[64];
+  const int classmetric2[64];
 } vorbis_info_residue0;
 
 /* Mapping backend generic *****************************************/
 typedef struct{
   void                 (*pack)  (vorbis_info *,vorbis_info_mapping *,
-				 oggpack_buffer *);
+                                 oggpack_buffer *);
   vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
   void (*free_info)    (vorbis_info_mapping *);
   int  (*forward)      (struct vorbis_block *vb);
@@ -130,7 +131,7 @@
 typedef struct vorbis_info_mapping0{
   int   submaps;  /* <= 16 */
   int   chmuxlist[256];   /* up to 256 channels in a Vorbis stream */
-  
+
   int   floorsubmap[16];   /* [mux] submap to floors */
   int   residuesubmap[16]; /* [mux] submap to residue */
 
@@ -141,5 +142,3 @@
 } vorbis_info_mapping0;
 
 #endif
-
-
--- a/sys/src/cmd/audio/libvorbis/barkmel.c
+++ b/sys/src/cmd/audio/libvorbis/barkmel.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: bark scale utility
- last mod: $Id: barkmel.c,v 1.12 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: barkmel.c 19454 2015-03-02 22:39:28Z xiphmont $
 
  ********************************************************************/
 
@@ -23,31 +23,31 @@
   for(i=64;i<32000;i*=2){
     rate=48000.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=44100.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=32000.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=22050.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=16000.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=11025.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
     rate=8000.f;
     fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n\n",
-	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+            rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
 
   }
--- a/sys/src/cmd/audio/libvorbis/bitrate.c
+++ b/sys/src/cmd/audio/libvorbis/bitrate.c
@@ -5,17 +5,16 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: bitrate tracking and management
- last mod: $Id: bitrate.c,v 1.20 2002/07/18 02:12:20 xiphmont Exp $
+ last mod: $Id: bitrate.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <math.h>
@@ -26,506 +25,229 @@
 #include "misc.h"
 #include "bitrate.h"
 
+/* compute bitrate tracking setup  */
+void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
+  codec_setup_info *ci=vi->codec_setup;
+  bitrate_manager_info *bi=&ci->bi;
 
-static long BINBYTES(bitrate_manager_state *bm,long pos,long bin){
-  int bins=bm->queue_bins;
-  return(bm->queue_binned[pos*bins+bin]);
-}
+  memset(bm,0,sizeof(*bm));
 
-#define LIMITBYTES(pos,bin) (bm->minmax_binstack[(pos)*bins*2+((bin)+bins)])
+  if(bi && (bi->reservoir_bits>0)){
+    long ratesamples=vi->rate;
+    int  halfsamples=ci->blocksizes[0]>>1;
 
-static long LACING_ADJUST(long bytes){
-  int addto=bytes/255+1;
-  return(bytes+addto);
-}
+    bm->short_per_long=ci->blocksizes[1]/ci->blocksizes[0];
+    bm->managed=1;
 
-static int floater_interpolate(bitrate_manager_state *bm,vorbis_info *vi,
-				  double desired_rate){
-  int bin=rint(bm->avgfloat);
-  double lobitrate,hibitrate;
+    bm->avg_bitsper= rint(1.*bi->avg_rate*halfsamples/ratesamples);
+    bm->min_bitsper= rint(1.*bi->min_rate*halfsamples/ratesamples);
+    bm->max_bitsper= rint(1.*bi->max_rate*halfsamples/ratesamples);
 
+    bm->avgfloat=PACKETBLOBS/2;
 
-  lobitrate=(double)(bm->avg_binacc[bin]*8)/bm->avg_sampleacc*vi->rate;
-  while(lobitrate>desired_rate && bin>0){
-    bin--;
-    lobitrate=(double)(bm->avg_binacc[bin]*8)/bm->avg_sampleacc*vi->rate;
-  }
+    /* not a necessary fix, but one that leads to a more balanced
+       typical initialization */
+    {
+      long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
+      bm->minmax_reservoir=desired_fill;
+      bm->avg_reservoir=desired_fill;
+    }
 
-  if(bin+1<bm->queue_bins){
-    hibitrate=(double)(bm->avg_binacc[bin+1]*8)/bm->avg_sampleacc*vi->rate;
-    if(fabs(hibitrate-desired_rate) < fabs(lobitrate-desired_rate))bin++;
   }
-  return(bin);
 }
 
-/* try out a new limit */
-static long limit_sum(bitrate_manager_state *bm,int limit){
-  int i=bm->minmax_stackptr;
-  long acc=bm->minmax_acctotal;
-  long bins=bm->queue_bins;
-  
-  acc-=LIMITBYTES(i,0);
-  acc+=LIMITBYTES(i,limit);
-
-  while(i-->0){
-    if(bm->minmax_limitstack[i]<=limit)break;
-    acc-=LIMITBYTES(i,bm->minmax_limitstack[i]);
-    acc+=LIMITBYTES(i,limit);
-  }
-  return(acc);
-}
-
-/* compute bitrate tracking setup, allocate circular packet size queue */
-void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
-  int i;
-  codec_setup_info *ci=vi->codec_setup;
-  bitrate_manager_info *bi=&ci->bi;
-  long maxlatency;
-
+void vorbis_bitrate_clear(bitrate_manager_state *bm){
   memset(bm,0,sizeof(*bm));
-  
-  if(bi){
-    
-    bm->avg_sampledesired=bi->queue_avg_time*vi->rate;
-    bm->avg_centerdesired=bi->queue_avg_time*vi->rate*bi->queue_avg_center;
-    bm->minmax_sampledesired=bi->queue_minmax_time*vi->rate;
-    
-    /* first find the max possible needed queue size */
-    maxlatency=max(bm->avg_sampledesired-bm->avg_centerdesired,
-		   bm->minmax_sampledesired)+bm->avg_centerdesired;
-    
-    if(maxlatency>0 &&
-       (bi->queue_avgmin>0 || bi->queue_avgmax>0 || bi->queue_hardmax>0 ||
-	bi->queue_hardmin>0)){
-      long maxpackets=maxlatency/(ci->blocksizes[0]>>1)+3;
-      long bins=PACKETBLOBS;
-      
-      bm->queue_size=maxpackets;
-      bm->queue_bins=bins;
-      bm->queue_binned=_ogg_calloc(maxpackets,bins*sizeof(*bm->queue_binned));
-      bm->queue_actual=_ogg_calloc(maxpackets,sizeof(*bm->queue_actual));
-      
-      if((bi->queue_avgmin>0 || bi->queue_avgmax>0) &&
-	 bi->queue_avg_time>0){
-	
-	bm->avg_binacc=_ogg_calloc(bins,sizeof(*bm->avg_binacc));
-	bm->avgfloat=PACKETBLOBS/2;
-	
-      }else{
-	bm->avg_tail= -1;
-      }
-      
-      if((bi->queue_hardmin>0 || bi->queue_hardmax>0) &&
-	 bi->queue_minmax_time>0){
-	
-	bm->minmax_binstack=_ogg_calloc((bins*2+1)*bins*2,
-					sizeof(*bm->minmax_binstack));
-	bm->minmax_posstack=_ogg_calloc((bins*2+1),
-				      sizeof(*bm->minmax_posstack));
-	bm->minmax_limitstack=_ogg_calloc((bins*2+1),
-					  sizeof(*bm->minmax_limitstack));
-      }else{
-	bm->minmax_tail= -1;
-      }
-      
-      /* space for the packet queueing */
-      bm->packetbuffers=_ogg_calloc(maxpackets,sizeof(*bm->packetbuffers));
-      bm->packets=_ogg_calloc(maxpackets,sizeof(*bm->packets));
-      for(i=0;i<maxpackets;i++)
-	oggpack_writeinit(bm->packetbuffers+i);
-      
-    }else{
-      bm->packetbuffers=_ogg_calloc(1,sizeof(*bm->packetbuffers));
-      bm->packets=_ogg_calloc(1,sizeof(*bm->packets));
-      oggpack_writeinit(bm->packetbuffers);
-
-    }      
-  }
+  return;
 }
 
-void vorbis_bitrate_clear(bitrate_manager_state *bm){
-  int i;
-  if(bm){
-    if(bm->queue_binned)_ogg_free(bm->queue_binned);
-    if(bm->queue_actual)_ogg_free(bm->queue_actual);
-    if(bm->avg_binacc)_ogg_free(bm->avg_binacc);
-    if(bm->minmax_binstack)_ogg_free(bm->minmax_binstack);
-    if(bm->minmax_posstack)_ogg_free(bm->minmax_posstack);
-    if(bm->minmax_limitstack)_ogg_free(bm->minmax_limitstack);
-
-    if(bm->packetbuffers){
-      if(bm->queue_size==0){
-	oggpack_writeclear(bm->packetbuffers);
-      }else{
-	for(i=0;i<bm->queue_size;i++)
-	  oggpack_writeclear(bm->packetbuffers+i);	
-      }
-      _ogg_free(bm->packetbuffers);
-    }
-    if(bm->packets)_ogg_free(bm->packets);
-    
-    memset(bm,0,sizeof(*bm));
-  }
-}
-
 int vorbis_bitrate_managed(vorbis_block *vb){
   vorbis_dsp_state      *vd=vb->vd;
-  backend_lookup_state  *b=vd->backend_state; 
+  private_state         *b=vd->backend_state;
   bitrate_manager_state *bm=&b->bms;
 
-  if(bm->queue_binned)return(1);
+  if(bm && bm->managed)return(1);
   return(0);
 }
 
 /* finish taking in the block we just processed */
 int vorbis_bitrate_addblock(vorbis_block *vb){
-  int i; 
   vorbis_block_internal *vbi=vb->internal;
   vorbis_dsp_state      *vd=vb->vd;
-  backend_lookup_state  *b=vd->backend_state; 
+  private_state         *b=vd->backend_state;
   bitrate_manager_state *bm=&b->bms;
   vorbis_info           *vi=vd->vi;
   codec_setup_info      *ci=vi->codec_setup;
   bitrate_manager_info  *bi=&ci->bi;
-  int                    eofflag=vb->eofflag;
-  int                    head=bm->queue_head;
-  int                    next_head=head+1;
-  int                    bins=bm->queue_bins;
-  int                    minmax_head,new_minmax_head;
-  
-  ogg_uint32_t           *head_ptr;
-  oggpack_buffer          temp;
 
-  if(!bm->queue_binned){
-    oggpack_buffer temp;
+  int  choice=rint(bm->avgfloat);
+  long this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+  long min_target_bits=(vb->W?bm->min_bitsper*bm->short_per_long:bm->min_bitsper);
+  long max_target_bits=(vb->W?bm->max_bitsper*bm->short_per_long:bm->max_bitsper);
+  int  samples=ci->blocksizes[vb->W]>>1;
+  long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
+  if(!bm->managed){
     /* not a bitrate managed stream, but for API simplicity, we'll
-       buffer one packet to keep the code path clean */
-    
-    if(bm->queue_head)return(-1); /* one has been submitted without
-                                     being claimed */
-    bm->queue_head++;
+       buffer the packet to keep the code path clean */
 
-    bm->packets[0].packet=oggpack_get_buffer(&vb->opb);
-    bm->packets[0].bytes=oggpack_bytes(&vb->opb);
-    bm->packets[0].b_o_s=0;
-    bm->packets[0].e_o_s=vb->eofflag;
-    bm->packets[0].granulepos=vb->granulepos;
-    bm->packets[0].packetno=vb->sequence; /* for sake of completeness */
-
-    memcpy(&temp,bm->packetbuffers,sizeof(vb->opb));
-    memcpy(bm->packetbuffers,&vb->opb,sizeof(vb->opb));
-    memcpy(&vb->opb,&temp,sizeof(vb->opb));
-
+    if(bm->vb)return(-1); /* one has been submitted without
+                             being claimed */
+    bm->vb=vb;
     return(0);
   }
 
-  /* add encoded packet to head */
-  if(next_head>=bm->queue_size)next_head=0;
-  head_ptr=bm->queue_binned+bins*head;
+  bm->vb=vb;
 
-  /* is there room to add a block? In proper use of the API, this will
-     never come up... but guard it anyway */
-  if(next_head==bm->avg_tail || next_head==bm->minmax_tail)return(-1);
+  /* look ahead for avg floater */
+  if(bm->avg_bitsper>0){
+    double slew=0.;
+    long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
+    double slewlimit= 15./bi->slew_damp;
 
-  /* add the block to the toplevel queue */
-  bm->queue_head=next_head;
-  bm->queue_actual[head]=(vb->W?0x80000000UL:0);
+    /* choosing a new floater:
+       if we're over target, we slew down
+       if we're under target, we slew up
 
-  /* buffer packet fields */
-  bm->packets[head].packet=oggpack_get_buffer(&vb->opb);
-  bm->packets[head].bytes=oggpack_bytes(&vb->opb);
-  bm->packets[head].b_o_s=0;
-  bm->packets[head].e_o_s=vb->eofflag;
-  bm->packets[head].granulepos=vb->granulepos;
-  bm->packets[head].packetno=vb->sequence; /* for sake of completeness */
+       choose slew as follows: look through packetblobs of this frame
+       and set slew as the first in the appropriate direction that
+       gives us the slew we want.  This may mean no slew if delta is
+       already favorable.
 
-  /* swap packet buffers */
-  memcpy(&temp,bm->packetbuffers+head,sizeof(vb->opb));
-  memcpy(bm->packetbuffers+head,&vb->opb,sizeof(vb->opb));
-  memcpy(&vb->opb,&temp,sizeof(vb->opb));
+       Then limit slew to slew max */
 
-  /* save markers */
-  head_ptr[0]=vbi->packetblob_markers[0];
-  for(i=1;i<PACKETBLOBS;i++){
-    head_ptr[i]=vbi->packetblob_markers[i]-vbi->packetblob_markers[i-1];
+    if(bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
+      while(choice>0 && this_bits>avg_target_bits &&
+            bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
+        choice--;
+        this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }else if(bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
+      while(choice+1<PACKETBLOBS && this_bits<avg_target_bits &&
+            bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
+        choice++;
+        this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }
+
+    slew=rint(choice-bm->avgfloat)/samples*vi->rate;
+    if(slew<-slewlimit)slew=-slewlimit;
+    if(slew>slewlimit)slew=slewlimit;
+    choice=rint(bm->avgfloat+= slew/vi->rate*samples);
+    this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
   }
 
-  if(bm->avg_binacc)
-    new_minmax_head=minmax_head=bm->avg_center;
-  else
-    new_minmax_head=minmax_head=head;
 
-  /* the average tracking queue is updated first; its results (if it's
-     in use) are taken into account by the min/max limiter (if min/max
-     is in use) */
-  if(bm->avg_binacc){
-    unsigned long desired_center=bm->avg_centerdesired;
-    if(eofflag)desired_center=0;
 
-    /* update the avg head */
-    for(i=0;i<bins;i++)
-      bm->avg_binacc[i]+=LACING_ADJUST(head_ptr[i]);
-    bm->avg_sampleacc+=ci->blocksizes[vb->W]>>1;
-    bm->avg_centeracc+=ci->blocksizes[vb->W]>>1;
-
-    if(bm->avg_sampleacc>bm->avg_sampledesired || eofflag){
-
-      /* update the avg center */
-      if(bm->avg_centeracc>desired_center){
-	/* choose the new average floater */
-	int samples=ci->blocksizes[vb->W]>>1;
-	double upper=floater_interpolate(bm,vi,bi->queue_avgmax);
-	double lower=floater_interpolate(bm,vi,bi->queue_avgmin);
-	double new=PACKETBLOBS/2.,slew;
-	int bin;
-	
-	if(upper<new)new=upper;
-	if(lower>new)new=lower;
-	
-	slew=(new-bm->avgfloat)/samples*vi->rate;
-	
-	if(slew<bi->avgfloat_downslew_max)
-	  new=bm->avgfloat+bi->avgfloat_downslew_max/vi->rate*samples;
-	if(slew>bi->avgfloat_upslew_max)
-	  new=bm->avgfloat+bi->avgfloat_upslew_max/vi->rate*samples;
-	
-	bm->avgfloat=new;
-	/* apply the average floater to new blocks */
-	bin=rint(bm->avgfloat);
-
-	/*fprintf(stderr,"%d ",bin);*/
-	
-	while(bm->avg_centeracc>desired_center){
-	  samples=ci->blocksizes[bm->queue_actual[bm->avg_center]&
-				0x80000000UL?1:0]>>1;
-	  
-	  bm->queue_actual[bm->avg_center]|=bin;
-	  
-	  bm->avg_centeracc-=samples;
-	  bm->avg_center++;
-	  if(bm->avg_center>=bm->queue_size)bm->avg_center=0;
-	}
-	new_minmax_head=bm->avg_center;
-	
+  /* enforce min(if used) on the current floater (if used) */
+  if(bm->min_bitsper>0){
+    /* do we need to force the bitrate up? */
+    if(this_bits<min_target_bits){
+      while(bm->minmax_reservoir-(min_target_bits-this_bits)<0){
+        choice++;
+        if(choice>=PACKETBLOBS)break;
+        this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
       }
-      
-      /* update the avg tail if needed */
-      while(bm->avg_sampleacc>bm->avg_sampledesired){
-	int samples=
-	  ci->blocksizes[bm->queue_actual[bm->avg_tail]&0x80000000UL?1:0]>>1;
-	for(i=0;i<bm->queue_bins;i++)
-	  bm->avg_binacc[i]-=LACING_ADJUST(bm->queue_binned[bins*bm->avg_tail+i]);
-	bm->avg_sampleacc-=samples;
-	bm->avg_tail++;
-	if(bm->avg_tail>=bm->queue_size)bm->avg_tail=0;
-      }
-      
-      
     }
-  }else{
-    /* if we're not using an average tracker, the 'float' is nailed to
-       the avgfloat_initial value.  It needs to be set for the min/max
-       to deal properly */
-    long bin=PACKETBLOBS/2;
-    bm->queue_actual[head]|=bin;
-    new_minmax_head=next_head;
-  }	
-  
-  /* update the min/max queues and enforce limits */
-  if(bm->minmax_binstack){
-    unsigned long sampledesired=eofflag?0:bm->minmax_sampledesired;
-    
-    /* add to stack recent */
-    while(minmax_head!=new_minmax_head){
-      unsigned int i;
-      int samples=ci->blocksizes[bm->queue_actual[minmax_head]&
-				0x80000000UL?1:0]>>1;
-      int actual=bm->queue_actual[minmax_head]&0x7fffffffUL;
+  }
 
-      for(i=0;i<(unsigned int)bins;i++){
-	bm->minmax_binstack[bm->minmax_stackptr*bins*2+bins+i]+=
-	  LACING_ADJUST(BINBYTES(bm,minmax_head,
-				actual>i?actual:i));
-	
-	bm->minmax_binstack[bm->minmax_stackptr*bins*2+i]+=
-	  LACING_ADJUST(BINBYTES(bm,minmax_head,
-				actual<i?actual:i));
+  /* enforce max (if used) on the current floater (if used) */
+  if(bm->max_bitsper>0){
+    /* do we need to force the bitrate down? */
+    if(this_bits>max_target_bits){
+      while(bm->minmax_reservoir+(this_bits-max_target_bits)>bi->reservoir_bits){
+        choice--;
+        if(choice<0)break;
+        this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
       }
-      
-      bm->minmax_posstack[bm->minmax_stackptr]=minmax_head; /* not one
-							       past
-							       like
-							       typical */
-      bm->minmax_limitstack[bm->minmax_stackptr]=0;
-      bm->minmax_sampleacc+=samples;
-      bm->minmax_acctotal+=
-	LACING_ADJUST(BINBYTES(bm,minmax_head,actual));
-      
-      minmax_head++;
-      if(minmax_head>=bm->queue_size)minmax_head=0;
-
-
     }
-    
-    /* check limits, enforce changes */
-    if(bm->minmax_sampleacc>sampledesired){
-      double bitrate=(double)(bm->minmax_acctotal*8)/
-	bm->minmax_sampleacc*vi->rate;
-      int limit=0;
-      
-      if((bi->queue_hardmax>0 && bitrate>bi->queue_hardmax) || 
-	 (bi->queue_hardmin>0 && bitrate<bi->queue_hardmin)){
-	int newstack;
-	int stackctr;
-	long bitsum=bm->minmax_acctotal*8;
+  }
 
-	bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
+  /* Choice of packetblobs now made based on floater, and min/max
+     requirements. Now boundary check extreme choices */
 
-	/* we're off rate.  Iteratively try out new hard floater
-           limits until we find one that brings us inside.  Here's
-           where we see the whole point of the limit stacks.  */
-	if(bi->queue_hardmax>0 && bitrate>bi->queue_hardmax){
-	  for(limit=-1;limit>-bins+1;limit--){
-	    long bitsum=limit_sum(bm,limit)*8;
-	    bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
-	    if(bitrate<=bi->queue_hardmax)break;
-	  }
-	}else if(bitrate<bi->queue_hardmin){
-	  for(limit=1;limit<bins-1;limit++){
-	    long bitsum=limit_sum(bm,limit)*8;
-	    bitrate=(double)bitsum/bm->minmax_sampleacc*vi->rate;
-	    if(bitrate>=bi->queue_hardmin)break;
-	  }
-	  if(bitrate>bi->queue_hardmax)limit--;
-	}
+  if(choice<0){
+    /* choosing a smaller packetblob is insufficient to trim bitrate.
+       frame will need to be truncated */
+    long maxsize=(max_target_bits+(bi->reservoir_bits-bm->minmax_reservoir))/8;
+    bm->choice=choice=0;
 
-	/* trace the limit backward, stop when we see a lower limit */
-	newstack=bm->minmax_stackptr-1;
-	while(newstack>=0){
-	  if(bm->minmax_limitstack[newstack]<limit)break;
-	  newstack--;
-	}
-	
-	/* update bit counter with new limit and replace any stack
-           limits that have been replaced by our new lower limit */
-	stackctr=bm->minmax_stackptr;
-	while(stackctr>newstack){
-	  bm->minmax_acctotal-=
-	    LIMITBYTES(stackctr,bm->minmax_limitstack[stackctr]);
-	  bm->minmax_acctotal+=LIMITBYTES(stackctr,limit);
-	  
-	  if(stackctr<bm->minmax_stackptr)
-	    for(i=0;i<bins*2;i++)
-	      bm->minmax_binstack[stackctr*bins*2+i]+=
-		bm->minmax_binstack[(stackctr+1)*bins*2+i];
+    if(oggpack_bytes(vbi->packetblob[choice])>maxsize){
 
-	  stackctr--;
-	}
-	stackctr++;
-	bm->minmax_posstack[stackctr]=bm->minmax_posstack[bm->minmax_stackptr];
-	bm->minmax_limitstack[stackctr]=limit;
-
-	/* set up new blank stack entry */
-	stackctr++;
-	bm->minmax_stackptr=stackctr;
-	memset(&bm->minmax_binstack[stackctr*bins*2],
-	       0,
-	       sizeof(*bm->minmax_binstack)*bins*2);
-	bm->minmax_limitstack[stackctr]=0;
-	bm->minmax_posstack[stackctr]=-1;
-	
-      }
+      oggpack_writetrunc(vbi->packetblob[choice],maxsize*8);
+      this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
     }
-    
-    /* remove from tail */
-    while(bm->minmax_sampleacc>sampledesired){
-      int samples=
-	ci->blocksizes[bm->queue_actual[bm->minmax_tail]&0x80000000UL?1:0]>>1;
-      int actual=bm->queue_actual[bm->minmax_tail]&0x7fffffffUL;
+  }else{
+    long minsize=(min_target_bits-bm->minmax_reservoir+7)/8;
+    if(choice>=PACKETBLOBS)
+      choice=PACKETBLOBS-1;
 
-      for(i=0;i<bins;i++){
-	bm->minmax_binstack[bins+i]-= /* always comes off the stack bottom */
-	  LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,
-				actual>i?
-				actual:i));
-	bm->minmax_binstack[i]-= 
-	  LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,
-				actual<i?
-				actual:i));
-      }
+    bm->choice=choice;
 
-      if(bm->minmax_limitstack[0]>actual)
-	actual=bm->minmax_limitstack[0];
-      if(bins+bm->minmax_limitstack[0]<actual)
-	actual=bins+bm->minmax_limitstack[0];
-      
-      bm->minmax_acctotal-=LACING_ADJUST(BINBYTES(bm,bm->minmax_tail,actual));
-      bm->minmax_sampleacc-=samples;
+    /* prop up bitrate according to demand. pad this frame out with zeroes */
+    minsize-=oggpack_bytes(vbi->packetblob[choice]);
+    while(minsize-->0)oggpack_write(vbi->packetblob[choice],0,8);
+    this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
 
-      /* revise queue_actual to reflect the limit */
-      bm->queue_actual[bm->minmax_tail]&=0x80000000UL;
-      bm->queue_actual[bm->minmax_tail]|=actual;
-      
-      if(bm->minmax_tail==bm->minmax_posstack[0]){
-	/* the stack becomes a FIFO; the first data has fallen off */
-	memmove(bm->minmax_binstack,bm->minmax_binstack+bins*2,
-		sizeof(*bm->minmax_binstack)*bins*2*bm->minmax_stackptr);
-	memmove(bm->minmax_posstack,bm->minmax_posstack+1,
-		sizeof(*bm->minmax_posstack)*bm->minmax_stackptr);
-	memmove(bm->minmax_limitstack,bm->minmax_limitstack+1,
-		sizeof(*bm->minmax_limitstack)*bm->minmax_stackptr);
-	bm->minmax_stackptr--;
-      }
-      
-      bm->minmax_tail++;
-      if(bm->minmax_tail>=bm->queue_size)bm->minmax_tail=0;
+  }
 
+  /* now we have the final packet and the final packet size.  Update statistics */
+  /* min and max reservoir */
+  if(bm->min_bitsper>0 || bm->max_bitsper>0){
+
+    if(max_target_bits>0 && this_bits>max_target_bits){
+      bm->minmax_reservoir+=(this_bits-max_target_bits);
+    }else if(min_target_bits>0 && this_bits<min_target_bits){
+      bm->minmax_reservoir+=(this_bits-min_target_bits);
+    }else{
+      /* inbetween; we want to take reservoir toward but not past desired_fill */
+      if(bm->minmax_reservoir>desired_fill){
+        if(max_target_bits>0){ /* logical bulletproofing against initialization state */
+          bm->minmax_reservoir+=(this_bits-max_target_bits);
+          if(bm->minmax_reservoir<desired_fill)bm->minmax_reservoir=desired_fill;
+        }else{
+          bm->minmax_reservoir=desired_fill;
+        }
+      }else{
+        if(min_target_bits>0){ /* logical bulletproofing against initialization state */
+          bm->minmax_reservoir+=(this_bits-min_target_bits);
+          if(bm->minmax_reservoir>desired_fill)bm->minmax_reservoir=desired_fill;
+        }else{
+          bm->minmax_reservoir=desired_fill;
+        }
+      }
     }
-    
-    
-    bm->last_to_flush=bm->minmax_tail;
-  }else{
-    bm->last_to_flush=bm->avg_center;
   }
-  if(eofflag)
-    bm->last_to_flush=bm->queue_head;
+
+  /* avg reservoir */
+  if(bm->avg_bitsper>0){
+    long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
+    bm->avg_reservoir+=this_bits-avg_target_bits;
+  }
+
   return(0);
 }
 
 int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,ogg_packet *op){
-  backend_lookup_state  *b=vd->backend_state;
+  private_state         *b=vd->backend_state;
   bitrate_manager_state *bm=&b->bms;
+  vorbis_block          *vb=bm->vb;
+  int                    choice=PACKETBLOBS/2;
+  if(!vb)return 0;
 
-  if(bm->queue_size==0){
-    if(bm->queue_head==0)return(0);
+  if(op){
+    vorbis_block_internal *vbi=vb->internal;
 
-    memcpy(op,bm->packets,sizeof(*op));
-    bm->queue_head=0;
+    if(vorbis_bitrate_managed(vb))
+      choice=bm->choice;
 
-  }else{
-
-    if(bm->next_to_flush==bm->last_to_flush)return(0);
-
-    {
-      long bin=bm->queue_actual[bm->next_to_flush]&0x7fffffff,i;
-      long bins=bm->queue_bins;
-      ogg_uint32_t *markers=bm->queue_binned+bins*bm->next_to_flush;
-      long bytes=markers[bin];
-
-      memcpy(op,bm->packets+bm->next_to_flush,sizeof(*op));
-
-      /* we have [PACKETBLOBS] possible packets all squished together in
-	 the buffer, in sequence.  count in to number [bin] */
-      for(i=0;i<bin;i++)
-	op->packet+=markers[i];
-      op->bytes=bytes;
-	
-    }
-
-    bm->next_to_flush++;
-    if(bm->next_to_flush>=bm->queue_size)bm->next_to_flush=0;
-
+    op->packet=oggpack_get_buffer(vbi->packetblob[choice]);
+    op->bytes=oggpack_bytes(vbi->packetblob[choice]);
+    op->b_o_s=0;
+    op->e_o_s=vb->eofflag;
+    op->granulepos=vb->granulepos;
+    op->packetno=vb->sequence; /* for sake of completeness */
   }
 
+  bm->vb=0;
   return(1);
 }
--- a/sys/src/cmd/audio/libvorbis/bitrate.h
+++ b/sys/src/cmd/audio/libvorbis/bitrate.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: bitrate tracking and management
- last mod: $Id: bitrate.h,v 1.7 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: bitrate.h 13293 2007-07-24 00:09:47Z xiphmont $
 
  ********************************************************************/
 
@@ -24,54 +24,29 @@
 
 /* encode side bitrate tracking */
 typedef struct bitrate_manager_state {
-  ogg_uint32_t  *queue_binned;
-  ogg_uint32_t  *queue_actual;
-  int            queue_size;
+  int            managed;
 
-  int            queue_head;
-  int            queue_bins;
+  long           avg_reservoir;
+  long           minmax_reservoir;
+  long           avg_bitsper;
+  long           min_bitsper;
+  long           max_bitsper;
 
-  long          *avg_binacc;
-  int            avg_center;
-  int            avg_tail;
-  ogg_uint32_t   avg_centeracc;
-  ogg_uint32_t   avg_sampleacc;
-  ogg_uint32_t   avg_sampledesired;
-  ogg_uint32_t   avg_centerdesired;
-
-  long          *minmax_binstack;
-  long          *minmax_posstack;
-  long          *minmax_limitstack;
-  long           minmax_stackptr;
-
-  long           minmax_acctotal;
-  int            minmax_tail;
-  ogg_uint32_t   minmax_sampleacc;
-  ogg_uint32_t   minmax_sampledesired;
-
-  int            next_to_flush;
-  int            last_to_flush;
-  
+  long           short_per_long;
   double         avgfloat;
 
-  /* unfortunately, we need to hold queued packet data somewhere */
-  oggpack_buffer *packetbuffers;
-  ogg_packet     *packets;
-
+  vorbis_block  *vb;
+  int            choice;
 } bitrate_manager_state;
 
 typedef struct bitrate_manager_info{
-  /* detailed bitrate management setup */
-  double queue_avg_time;
-  double queue_avg_center;
-  double queue_minmax_time;
-  double queue_hardmin;
-  double queue_hardmax;
-  double queue_avgmin;
-  double queue_avgmax;
+  long           avg_rate;
+  long           min_rate;
+  long           max_rate;
+  long           reservoir_bits;
+  double         reservoir_bias;
 
-  double avgfloat_downslew_max;
-  double avgfloat_upslew_max;
+  double         slew_damp;
 
 } bitrate_manager_info;
 
--- a/sys/src/cmd/audio/libvorbis/block.c
+++ b/sys/src/cmd/audio/libvorbis/block.c
@@ -5,17 +5,17 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: PCM data vector blocking, windowing and dis/reassembly
- last mod: $Id: block.c,v 1.67 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: block.c 19457 2015-03-03 00:15:29Z giles $
 
  Handle windowing, overlap-add, etc of the PCM vectors.  This is made
  more amusing by Vorbis' current two allowed block sizes.
- 
+
  ********************************************************************/
 
 #include <stdio.h>
@@ -31,16 +31,6 @@
 #include "registry.h"
 #include "misc.h"
 
-static int ilog2(unsigned int v){
-  int ret=0;
-  if(v)--v;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
-
 /* pcm accumulator examples (not exhaustive):
 
  <-------------- lW ---------------->
@@ -50,33 +40,33 @@
 :.....'''         |_____--- '''......|       | \_______|
 :.................|__________________|_______|__|______|
                   |<------ Sl ------>|      > Sr <     |endW
-                  |beginSl           |endSl  |  |endSr   
+                  |beginSl           |endSl  |  |endSr
                   |beginW            |endlW  |beginSr
 
 
-                      |< lW >|       
+                      |< lW >|
                    <--------------- W ---------------->
                   |   |  ..  ______________            |
                   |   | '  `/        |     ---_        |
-                  |___.'___/`.       |         ---_____| 
+                  |___.'___/`.       |         ---_____|
                   |_______|__|_______|_________________|
                   |      >|Sl|<      |<------ Sr ----->|endW
                   |       |  |endSl  |beginSr          |endSr
-                  |beginW |  |endlW                     
+                  |beginW |  |endlW
                   mult[0] |beginSl                     mult[n]
 
  <-------------- lW ----------------->
-                          |<--W-->|                               
-:            ..............  ___  |   |                    
-:        .'''             |`/   \ |   |                       
-:.....'''                 |/`....\|...|                    
-:.........................|___|___|___|                  
-                          |Sl |Sr |endW    
+                          |<--W-->|
+:            ..............  ___  |   |
+:        .'''             |`/   \ |   |
+:.....'''                 |/`....\|...|
+:.........................|___|___|___|
+                          |Sl |Sr |endW
                           |   |   |endSr
                           |   |beginSr
                           |   |endSl
-			  |beginSl
-			  |beginW
+                          |beginSl
+                          |beginW
 */
 
 /* block abstraction setup *********************************************/
@@ -86,6 +76,7 @@
 #endif
 
 int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){
+  int i;
   memset(vb,0,sizeof(*vb));
   vb->vd=v;
   vb->localalloc=0;
@@ -93,10 +84,19 @@
   if(v->analysisp){
     vorbis_block_internal *vbi=
       vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal));
-    oggpack_writeinit(&vb->opb);
     vbi->ampmax=-9999;
+
+    for(i=0;i<PACKETBLOBS;i++){
+      if(i==PACKETBLOBS/2){
+        vbi->packetblob[i]=&vb->opb;
+      }else{
+        vbi->packetblob[i]=
+          _ogg_calloc(1,sizeof(oggpack_buffer));
+      }
+      oggpack_writeinit(vbi->packetblob[i]);
+    }
   }
-  
+
   return(0);
 }
 
@@ -147,15 +147,19 @@
 }
 
 int vorbis_block_clear(vorbis_block *vb){
-  if(vb->vd)
-    if(vb->vd->analysisp)
-      oggpack_writeclear(&vb->opb);
+  int i;
+  vorbis_block_internal *vbi=vb->internal;
+
   _vorbis_block_ripcord(vb);
   if(vb->localstore)_ogg_free(vb->localstore);
 
-  if(vb->internal)
-    _ogg_free(vb->internal);
-
+  if(vbi){
+    for(i=0;i<PACKETBLOBS;i++){
+      oggpack_writeclear(vbi->packetblob[i]);
+      if(i!=PACKETBLOBS/2)_ogg_free(vbi->packetblob[i]);
+    }
+    _ogg_free(vbi);
+  }
   memset(vb,0,sizeof(*vb));
   return(0);
 }
@@ -167,13 +171,22 @@
 static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
   int i;
   codec_setup_info *ci=vi->codec_setup;
-  backend_lookup_state *b=NULL;
+  private_state *b=NULL;
+  int hs;
 
+  if(ci==NULL||
+     ci->modes<=0||
+     ci->blocksizes[0]<64||
+     ci->blocksizes[1]<ci->blocksizes[0]){
+    return 1;
+  }
+  hs=ci->halfrate_flag;
+
   memset(v,0,sizeof(*v));
   b=v->backend_state=_ogg_calloc(1,sizeof(*b));
 
   v->vi=vi;
-  b->modebits=ilog2(ci->modes);
+  b->modebits=ov_ilog(ci->modes-1);
 
   b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0]));
   b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1]));
@@ -182,12 +195,18 @@
 
   b->transform[0][0]=_ogg_calloc(1,sizeof(mdct_lookup));
   b->transform[1][0]=_ogg_calloc(1,sizeof(mdct_lookup));
-  mdct_init(b->transform[0][0],ci->blocksizes[0]);
-  mdct_init(b->transform[1][0],ci->blocksizes[1]);
+  mdct_init(b->transform[0][0],ci->blocksizes[0]>>hs);
+  mdct_init(b->transform[1][0],ci->blocksizes[1]>>hs);
 
   /* Vorbis I uses only window type 0 */
-  b->window[0]=_vorbis_window(0,ci->blocksizes[0]/2);
-  b->window[1]=_vorbis_window(0,ci->blocksizes[1]/2);
+  /* note that the correct computation below is technically:
+       b->window[0]=ov_ilog(ci->blocksizes[0]-1)-6;
+       b->window[1]=ov_ilog(ci->blocksizes[1]-1)-6;
+    but since blocksizes are always powers of two,
+    the below is equivalent.
+   */
+  b->window[0]=ov_ilog(ci->blocksizes[0])-7;
+  b->window[1]=ov_ilog(ci->blocksizes[1])-7;
 
   if(encp){ /* encode/decode differ here */
 
@@ -199,16 +218,16 @@
     if(!ci->fullbooks){
       ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
       for(i=0;i<ci->books;i++)
-	vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]);
+        vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]);
     }
 
     b->psy=_ogg_calloc(ci->psys,sizeof(*b->psy));
     for(i=0;i<ci->psys;i++){
       _vp_psy_init(b->psy+i,
-		   ci->psy_param[i],
-		   &ci->psy_g_param,
-		   ci->blocksizes[ci->psy_param[i]->blockflag]/2,
-		   vi->rate);
+                   ci->psy_param[i],
+                   &ci->psy_g_param,
+                   ci->blocksizes[ci->psy_param[i]->blockflag]/2,
+                   vi->rate);
     }
 
     v->analysisp=1;
@@ -217,10 +236,13 @@
     if(!ci->fullbooks){
       ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
       for(i=0;i<ci->books;i++){
-	vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]);
-	/* decode codebooks are now standalone after init */
-	vorbis_staticbook_destroy(ci->book_param[i]);
-	ci->book_param[i]=NULL;
+        if(ci->book_param[i]==NULL)
+          goto abort_books;
+        if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]))
+          goto abort_books;
+        /* decode codebooks are now standalone after init */
+        vorbis_staticbook_destroy(ci->book_param[i]);
+        ci->book_param[i]=NULL;
       }
     }
   }
@@ -256,16 +278,25 @@
 
   for(i=0;i<ci->residues;i++)
     b->residue[i]=_residue_P[ci->residue_type[i]]->
-      look(v,ci->residue_param[i]);    
+      look(v,ci->residue_param[i]);
 
-  return(0);
+  return 0;
+ abort_books:
+  for(i=0;i<ci->books;i++){
+    if(ci->book_param[i]!=NULL){
+      vorbis_staticbook_destroy(ci->book_param[i]);
+      ci->book_param[i]=NULL;
+    }
+  }
+  vorbis_dsp_clear(v);
+  return -1;
 }
 
 /* arbitrary settings and spec-mandated numbers get filled in here */
 int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
-  backend_lookup_state *b=NULL;
+  private_state *b=NULL;
 
-  _vds_shared_init(v,vi,1);
+  if(_vds_shared_init(v,vi,1))return 1;
   b=v->backend_state;
   b->psy_g_look=_vp_global_look(vi);
 
@@ -275,6 +306,10 @@
 
   vorbis_bitrate_init(vi,&b->bms);
 
+  /* compressed audio packets start after the headers
+     with sequence number 3 */
+  v->sequence=3;
+
   return(0);
 }
 
@@ -283,46 +318,45 @@
   if(v){
     vorbis_info *vi=v->vi;
     codec_setup_info *ci=(vi?vi->codec_setup:NULL);
-    backend_lookup_state *b=v->backend_state;
+    private_state *b=v->backend_state;
 
     if(b){
-      if(b->window[0])
-	_ogg_free(b->window[0]);
-      if(b->window[1])
-	_ogg_free(b->window[1]);
-	
+
       if(b->ve){
-	_ve_envelope_clear(b->ve);
-	_ogg_free(b->ve);
+        _ve_envelope_clear(b->ve);
+        _ogg_free(b->ve);
       }
 
       if(b->transform[0]){
-	mdct_clear(b->transform[0][0]);
-	_ogg_free(b->transform[0][0]);
-	_ogg_free(b->transform[0]);
+        mdct_clear(b->transform[0][0]);
+        _ogg_free(b->transform[0][0]);
+        _ogg_free(b->transform[0]);
       }
       if(b->transform[1]){
-	mdct_clear(b->transform[1][0]);
-	_ogg_free(b->transform[1][0]);
-	_ogg_free(b->transform[1]);
+        mdct_clear(b->transform[1][0]);
+        _ogg_free(b->transform[1][0]);
+        _ogg_free(b->transform[1]);
       }
 
       if(b->flr){
-	for(i=0;i<ci->floors;i++)
-	  _floor_P[ci->floor_type[i]]->
-	    free_look(b->flr[i]);
-	_ogg_free(b->flr);
+        if(ci)
+          for(i=0;i<ci->floors;i++)
+            _floor_P[ci->floor_type[i]]->
+              free_look(b->flr[i]);
+        _ogg_free(b->flr);
       }
       if(b->residue){
-	for(i=0;i<ci->residues;i++)
-	  _residue_P[ci->residue_type[i]]->
-	    free_look(b->residue[i]);
-	_ogg_free(b->residue);
+        if(ci)
+          for(i=0;i<ci->residues;i++)
+            _residue_P[ci->residue_type[i]]->
+              free_look(b->residue[i]);
+        _ogg_free(b->residue);
       }
       if(b->psy){
-	for(i=0;i<ci->psys;i++)
-	  _vp_psy_clear(b->psy+i);
-	_ogg_free(b->psy);
+        if(ci)
+          for(i=0;i<ci->psys;i++)
+            _vp_psy_clear(b->psy+i);
+        _ogg_free(b->psy);
       }
 
       if(b->psy_g_look)_vp_global_free(b->psy_g_look);
@@ -332,10 +366,11 @@
       drft_clear(&b->fft_look[1]);
 
     }
-    
+
     if(v->pcm){
-      for(i=0;i<vi->channels;i++)
-	if(v->pcm[i])_ogg_free(v->pcm[i]);
+      if(vi)
+        for(i=0;i<vi->channels;i++)
+          if(v->pcm[i])_ogg_free(v->pcm[i]);
       _ogg_free(v->pcm);
       if(v->pcmret)_ogg_free(v->pcmret);
     }
@@ -347,7 +382,7 @@
       if(b->header2)_ogg_free(b->header2);
       _ogg_free(b);
     }
-    
+
     memset(v,0,sizeof(*v));
   }
 }
@@ -355,7 +390,7 @@
 float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
   int i;
   vorbis_info *vi=v->vi;
-  backend_lookup_state *b=v->backend_state;
+  private_state *b=v->backend_state;
 
   /* free header, header1, header2 */
   if(b->header)_ogg_free(b->header);b->header=NULL;
@@ -364,10 +399,10 @@
 
   /* Do we have enough storage space for the requested buffer? If not,
      expand the PCM (and envelope) storage */
-    
+
   if(v->pcm_current+vals>=v->pcm_storage){
     v->pcm_storage=v->pcm_current+vals*2;
-   
+
     for(i=0;i<vi->channels;i++){
       v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(*v->pcm[i]));
     }
@@ -375,13 +410,13 @@
 
   for(i=0;i<vi->channels;i++)
     v->pcmret[i]=v->pcm[i]+v->pcm_current;
-    
+
   return(v->pcmret);
 }
 
 static void _preextrapolate_helper(vorbis_dsp_state *v){
   int i;
-  int order=32;
+  int order=16;
   float *lpc=malloc(order*sizeof(*lpc));
   float *work=malloc(v->pcm_current*sizeof(*work));
   long j;
@@ -391,25 +426,35 @@
     for(i=0;i<v->vi->channels;i++){
       /* need to run the extrapolation in reverse! */
       for(j=0;j<v->pcm_current;j++)
-	work[j]=v->pcm[i][v->pcm_current-j-1];
-      
+        work[j]=v->pcm[i][v->pcm_current-j-1];
+
       /* prime as above */
       vorbis_lpc_from_data(work,lpc,v->pcm_current-v->centerW,order);
-      
+
+#if 0
+      if(v->vi->channels==2){
+        if(i==0)
+          _analysis_output("predataL",0,work,v->pcm_current-v->centerW,0,0,0);
+        else
+          _analysis_output("predataR",0,work,v->pcm_current-v->centerW,0,0,0);
+      }else{
+        _analysis_output("predata",0,work,v->pcm_current-v->centerW,0,0,0);
+      }
+#endif
+
       /* run the predictor filter */
       vorbis_lpc_predict(lpc,work+v->pcm_current-v->centerW-order,
-			 order,
-			 work+v->pcm_current-v->centerW,
-			 v->centerW);
+                         order,
+                         work+v->pcm_current-v->centerW,
+                         v->centerW);
 
       for(j=0;j<v->pcm_current;j++)
-	v->pcm[i][v->pcm_current-j-1]=work[j];
+        v->pcm[i][v->pcm_current-j-1]=work[j];
 
     }
   }
   free(work);
   free(lpc);
-  return;
 }
 
 
@@ -418,7 +463,6 @@
 int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
   vorbis_info *vi=v->vi;
   codec_setup_info *ci=vi->codec_setup;
-  /*backend_lookup_state *b=v->backend_state;*/
 
   if(vals<=0){
     int order=32;
@@ -435,29 +479,29 @@
        amplitude off a cliff, creating spread spectrum noise that will
        suck to encode.  Extrapolate for the sake of cleanliness. */
 
-    vorbis_analysis_buffer(v,ci->blocksizes[1]*3); 
+    vorbis_analysis_buffer(v,ci->blocksizes[1]*3);
     v->eofflag=v->pcm_current;
     v->pcm_current+=ci->blocksizes[1]*3;
 
     for(i=0;i<vi->channels;i++){
       if(v->eofflag>order*2){
-	/* extrapolate with LPC to fill in */
-	long n;
+        /* extrapolate with LPC to fill in */
+        long n;
 
-	/* make a predictor filter */
-	n=v->eofflag;
-	if(n>ci->blocksizes[1])n=ci->blocksizes[1];
-	vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order);
+        /* make a predictor filter */
+        n=v->eofflag;
+        if(n>ci->blocksizes[1])n=ci->blocksizes[1];
+        vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order);
 
-	/* run the predictor filter */
-	vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order,
-			   v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag);
+        /* run the predictor filter */
+        vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order,
+                           v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag);
       }else{
-	/* not enough data to extrapolate (unlikely to happen due to
+        /* not enough data to extrapolate (unlikely to happen due to
            guarding the overlap, but bulletproof in case that
            assumtion goes away). zeroes will do. */
-	memset(v->pcm[i]+v->eofflag,0,
-	       (v->pcm_current-v->eofflag)*sizeof(*v->pcm[i]));
+        memset(v->pcm[i]+v->eofflag,0,
+               (v->pcm_current-v->eofflag)*sizeof(*v->pcm[i]));
 
       }
     }
@@ -464,9 +508,9 @@
     free(lpc);
   }else{
 
-    if(v->pcm_current+vals>v->pcm_storage) {
+    if(v->pcm_current+vals>v->pcm_storage)
       return(OV_EINVAL);
-    }
+
     v->pcm_current+=vals;
 
     /* we may want to reverse extrapolate the beginning of a stream
@@ -485,9 +529,8 @@
   int i;
   vorbis_info *vi=v->vi;
   codec_setup_info *ci=vi->codec_setup;
-  backend_lookup_state *b=v->backend_state;
+  private_state *b=v->backend_state;
   vorbis_look_psy_global *g=b->psy_g_look;
-  vorbis_info_psy_global *gi=&ci->psy_g_param;
   long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
   vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
 
@@ -504,20 +547,19 @@
   /* we do an envelope search even on a single blocksize; we may still
      be throwing more bits at impulses, and envelope search handles
      marking impulses too. */
-  {  
+  {
     long bp=_ve_envelope_search(v);
-
     if(bp==-1){
 
-      if(v->eofflag==0) return(0); /* not enough data currently to search for a
-				     full long block */
+      if(v->eofflag==0)return(0); /* not enough data currently to search for a
+                                     full long block */
       v->nW=0;
     }else{
 
       if(ci->blocksizes[0]==ci->blocksizes[1])
-	v->nW=0;
+        v->nW=0;
       else
-	v->nW=bp;
+        v->nW=bp;
     }
   }
 
@@ -537,7 +579,7 @@
 
 
   }
-  
+
   /* fill in the block.  Note that for a short window, lW and nW are *short*
      regardless of actual settings in the stream */
 
@@ -549,28 +591,28 @@
   if(v->W){
     if(!v->lW || !v->nW){
       vbi->blocktype=BLOCKTYPE_TRANSITION;
-      fprintf(stderr,"-");
+      /*fprintf(stderr,"-");*/
     }else{
       vbi->blocktype=BLOCKTYPE_LONG;
-      fprintf(stderr,"_");
+      /*fprintf(stderr,"_");*/
     }
   }else{
     if(_ve_envelope_mark(v)){
       vbi->blocktype=BLOCKTYPE_IMPULSE;
-      fprintf(stderr,"|");
+      /*fprintf(stderr,"|");*/
 
     }else{
       vbi->blocktype=BLOCKTYPE_PADDING;
-      fprintf(stderr,".");
+      /*fprintf(stderr,".");*/
 
     }
   }
- 
+
   vb->vd=v;
   vb->sequence=v->sequence++;
   vb->granulepos=v->granulepos;
   vb->pcmend=ci->blocksizes[v->W];
-  
+
   /* copy the vectors; this uses the local storage in vb */
 
   /* this tracks 'strongest peak' for later psychoacoustics */
@@ -578,7 +620,7 @@
   if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax;
   g->ampmax=_vp_ampmax_decay(g->ampmax,v);
   vbi->ampmax=g->ampmax;
-  
+
   vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
   vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels);
   for(i=0;i<vi->channels;i++){
@@ -586,14 +628,14 @@
       _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
     memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
     vb->pcm[i]=vbi->pcmdelay[i]+beginW;
-    
-    /* before we added the delay 
+
+    /* before we added the delay
        vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
        memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i]));
     */
-    
+
   }
-  
+
   /* handle eof detection: eof==0 means that we've not yet received EOF
                            eof>0  marks the last 'real' sample in pcm[]
                            eof<0  'no more to do'; doesn't get here */
@@ -615,27 +657,27 @@
 
       _ve_envelope_shift(b->ve,movementW);
       v->pcm_current-=movementW;
-      
+
       for(i=0;i<vi->channels;i++)
-	memmove(v->pcm[i],v->pcm[i]+movementW,
-		v->pcm_current*sizeof(*v->pcm[i]));
-      
-      
+        memmove(v->pcm[i],v->pcm[i]+movementW,
+                v->pcm_current*sizeof(*v->pcm[i]));
+
+
       v->lW=v->W;
       v->W=v->nW;
       v->centerW=new_centerNext;
-      
+
       if(v->eofflag){
-	v->eofflag-=movementW;
-	if(v->eofflag<=0)v->eofflag=-1;
-	/* do not add padding to end of stream! */
-	if(v->centerW>=v->eofflag){
-	  v->granulepos+=movementW-(v->centerW-v->eofflag);
-	}else{
-	  v->granulepos+=movementW;
-	}
+        v->eofflag-=movementW;
+        if(v->eofflag<=0)v->eofflag=-1;
+        /* do not add padding to end of stream! */
+        if(v->centerW>=v->eofflag){
+          v->granulepos+=movementW-(v->centerW-v->eofflag);
+        }else{
+          v->granulepos+=movementW;
+        }
       }else{
-	v->granulepos+=movementW;
+        v->granulepos+=movementW;
       }
     }
   }
@@ -644,16 +686,38 @@
   return(1);
 }
 
-int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
-  _vds_shared_init(v,vi,0);
+int vorbis_synthesis_restart(vorbis_dsp_state *v){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci;
+  int hs;
 
+  if(!v->backend_state)return -1;
+  if(!vi)return -1;
+  ci=vi->codec_setup;
+  if(!ci)return -1;
+  hs=ci->halfrate_flag;
+
+  v->centerW=ci->blocksizes[1]>>(hs+1);
+  v->pcm_current=v->centerW>>hs;
+
   v->pcm_returned=-1;
   v->granulepos=-1;
   v->sequence=-1;
+  v->eofflag=0;
+  ((private_state *)(v->backend_state))->sample_count=-1;
 
   return(0);
 }
 
+int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
+  if(_vds_shared_init(v,vi,0)){
+    vorbis_dsp_clear(v);
+    return 1;
+  }
+  vorbis_synthesis_restart(v);
+  return 0;
+}
+
 /* Unlike in analysis, the window is only partially applied for each
    block.  The time domain envelope is not yet handled at the point of
    calling (as it relies on the previous block). */
@@ -661,99 +725,107 @@
 int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
   vorbis_info *vi=v->vi;
   codec_setup_info *ci=vi->codec_setup;
+  private_state *b=v->backend_state;
+  int hs=ci->halfrate_flag;
   int i,j;
 
   if(!vb)return(OV_EINVAL);
   if(v->pcm_current>v->pcm_returned  && v->pcm_returned!=-1)return(OV_EINVAL);
-    
+
   v->lW=v->W;
   v->W=vb->W;
   v->nW=-1;
-  
-  if(v->sequence+1 != vb->sequence)v->granulepos=-1; /* out of sequence;
-							lose count */
+
+  if((v->sequence==-1)||
+     (v->sequence+1 != vb->sequence)){
+    v->granulepos=-1; /* out of sequence; lose count */
+    b->sample_count=-1;
+  }
+
   v->sequence=vb->sequence;
-  
-  if(vb->pcm){  /* not pcm to process if vorbis_synthesis_trackonly 
-		   was called on block */
-    int n=ci->blocksizes[v->W]/2;
-    int n0=ci->blocksizes[0]/2;
-    int n1=ci->blocksizes[1]/2;
-    
+
+  if(vb->pcm){  /* no pcm to process if vorbis_synthesis_trackonly
+                   was called on block */
+    int n=ci->blocksizes[v->W]>>(hs+1);
+    int n0=ci->blocksizes[0]>>(hs+1);
+    int n1=ci->blocksizes[1]>>(hs+1);
+
     int thisCenter;
     int prevCenter;
-    
+
     v->glue_bits+=vb->glue_bits;
     v->time_bits+=vb->time_bits;
     v->floor_bits+=vb->floor_bits;
     v->res_bits+=vb->res_bits;
-    
+
     if(v->centerW){
       thisCenter=n1;
       prevCenter=0;
     }else{
-	thisCenter=0;
-	prevCenter=n1;
+      thisCenter=0;
+      prevCenter=n1;
     }
-    
+
     /* v->pcm is now used like a two-stage double buffer.  We don't want
        to have to constantly shift *or* adjust memory usage.  Don't
        accept a new block until the old is shifted out */
-    
-    /* overlap/add PCM */
-    
+
     for(j=0;j<vi->channels;j++){
       /* the overlap/add section */
       if(v->lW){
-	if(v->W){
-	  /* large/large */
-	  float *pcm=v->pcm[j]+prevCenter;
-	  float *p=vb->pcm[j];
-	  for(i=0;i<n1;i++)
-	    pcm[i]+=p[i];
-	}else{
-	  /* large/small */
-	  float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
-	  float *p=vb->pcm[j];
-	  for(i=0;i<n0;i++)
-	    pcm[i]+=p[i];
-	}
+        if(v->W){
+          /* large/large */
+          const float *w=_vorbis_window_get(b->window[1]-hs);
+          float *pcm=v->pcm[j]+prevCenter;
+          float *p=vb->pcm[j];
+          for(i=0;i<n1;i++)
+            pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i];
+        }else{
+          /* large/small */
+          const float *w=_vorbis_window_get(b->window[0]-hs);
+          float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
+          float *p=vb->pcm[j];
+          for(i=0;i<n0;i++)
+            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+        }
       }else{
-	if(v->W){
-	  /* small/large */
-	  float *pcm=v->pcm[j]+prevCenter;
-	  float *p=vb->pcm[j]+n1/2-n0/2;
-	  for(i=0;i<n0;i++)
-	    pcm[i]+=p[i];
-	  for(;i<n1/2+n0/2;i++)
-	    pcm[i]=p[i];
-	}else{
-	  /* small/small */
-	  float *pcm=v->pcm[j]+prevCenter;
-	  float *p=vb->pcm[j];
-	  for(i=0;i<n0;i++)
-	    pcm[i]+=p[i];
-	}
+        if(v->W){
+          /* small/large */
+          const float *w=_vorbis_window_get(b->window[0]-hs);
+          float *pcm=v->pcm[j]+prevCenter;
+          float *p=vb->pcm[j]+n1/2-n0/2;
+          for(i=0;i<n0;i++)
+            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+          for(;i<n1/2+n0/2;i++)
+            pcm[i]=p[i];
+        }else{
+          /* small/small */
+          const float *w=_vorbis_window_get(b->window[0]-hs);
+          float *pcm=v->pcm[j]+prevCenter;
+          float *p=vb->pcm[j];
+          for(i=0;i<n0;i++)
+            pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+        }
       }
-      
+
       /* the copy section */
       {
-	float *pcm=v->pcm[j]+thisCenter;
-	float *p=vb->pcm[j]+n;
-	for(i=0;i<n;i++)
-	  pcm[i]=p[i];
+        float *pcm=v->pcm[j]+thisCenter;
+        float *p=vb->pcm[j]+n;
+        for(i=0;i<n;i++)
+          pcm[i]=p[i];
       }
     }
-    
+
     if(v->centerW)
       v->centerW=0;
     else
       v->centerW=n1;
-    
+
     /* deal with initial packet state; we do this using the explicit
        pcm_returned==-1 flag otherwise we're sensitive to first block
        being short or long */
-    
+
     if(v->pcm_returned==-1){
       v->pcm_returned=thisCenter;
       v->pcm_current=thisCenter;
@@ -760,10 +832,10 @@
     }else{
       v->pcm_returned=prevCenter;
       v->pcm_current=prevCenter+
-	ci->blocksizes[v->lW]/4+
-	ci->blocksizes[v->W]/4;
+        ((ci->blocksizes[v->lW]/4+
+        ci->blocksizes[v->W]/4)>>hs);
     }
-    
+
   }
 
   /* track the frame number... This is for convenience, but also
@@ -770,59 +842,110 @@
      making sure our last packet doesn't end with added padding.  If
      the last packet is partial, the number of samples we'll have to
      return will be past the vb->granulepos.
-     
+
      This is not foolproof!  It will be confused if we begin
      decoding at the last page after a seek or hole.  In that case,
      we don't have a starting point to judge where the last frame
      is.  For this reason, vorbisfile will always try to make sure
      it reads the last two marked pages in proper sequence */
-  
+
+  if(b->sample_count==-1){
+    b->sample_count=0;
+  }else{
+    b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
+  }
+
   if(v->granulepos==-1){
     if(vb->granulepos!=-1){ /* only set if we have a position to set to */
+
       v->granulepos=vb->granulepos;
+
+      /* is this a short page? */
+      if(b->sample_count>v->granulepos){
+        /* corner case; if this is both the first and last audio page,
+           then spec says the end is cut, not beginning */
+       long extra=b->sample_count-vb->granulepos;
+
+        /* we use ogg_int64_t for granule positions because a
+           uint64 isn't universally available.  Unfortunately,
+           that means granposes can be 'negative' and result in
+           extra being negative */
+        if(extra<0)
+          extra=0;
+
+        if(vb->eofflag){
+          /* trim the end */
+          /* no preceding granulepos; assume we started at zero (we'd
+             have to in a short single-page stream) */
+          /* granulepos could be -1 due to a seek, but that would result
+             in a long count, not short count */
+
+          /* Guard against corrupt/malicious frames that set EOP and
+             a backdated granpos; don't rewind more samples than we
+             actually have */
+          if(extra > (v->pcm_current - v->pcm_returned)<<hs)
+            extra = (v->pcm_current - v->pcm_returned)<<hs;
+
+          v->pcm_current-=extra>>hs;
+        }else{
+          /* trim the beginning */
+          v->pcm_returned+=extra>>hs;
+          if(v->pcm_returned>v->pcm_current)
+            v->pcm_returned=v->pcm_current;
+        }
+
+      }
+
     }
   }else{
     v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
     if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
-      
+
       if(v->granulepos>vb->granulepos){
-	long extra=v->granulepos-vb->granulepos;
-	
-	if(vb->eofflag){
-	  /* partial last frame.  Strip the extra samples off */
-	  v->pcm_current-=extra;
-	}else if(vb->sequence == 1){
-	  /* ^^^ argh, this can be 1 from seeking! */
-	  
-	  
-	  /* partial first frame.  Discard extra leading samples */
-	  v->pcm_returned+=extra;
-	  if(v->pcm_returned>v->pcm_current)
-	    v->pcm_returned=v->pcm_current;
-	  
-	} /* else {Shouldn't happen *unless* the bitstream is out of
-	     spec.  Either way, believe the bitstream } */
+        long extra=v->granulepos-vb->granulepos;
+
+        if(extra)
+          if(vb->eofflag){
+            /* partial last frame.  Strip the extra samples off */
+
+            /* Guard against corrupt/malicious frames that set EOP and
+               a backdated granpos; don't rewind more samples than we
+               actually have */
+            if(extra > (v->pcm_current - v->pcm_returned)<<hs)
+              extra = (v->pcm_current - v->pcm_returned)<<hs;
+
+            /* we use ogg_int64_t for granule positions because a
+               uint64 isn't universally available.  Unfortunately,
+               that means granposes can be 'negative' and result in
+               extra being negative */
+            if(extra<0)
+              extra=0;
+
+            v->pcm_current-=extra>>hs;
+          } /* else {Shouldn't happen *unless* the bitstream is out of
+               spec.  Either way, believe the bitstream } */
       } /* else {Shouldn't happen *unless* the bitstream is out of
-	   spec.  Either way, believe the bitstream } */
+           spec.  Either way, believe the bitstream } */
       v->granulepos=vb->granulepos;
     }
   }
-  
+
   /* Update, cleanup */
-  
+
   if(vb->eofflag)v->eofflag=1;
   return(0);
-  
+
 }
 
 /* pcm==NULL indicates we just want the pending samples, no more */
 int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm){
   vorbis_info *vi=v->vi;
+
   if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){
     if(pcm){
       int i;
       for(i=0;i<vi->channels;i++)
-	v->pcmret[i]=v->pcm[i]+v->pcm_returned;
+        v->pcmret[i]=v->pcm[i]+v->pcm_returned;
       *pcm=v->pcmret;
     }
     return(v->pcm_current-v->pcm_returned);
@@ -836,3 +959,92 @@
   return(0);
 }
 
+/* intended for use with a specific vorbisfile feature; we want access
+   to the [usually synthetic/postextrapolated] buffer and lapping at
+   the end of a decode cycle, specifically, a half-short-block worth.
+   This funtion works like pcmout above, except it will also expose
+   this implicit buffer data not normally decoded. */
+int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  int hs=ci->halfrate_flag;
+
+  int n=ci->blocksizes[v->W]>>(hs+1);
+  int n0=ci->blocksizes[0]>>(hs+1);
+  int n1=ci->blocksizes[1]>>(hs+1);
+  int i,j;
+
+  if(v->pcm_returned<0)return 0;
+
+  /* our returned data ends at pcm_returned; because the synthesis pcm
+     buffer is a two-fragment ring, that means our data block may be
+     fragmented by buffering, wrapping or a short block not filling
+     out a buffer.  To simplify things, we unfragment if it's at all
+     possibly needed. Otherwise, we'd need to call lapout more than
+     once as well as hold additional dsp state.  Opt for
+     simplicity. */
+
+  /* centerW was advanced by blockin; it would be the center of the
+     *next* block */
+  if(v->centerW==n1){
+    /* the data buffer wraps; swap the halves */
+    /* slow, sure, small */
+    for(j=0;j<vi->channels;j++){
+      float *p=v->pcm[j];
+      for(i=0;i<n1;i++){
+        float temp=p[i];
+        p[i]=p[i+n1];
+        p[i+n1]=temp;
+      }
+    }
+
+    v->pcm_current-=n1;
+    v->pcm_returned-=n1;
+    v->centerW=0;
+  }
+
+  /* solidify buffer into contiguous space */
+  if((v->lW^v->W)==1){
+    /* long/short or short/long */
+    for(j=0;j<vi->channels;j++){
+      float *s=v->pcm[j];
+      float *d=v->pcm[j]+(n1-n0)/2;
+      for(i=(n1+n0)/2-1;i>=0;--i)
+        d[i]=s[i];
+    }
+    v->pcm_returned+=(n1-n0)/2;
+    v->pcm_current+=(n1-n0)/2;
+  }else{
+    if(v->lW==0){
+      /* short/short */
+      for(j=0;j<vi->channels;j++){
+        float *s=v->pcm[j];
+        float *d=v->pcm[j]+n1-n0;
+        for(i=n0-1;i>=0;--i)
+          d[i]=s[i];
+      }
+      v->pcm_returned+=n1-n0;
+      v->pcm_current+=n1-n0;
+    }
+  }
+
+  if(pcm){
+    int i;
+    for(i=0;i<vi->channels;i++)
+      v->pcmret[i]=v->pcm[i]+v->pcm_returned;
+    *pcm=v->pcmret;
+  }
+
+  return(n1+n-v->pcm_returned);
+
+}
+
+const float *vorbis_window(vorbis_dsp_state *v,int W){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  int hs=ci->halfrate_flag;
+  private_state *b=v->backend_state;
+
+  if(b->window[W]-1<0)return NULL;
+  return _vorbis_window_get(b->window[W]-hs);
+}
--- /dev/null
+++ b/sys/src/cmd/audio/libvorbis/books/coupled/res_books_51.h
@@ -1,0 +1,12274 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+ *
+ * function: static codebooks for 5.1 surround
+ * last modified: $Id: res_books_51.h 19057 2014-01-22 12:32:31Z xiphmont $
+ *
+ ********************************************************************/
+
+static const long _vq_quantlist__44p0_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p0_l0_0[] = {
+	 1, 3, 4, 7, 7, 8, 8, 9, 9, 9,10,10,10, 5, 6, 5,
+	 8, 7, 9, 8, 9, 9,10, 9,11,10, 5, 5, 7, 7, 8, 8,
+	 9, 9, 9, 9,10,10,11, 8, 9, 8,10, 9,10, 9,10, 9,
+	11,10,11,10, 8, 8, 9, 9,10, 9,10, 9,11,10,11,10,
+	11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,
+	11,11,12,11,11,11,11,11,11,10,12,12,12,12,12,12,
+	12,11,12,12,12,11,11,11,12,12,12,12,12,12,12,11,
+	12,11,12,11,11,13,12,12,12,13,12,12,12,12,11,12,
+	11,11,13,13,13,12,12,12,12,12,12,11,11,11,10,13,
+	13,13,12,13,12,13,11,13,10,12,11,11,13,13,12,13,
+	12,12,12,12,11,12,11,11,11,
+};
+
+static const static_codebook _44p0_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p0_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p0_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p0_l0_1[] = {
+	 1, 4, 4, 6, 6, 5, 5, 5, 7, 5, 5, 5, 5, 6, 7, 7,
+	 6, 7, 7, 7, 6, 7, 7, 7, 7,
+};
+
+static const static_codebook _44p0_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p0_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p0_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p0_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p0_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p0_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p0_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p0_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p0_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p0_long[] = {
+	 2, 3, 6, 7,10,14,16, 3, 2, 5, 7,11,14,17, 6, 5,
+	 5, 7,10,12,14, 7, 7, 6, 6, 7, 9,13,10,11, 9, 6,
+	 6, 9,11,15,15,13,10, 9,10,12,18,18,16,14,12,13,
+	16,
+};
+
+static const static_codebook _huff_book__44p0_long = {
+	2, 49,
+	(char *)_huff_lengthlist__44p0_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p0_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p0_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p0_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p2_0[] = {
+	 1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
+	 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11,
+	11, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,12,12,
+	 0,15,15, 0,12,12, 0, 5, 5, 0, 5, 5, 0, 6, 6, 0,
+	 7, 7, 0,11,11, 0, 6, 6, 0, 7, 7, 0,10,11, 0, 6,
+	 6, 0, 7, 7, 0,11,11, 0,12,12, 0,11,11, 0,15,15,
+	 0,10,10, 0,12,12, 0,15,15, 0,12,12, 0, 6, 6, 0,
+	12,12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,12,
+	12, 0,15,15, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 8, 8, 0,12,12, 0,12,12, 0,12,12, 0,15,
+	15, 0,12,12, 0,11,12, 0,15,16, 0,11,11, 0, 6, 6,
+	 0,11,12, 0,12,12, 0,12,12, 0,16,15, 0,12,12, 0,
+	13,12, 0,15,14, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p0_p2_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p2_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p0_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p2_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p2_1[] = {
+	 1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,
+	10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7,
+	 7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 9,
+	 0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 9, 9, 0, 8, 8, 0,
+	10,10, 0, 9, 9, 0,10,10, 0,10,10, 0, 9, 9, 0,10,
+	10, 0, 9, 9, 0,11,11, 0,11,11, 0,12,12, 0,11,11,
+	 0,12,12, 0,13,13, 0,12,12, 0,13,12, 0, 8, 8, 0,
+	12,12, 0,12,12, 0,13,13, 0,12,12, 0,13,13, 0,13,
+	13, 0,13,13, 0,13,13, 0, 7, 7, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0,11,11, 0,12,12, 0,13,13, 0,12,
+	12, 0,13,13, 0,13,13, 0,12,12, 0,12,12, 0, 8, 8,
+	 0,12,12, 0,12,12, 0,13,13, 0,13,13, 0,13,14, 0,
+	14,13, 0,13,13, 0,13,13, 0, 7, 7, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p0_p2_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p2_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p0_p2_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p3_0[] = {
+	 1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,12,11, 9,
+	 8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11,
+	11,10,11,11,10,11,11,13,13,14,12,12,12,11,11,11,
+	14,14,14,12,12,12, 6, 5, 5, 9, 6, 5, 9, 6, 6, 9,
+	 7, 7,12,10,10,11, 6, 6,10, 7, 7,13,10,10,12, 7,
+	 7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
+	13, 9, 9,12,11,11,16,13,13,15,11,11, 8, 7, 7,12,
+	12,12,12,11,11,12,11,11,14,14,14,14,12,12,12,12,
+	12,16,15,15,14,12,12, 0,10,10, 0,12,12, 0,12,12,
+	 0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
+	11,11, 8, 8, 8,13,11,11,13,10,10,13,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,14,10,10, 9, 7, 7,
+	13,11,11,13,11,11,12,11,11,16,14,14,14,12,12,13,
+	12,12,15,14,14,15,13,12, 0,11,11, 0,12,12, 0,12,
+	12, 0,12,12, 0,15,15, 0,12,12, 0,13,12, 0,14,15,
+	 0,12,12,
+};
+
+static const static_codebook _44p0_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p3_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p0_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p3_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p0_p3_1[] = {
+	 2, 4, 4, 8, 8,10,12,12,11,11, 9,11,11,12,13,11,
+	12,12,11,11,11,12,12,12,12,10,13,12,13,13,11,12,
+	12,13,13,11,12,12,13,13,11,12,13,13,13,11,13,13,
+	13,13,10,13,13,12,13,11,12,12,14,14,11,13,12,12,
+	12,11,12,12,13,13,11,13,13,12,12,11,13,13,13,13,
+	11,12,12,13,13,11,13,13,12,12,11,12,12,13,13,11,
+	13,13,12,12,11,13,13,13,13,11,12,12,14,14,11,13,
+	13,12,12,11,12,12,13,13,11,13,13,12,12,11,10,10,
+	10,10,12,10,10,11,11,11, 8, 8,11,11,13,10,10,10,
+	10,12,10,10,10,10,13,11,11,11,11,13,10,10,11,11,
+	13,11,11,12,12,13,11,11,11,11,13,11,11,12,12,13,
+	11,11,12,12,13,10,10,11,11,13,11,11,11,11,13,11,
+	10,11,11,13,11,11,11,11,13,11,11,11,11,13,10,10,
+	11,11,13,11,11,11,11,12,10,11,11,11,13,11,11,11,
+	11,13,11,11,11,11,13,10,10,11,11,13,11,11,11,11,
+	13,11,11,11,11,13,11,11,11,11,11,10,10,10,10,12,
+	10,10, 9, 9,12,12,12,11,11,13,12,12, 9, 9,13,12,
+	12,10,10,12,12,12,12,12,13,13,13,14,14,13,12,12,
+	11,11,13,13,13,12,12,13,12,12,11,11,13,12,13,11,
+	11,13,13,13,14,14,13,12,12,10,10,13,13,13,11,11,
+	13,12,12,10,10,13,13,13,11,11,13,13,13,14,14,13,
+	12,12,10,10,13,13,13,11,11,13,12,13,10,10,13,13,
+	13,11,11,13,13,13,14,14,13,12,12,10,10,13,13,13,
+	11,11,13,13,12,10,10,14,12,12, 8, 8,14,12,12, 9,
+	 9,14,11,11, 9, 9,14,12,12, 8, 8,14,11,11, 7, 7,
+	14,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
+	12,12, 9, 9,15,13,13,10,10,15,13,13,10,10,15,12,
+	12,10,10,15,13,13,10,10,14,12,12, 9, 9,14,13,13,
+	 9, 9,14,13,13, 9, 9,15,12,12, 9, 9,15,13,13, 9,
+	 9,14,12,12, 9, 9,14,13,13, 9, 9,14,13,13, 9, 9,
+	15,12,12, 9, 9,14,13,13, 9, 9,14,12,12, 9, 9,14,
+	13,13, 9, 9,13,12,12, 8, 8,13,13,13, 8, 8,14,13,
+	13, 9, 9,13,13,13, 7, 7,14,13,13, 8, 8,14,14,14,
+	10,10,14,14,14,11,11,14,14,14, 9, 9,14,14,14,10,
+	10,14,14,14, 9, 9,14,14,14,10, 9,15,14,14,11,11,
+	14,14,14, 9, 9,14,14,14,10,10,14,14,14, 9, 9,14,
+	14,14, 9, 9,15,14,14,11,11,14,14,14, 8, 8,14,14,
+	14, 9, 9,14,14,14, 8, 8,14,14,14, 9, 9,15,14,14,
+	11,11,14,14,14, 8, 8,14,14,14, 9, 9,14,14,14, 8,
+	 8,12,12,12,13,13,16,15,15,11,11,16,15,16,12,12,
+	17,16,16,11,11,17,15,15,12,11,16,16,16,12,13,16,
+	15,15,13,13,16,16,16,12,12,16,16,15,13,13,16,16,
+	16,12,12,16,16,16,13,13,17,16,16,14,14,17,17,16,
+	12,12,17,16,16,13,13,17,17,16,12,13,16,16,17,13,
+	12,17,16,16,14,13,17,16,16,12,12,17,16,16,12,12,
+	17,16,17,12,12,17,17,17,13,13,16,16,16,13,14,17,
+	17,16,12,12,16,16,16,13,13,17,17,17,12,12,13,14,
+	14,10,10,16,14,14,12,12,16,15,15,14,14,16,14,14,
+	12,12,15,14,14,13,13,17,15,15,14,13,16,16,15,15,
+	15,16,15,15,14,14,16,15,15,14,14,17,15,15,14,14,
+	16,15,15,14,14,16,16,15,15,15,17,15,15,13,13,16,
+	15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,15,
+	15,15,15,16,14,14,13,13,16,15,15,14,14,16,14,14,
+	13,13,17,15,15,14,14,16,16,15,15,15,17,14,14,13,
+	13,16,15,15,14,14,17,14,14,13,13,13,11,11,10,10,
+	16,14,14,13,13,15,14,14,13,13,16,14,14,12,12,16,
+	14,14,12,12,15,15,15,14,14,16,14,14,14,14,16,15,
+	14,14,14,16,14,14,14,14,16,15,15,14,13,16,15,15,
+	14,14,16,14,14,14,14,17,15,15,14,14,16,14,14,14,
+	14,16,15,15,13,14,16,15,15,14,14,16,14,14,14,14,
+	16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,
+	15,15,14,14,16,14,14,14,14,17,15,15,13,13,16,15,
+	14,13,13,17,15,15,13,13,14,14,14, 9, 9,14,14,14,
+	17,17,14,15,15,18,18,14,14,14,18,19,14,14,14,18,
+	18,15,15,15,19,18,15,16,15,18,20,15,15,15,18,19,
+	15,15,15,19,19,15,15,15,18,20,15,15,15,18,19,15,
+	15,16,20,18,15,15,15,18,18,15,15,15,19,19,15,15,
+	15,18,19,15,15,15,18,19,15,15,15,19,19,14,15,14,
+	19,19,15,15,15,20,19,15,14,14,19,18,14,15,15,18,
+	19,15,15,16,20,20,14,14,14,18,19,15,15,15,19,18,
+	14,14,14,18,18,14,12,12, 9, 9,13,14,14,18,18,14,
+	13,13,18,19,14,14,14,18,18,14,14,14,18,18,15,15,
+	15,19,19,15,14,14,19,18,14,15,15,19,18,15,14,14,
+	18,18,15,15,15,19,18,14,15,15,19,19,15,14,14,19,
+	18,14,15,15,19,18,15,14,14,19,18,14,15,15,19,18,
+	15,15,15,21,18,15,14,14,19,18,14,15,15,18,19,14,
+	15,14,20,19,14,15,15,18,19,14,15,15,19,19,15,14,
+	14,19,20,14,15,15,18,18,14,14,14,19,19,14,15,15,
+	19,18,12,12,12,13,13,16,15,15,11,11,16,15,15,12,
+	12,16,16,16,11,11,16,15,15,11,11,16,16,16,13,13,
+	17,16,16,13,13,17,17,17,12,12,16,16,16,13,13,17,
+	16,17,13,12,15,16,16,12,12,16,15,15,13,13,17,16,
+	16,12,12,16,16,15,12,12,16,16,16,12,12,17,17,16,
+	13,12,16,16,16,13,13,17,16,16,12,12,17,16,16,12,
+	12,17,17,16,12,12,16,17,16,12,12,17,15,15,13,13,
+	17,16,16,12,12,16,16,16,12,12,16,16,16,12,12,13,
+	13,13, 9, 9,15,14,14,13,13,16,15,14,14,14,16,14,
+	14,13,13,15,14,14,13,13,17,15,15,14,14,16,15,15,
+	15,15,16,15,15,14,14,16,15,15,15,15,17,15,15,14,
+	14,16,15,15,14,14,16,15,15,15,15,17,14,15,14,14,
+	16,15,15,14,14,17,15,15,13,14,17,15,15,14,14,16,
+	15,15,15,15,17,14,14,13,13,16,15,15,14,14,17,14,
+	14,13,13,17,15,15,14,14,16,15,16,15,15,17,14,14,
+	13,13,16,15,15,14,14,18,14,14,13,13,13,11,11,11,
+	11,15,14,14,12,12,15,14,14,13,13,16,14,14,12,12,
+	16,13,14,12,12,16,15,15,13,13,16,14,14,14,14,16,
+	15,15,13,13,16,14,14,13,13,16,14,15,13,13,15,15,
+	15,13,13,16,14,14,14,13,16,14,14,13,13,16,14,14,
+	13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,14,
+	14,16,15,15,12,12,16,14,14,13,13,16,15,15,12,12,
+	16,15,15,13,13,16,14,14,14,14,17,15,14,12,12,16,
+	14,14,13,13,16,15,15,12,12,14,14,14, 8, 8,14,14,
+	14,17,18,14,15,15,17,18,14,14,14,17,18,14,14,14,
+	18,18,14,15,15,18,18,14,16,15,19,19,15,15,15,18,
+	19,15,16,15,20,19,15,15,15,18,18,14,15,15,18,19,
+	15,16,16,20,19,15,15,15,19,17,14,15,15,20,18,14,
+	15,15,18,18,14,15,15,18,19,14,15,15,19,20,14,14,
+	14,18,18,14,15,15,18,19,14,14,14,18,19,14,15,15,
+	19,18,15,16,16,20,21,14,14,15,19,19,14,15,15,19,
+	19,14,14,14,19,18,13,12,12, 9, 9,13,14,14,18,19,
+	14,14,14,18,19,14,14,14,18,18,14,14,14,18,18,14,
+	15,15,19,19,15,14,14,19,18,15,15,15,19,19,15,14,
+	14,19,20,14,15,15,18,19,14,15,15,20,18,15,14,14,
+	18,18,14,15,15,18,18,14,14,14,19,19,14,15,15,18,
+	18,14,15,15,19,18,15,14,14,19,19,14,15,15,19,18,
+	15,14,14,19,18,14,14,15,18,19,14,15,15,19,18,15,
+	14,14,18,19,14,15,14,19,20,14,14,14,19,19,14,15,
+	15,19,19,12,12,12,13,13,16,16,16,11,11,16,16,16,
+	12,12,17,16,16,11,11,17,15,15,11,11,16,16,16,13,
+	13,17,15,16,13,13,16,16,16,12,12,17,16,16,13,13,
+	17,17,16,12,12,17,17,16,13,13,17,16,16,13,13,17,
+	17,17,12,12,17,16,16,13,13,17,17,17,12,12,16,16,
+	16,12,12,17,15,15,13,13,17,16,16,11,11,17,16,16,
+	12,12,16,16,16,11,11,16,17,16,12,12,17,16,16,13,
+	13,17,17,16,12,12,17,17,16,12,12,17,16,16,11,11,
+	13,14,14, 9, 9,16,14,14,13,13,16,14,15,14,14,16,
+	14,14,12,12,16,14,14,13,13,17,15,15,14,14,16,15,
+	15,15,15,17,15,15,14,14,16,15,15,14,14,17,15,15,
+	14,14,16,15,15,14,14,16,15,15,15,16,17,14,15,14,
+	14,16,15,15,14,14,17,15,15,14,14,16,15,15,14,14,
+	16,15,15,15,15,17,14,14,13,13,16,15,15,14,14,16,
+	14,14,13,13,17,15,15,14,14,16,16,15,15,15,17,14,
+	14,13,13,16,15,15,14,14,17,14,14,13,13,13,11,11,
+	10,10,16,14,14,12,12,15,13,13,13,12,16,14,14,11,
+	11,16,14,14,11,11,16,14,15,13,14,16,14,14,13,13,
+	16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,
+	15,15,13,13,17,14,14,14,14,17,15,15,13,13,16,14,
+	15,13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,
+	13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,
+	12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,
+	17,14,14,12,12,16,15,15,12,12,13,14,14, 8, 8,13,
+	14,14,18,18,13,15,15,17,18,14,14,14,18,19,14,14,
+	14,19,18,14,15,15,19,18,15,15,16,21,18,15,15,15,
+	19,19,14,16,16,19,19,14,15,15,18,19,14,15,15,19,
+	20,14,16,16,19,18,15,15,15,18,19,14,15,15,19,18,
+	15,15,15,18,18,15,15,15,20,18,15,16,16,20,19,14,
+	15,14,18,19,14,15,16,19,20,14,15,15,19,18,15,15,
+	15,19,18,15,16,16,20,19,15,14,14,18,18,14,15,15,
+	19,19,14,15,15,18,18,13,12,12, 8, 8,13,14,14,19,
+	18,14,13,13,20,18,14,14,14,19,18,14,13,13,18,19,
+	14,15,15,20,19,15,14,14,19,19,14,15,15,19,18,15,
+	14,14,20,20,15,15,15,19,18,14,15,15,19,18,15,14,
+	14,19,18,14,15,15,20,19,14,14,14,20,19,14,15,15,
+	19,18,15,15,15,18,18,15,14,14,18,18,14,15,15,19,
+	19,14,14,14,19,19,14,15,15,19,19,15,15,15,19,18,
+	15,14,14,20,19,15,15,15,19,19,14,14,14,20,19,14,
+	15,15,20,20,12,12,12,13,13,17,16,16,11,11,16,16,
+	15,12,12,17,16,16,11,11,17,15,15,11,11,17,17,17,
+	13,13,17,16,16,13,13,17,17,17,12,12,17,16,16,13,
+	13,17,17,16,12,13,16,17,16,13,13,17,16,15,13,13,
+	17,16,16,12,12,17,16,16,12,13,17,16,17,12,12,17,
+	17,17,12,12,17,16,15,13,13,17,16,16,12,12,17,16,
+	16,12,12,17,16,16,11,11,16,16,16,12,12,17,15,15,
+	13,13,17,16,15,11,11,16,16,16,12,12,17,16,16,11,
+	11,13,14,14, 9, 9,16,14,14,13,13,16,14,15,14,14,
+	16,14,14,12,12,16,14,14,13,13,17,15,15,14,15,16,
+	15,15,15,15,17,15,15,14,14,16,15,15,15,14,16,15,
+	15,14,14,16,15,15,14,14,16,15,16,15,15,17,15,14,
+	14,14,16,15,15,14,14,17,15,15,13,13,16,15,15,14,
+	14,16,16,16,15,15,17,14,14,13,13,16,15,15,14,14,
+	18,14,15,13,13,16,15,15,14,14,16,16,15,15,15,16,
+	14,14,13,13,16,15,15,14,14,17,14,15,13,13,13,11,
+	11,10,10,15,14,14,12,12,15,14,14,13,13,16,14,14,
+	12,12,16,13,14,12,12,16,14,15,14,13,16,14,14,14,
+	14,16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,
+	15,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,
+	14,14,13,13,16,15,15,13,13,16,15,15,13,13,16,14,
+	14,13,13,17,15,15,12,12,16,14,14,12,12,16,14,15,
+	12,12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,
+	12,16,14,14,12,12,16,15,15,12,12,14,14,14, 8, 8,
+	14,14,14,17,17,14,15,15,18,18,14,14,14,18,17,14,
+	14,14,18,18,14,15,15,18,20,15,16,15,19,18,15,15,
+	15,19,18,15,15,16,19,18,15,15,15,18,18,14,15,15,
+	18,18,15,16,16,18,19,15,15,15,18,18,15,15,15,19,
+	20,15,15,15,18,18,15,15,15,18,18,15,16,16,19,19,
+	15,14,15,19,19,15,15,15,19,20,14,14,15,18,18,15,
+	15,15,19,19,15,16,16,19,19,15,15,14,18,19,15,15,
+	15,20,20,15,15,14,18,18,13,12,12, 8, 8,13,14,14,
+	18,18,14,14,14,18,18,14,14,14,18,20,14,14,14,18,
+	18,14,15,15,19,18,15,14,14,18,19,15,15,15,18,19,
+	15,14,14,18,19,15,15,15,18,18,14,15,14,18,19,15,
+	14,14,21,19,15,15,15,19,18,14,14,14,19,18,14,15,
+	15,19,18,15,15,15,20,19,15,14,14,20,18,14,15,15,
+	18,19,14,14,14,19,18,14,15,15,18,19,15,15,15,18,
+	19,15,14,14,19,19,15,15,15,19,19,14,14,14,19,20,
+	14,15,15,18,19,
+};
+
+static const static_codebook _44p0_p3_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p0_p3_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p0_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p0_p4_0[] = {
+	 2, 6, 6,14,14, 6, 8, 8,14,14, 7, 7, 7,14,14, 0,
+	13,13,15,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10,
+	10,16,16, 9, 8, 8,14,15, 0,13,13,17,17, 0,13,13,
+	16,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,14,
+	14, 0,13,13,17,17, 0,13,13,15,15, 0,14,14,16,16,
+	 0, 0, 0,18,19, 0,12,12,16,15, 0,16,16, 0,20, 0,
+	14,14,16,16, 0,14,14,17,17, 0, 0, 0,19,19, 0,12,
+	12,15,15, 0,18,17,21,21, 0,14,14,16,16, 5, 7, 7,
+	12,13, 9,10, 9,14,14,11,10,10,14,14, 0, 0, 0,18,
+	17, 0,20,21,18,18, 9,10,10,14,14,12,12,12,17,16,
+	12,10,10,14,14, 0,20,20,18,17, 0,21,21,17,17,11,
+	10,10,14,14,15,13,13,18,18,13,11,11,14,14, 0,20,
+	 0,18,18, 0,20,21,18,17, 0,21, 0,18,19, 0, 0, 0,
+	 0,21, 0,21,20,16,17, 0, 0, 0,21,21, 0, 0, 0,20,
+	18, 0,20, 0,17,18, 0, 0, 0, 0, 0, 0, 0,20,16,17,
+	 0, 0, 0,20, 0, 0, 0, 0,18,18, 6, 6, 6,13,13, 8,
+	 5, 5,11,11, 9, 6, 6,13,13, 0, 9, 9,12,12, 0,10,
+	10,14,14, 9, 7, 7,13,13,12, 9, 9,13,13,10, 6, 6,
+	13,13, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
+	13,13,10,10,13,13,11, 6, 6,13,13, 0,10,10,15,15,
+	 0,10,10,13,13, 0,12,11,15,15, 0,20,19,17,16, 0,
+	 9, 9,13,13, 0,13,13,20,19, 0,11,11,13,13, 0,11,
+	11,15,15, 0,20,19,17,17, 0,10,10,13,13, 0,14,15,
+	 0,21, 0,12,12,13,13, 0,10,10,12,12, 0,11,11,15,
+	15, 0,11,11,15,15, 0,15,15,20,20, 0,16,16, 0, 0,
+	 0,11,11,15,15, 0,14,14,17,17, 0,11,11,15,15, 0,
+	15,15,20,21, 0,16,16,21,21, 0,12,12,15,15, 0,15,
+	15,18,20, 0,11,11,16,15, 0,15,15,21,21, 0,16,16,
+	 0,21, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0,14,14,21,
+	21, 0,17,18, 0, 0, 0,16,17,20, 0, 0,16,16, 0, 0,
+	 0, 0, 0, 0, 0, 0,15,15,20,20, 0,19,18, 0,21, 0,
+	18,17, 0, 0, 0,10,10,11,11, 0,10,10,10,10, 0,11,
+	11,12,12, 0,11,11, 9, 9, 0,13,13,12,12, 0,11,11,
+	12,12, 0,13,13,12,12, 0,10,10,12,12, 0,12,12,13,
+	13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
+	 0,10,10,12,12, 0,13,13,13,13, 0,12,12,12,12, 0,
+	14,13,13,13, 0,19,21,15,15, 0,12,11,12,12, 0,16,
+	15,19,19, 0,13,13,11,11, 0,13,13,13,13, 0, 0,21,
+	15,16, 0,12,12,12,12, 0,16,16,19,21, 0,13,13,12,
+	12, 7, 7, 7,16,16,11, 9, 9,16,16,12, 9, 9,16,16,
+	 0,13,13,16,16, 0,14,14,17,16,11, 9, 9,16,16,14,
+	12,11,17,17,13, 8, 9,15,15, 0,13,13,19,19, 0,13,
+	13,16,15,12,10,10,17,17,15,12,12,19,18,14, 9, 9,
+	17,16, 0,14,14,18, 0, 0,14,13,16,16, 0,14,15,18,
+	17, 0,21, 0,19,21, 0,12,12,16,16, 0,16,16, 0, 0,
+	 0,14,14,16,16, 0,14,14,18,18, 0, 0,21,20, 0, 0,
+	13,13,16,17, 0,18,18, 0, 0, 0,15,14,17,16, 8, 7,
+	 7,14,14,11,10,10,15,15,13,10,10,15,15, 0,21,20,
+	19,19, 0,21, 0,17,18,11,10,10,15,16,14,12,12,18,
+	18,14,11,11,15,14, 0,21,20,18,19, 0, 0,21,18,18,
+	12,11,11,16,16,16,14,14,18,20,14,11,11,16,15, 0,
+	20,20,19,19, 0, 0,20,18,18, 0,21, 0,18,19, 0, 0,
+	 0, 0, 0, 0,20,20,17,18, 0, 0, 0,20,20, 0, 0, 0,
+	19,19, 0, 0, 0,20,18, 0, 0, 0, 0, 0, 0, 0,21,18,
+	18, 0,21,21, 0,21, 0, 0, 0,19,20,11, 9, 9,14,14,
+	13,10,10,14,14,13,11,11,15,15, 0,13,13,13,13, 0,
+	14,14,16,16,13,11,11,15,15,16,12,12,15,15,14,10,
+	10,14,14, 0,14,14,16,16, 0,14,14,15,15,13,10,10,
+	15,15,17,13,14,15,16,15,10,10,15,15, 0,14,14,17,
+	16, 0,14,14,15,15, 0,15,15,17,17, 0, 0,21,18,18,
+	 0,13,13,15,15, 0,16,16,21,20, 0,14,14,15,14, 0,
+	15,14,16,17, 0, 0,20,20,19, 0,13,13,15,15, 0,19,
+	18, 0, 0, 0,15,15,15,15, 0,11,11,14,14, 0,12,12,
+	16,16, 0,12,12,16,16, 0,15,16,21,21, 0,16,17,21,
+	 0, 0,12,12,17,16, 0,14,14,18,19, 0,11,11,16,16,
+	 0,15,15,20,21, 0,16,16,21, 0, 0,12,12,17,16, 0,
+	15,15,19,19, 0,12,12,16,17, 0,16,15, 0, 0, 0,16,
+	16, 0, 0, 0,17,17, 0,21, 0, 0, 0, 0, 0, 0,14,15,
+	20, 0, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,17,16, 0,
+	 0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,18,18, 0, 0,
+	 0,18,17, 0, 0, 0,11,11,14,14, 0,12,12,15,15, 0,
+	12,12,15,15, 0,13,13,14,14, 0,14,14,17,17, 0,12,
+	12,16,16, 0,14,14,16,16, 0,11,11,15,15, 0,13,13,
+	16,17, 0,13,13,16,16, 0,12,12,15,15, 0,14,14,17,
+	16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,16,16,
+	 0,15,15,17,18, 0,21,20,20,21, 0,12,12,15,15, 0,
+	16,16,20,21, 0,14,14,15,15, 0,14,14,17,17, 0, 0,
+	 0,18,19, 0,12,13,15,15, 0,18,17,21, 0, 0,14,15,
+	15,15, 8, 8, 8,16,16,12,10,10,16,16,13, 9, 9,16,
+	16, 0,14,14,18,17, 0,14,14,16,17,12,10,10,18,17,
+	14,12,11,18,18,14, 9, 9,16,16, 0,13,13,18,18, 0,
+	13,13,17,16,12, 9, 9,16,17,17,13,13,17,17,14, 9,
+	 9,15,15, 0,14,14,20,19, 0,13,13,16,16, 0,15,15,
+	19,18, 0, 0, 0,20,19, 0,12,13,17,17, 0,16,16,20,
+	 0, 0,14,14,16,17, 0,14,14,19,18, 0, 0, 0,20,20,
+	 0,13,13,16,16, 0,18,17, 0, 0, 0,15,15,16,16, 9,
+	 7, 7,14,14,12,10,10,15,15,13,10,10,15,15, 0,21,
+	 0,18,19, 0,20,21,19,18,12,10,10,16,15,15,13,13,
+	18,18,14,11,11,15,15, 0, 0, 0,19,18, 0, 0,21,18,
+	18,13,11,11,15,15,16,14,14,17,19,15,11,11,15,15,
+	 0,21,21,20,18, 0, 0,21,18,18, 0, 0,21,21,19, 0,
+	 0, 0, 0, 0, 0,19,20,18,17, 0, 0, 0,21,21, 0,21,
+	 0,20,18, 0, 0,21,19,19, 0, 0, 0, 0, 0, 0,20,21,
+	17,17, 0, 0, 0, 0, 0, 0,21, 0,18,20, 0,10,10,14,
+	14, 0,11,11,15,15, 0,11,11,15,15, 0,14,14,15,15,
+	 0,15,15,16,16, 0,11,12,16,16, 0,13,13,16,16, 0,
+	11,11,15,15, 0,14,14,17,17, 0,14,14,15,15, 0,11,
+	11,16,15, 0,14,14,15,15, 0,11,11,15,15, 0,15,15,
+	17,17, 0,14,14,15,15, 0,16,16,18,18, 0, 0, 0,20,
+	19, 0,14,13,16,15, 0,17,17,21, 0, 0,15,15,15,15,
+	 0,16,15,17,16, 0,20, 0,20,18, 0,13,14,15,15, 0,
+	19,18, 0,21, 0,15,15,15,15, 0,11,11,14,14, 0,12,
+	12,16,16, 0,12,12,16,16, 0,16,15,20,21, 0,17,16,
+	 0, 0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,
+	16, 0,15,15,21,20, 0,16,16, 0, 0, 0,12,12,16,17,
+	 0,15,14,19,19, 0,11,12,16,16, 0,15,15,21, 0, 0,
+	16,16, 0, 0, 0,16,17, 0, 0, 0, 0, 0, 0, 0, 0,15,
+	15,21, 0, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,17,16,
+	 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0,20, 0,19,20, 0,
+	 0, 0,17,17, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
+	 0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
+	13,13,17,16, 0,14,14,17,17, 0,11,11,16,16, 0,14,
+	14,17,17, 0,13,13,16,16, 0,12,12,16,16, 0,15,15,
+	16,17, 0,11,11,15,16, 0,14,14,17,17, 0,13,14,16,
+	16, 0,15,15,18,18, 0,21,20,20,19, 0,13,13,16,17,
+	 0,16,16, 0, 0, 0,14,14,16,16, 0,15,15,18,18, 0,
+	 0, 0,20,19, 0,13,13,16,16, 0,17,17, 0, 0, 0,14,
+	14,16,16, 0,11,11,16,16, 0,13,13,18,17, 0,13,13,
+	17,17, 0,16,16,17,17, 0,16,16,17,18, 0,12,12,17,
+	17, 0,15,15,18,18, 0,12,12,16,16, 0,16,16,19,19,
+	 0,15,15,16,17, 0,12,12,17,17, 0,17,17,18,18, 0,
+	12,12,17,17, 0,16,16,19,19, 0,15,16,17,17, 0,16,
+	16,18,17, 0, 0, 0,21,21, 0,13,13,16,16, 0,17,17,
+	 0,20, 0,15,15,16,17, 0,16,16,19,18, 0, 0,21,20,
+	21, 0,14,14,17,16, 0,20, 0, 0, 0, 0,15,16,16,17,
+	 0, 9, 9,14,14, 0,13,13,16,16, 0,14,14,15,15, 0,
+	 0,20,19,19, 0, 0, 0,19,19, 0,12,12,15,15, 0,15,
+	16,19,18, 0,14,14,15,15, 0,21, 0,18,18, 0,20, 0,
+	17,18, 0,13,13,16,16, 0,17,17,17,19, 0,14,14,16,
+	15, 0,21,20,20,19, 0, 0, 0,19,19, 0, 0, 0,19,18,
+	 0, 0, 0, 0, 0, 0,20,20,17,18, 0, 0, 0,21,21, 0,
+	 0, 0,18,18, 0,21, 0,18,19, 0, 0, 0, 0, 0, 0,20,
+	21,18,18, 0, 0, 0,20,21, 0, 0, 0,19,19, 0,18,18,
+	15,15, 0,20,21,17,17, 0,19,21,17,17, 0, 0, 0,17,
+	18, 0, 0, 0,20,19, 0,19,19,17,17, 0, 0, 0,18,18,
+	 0,19,20,16,17, 0, 0,21,20,20, 0,19,20,19,18, 0,
+	19,20,16,16, 0, 0, 0,18,19, 0,19,20,17,17, 0, 0,
+	21, 0,20, 0,21,21,17,19, 0,20, 0,19,20, 0, 0, 0,
+	20, 0, 0,19,18,17,16, 0, 0, 0, 0, 0, 0, 0,20,17,
+	17, 0,20,21,18,20, 0, 0, 0, 0,21, 0,19,20,17,17,
+	 0, 0, 0, 0, 0, 0,20,21,17,17, 0,11,11,14,14, 0,
+	13,13,16,17, 0,13,13,16,16, 0,17,17, 0,21, 0,18,
+	17,21, 0, 0,13,13,16,16, 0,15,15,18,18, 0,12,12,
+	16,16, 0,17,16,21, 0, 0,17,17, 0, 0, 0,12,12,17,
+	17, 0,17,17,19,21, 0,13,12,16,16, 0,17,17, 0, 0,
+	 0,17,17, 0, 0, 0,18,17, 0,21, 0, 0, 0, 0, 0, 0,
+	15,15,20, 0, 0,20,18, 0, 0, 0,17,18, 0, 0, 0,16,
+	17, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,19,19,
+	 0, 0, 0,18,18, 0, 0, 0,14,14,18,18, 0,16,16, 0,
+	21, 0,16,16,21,21, 0,17,17, 0,20, 0,17,17,20, 0,
+	 0,16,15, 0, 0, 0,20,20, 0, 0, 0,15,15,20,20, 0,
+	17,17,21, 0, 0,17,18,20,20, 0,15,15,20,20, 0,18,
+	18, 0, 0, 0,15,15,19,20, 0,17,18, 0, 0, 0,17,17,
+	20,20, 0,18,17,21, 0, 0, 0, 0, 0,21, 0,15,15,20,
+	20, 0,19,19, 0, 0, 0,17,17,21, 0, 0,17,17, 0, 0,
+	 0, 0, 0,21, 0, 0,15,15,19,19, 0,20,21, 0, 0, 0,
+	18,17,21,21, 0,12,12,16,16, 0,14,14,17,17, 0,13,
+	13,17,18, 0,16,16,18,17, 0,16,16,18,18, 0,13,13,
+	18,18, 0,15,16,19,18, 0,13,13,16,16, 0,16,16,20,
+	18, 0,16,16,17,17, 0,12,13,17,17, 0,17,16,18,18,
+	 0,12,12,16,16, 0,17,16,20,19, 0,16,16,16,16, 0,
+	16,17,18,20, 0, 0, 0,21,20, 0,14,14,17,16, 0,19,
+	18, 0,20, 0,16,16,17,16, 0,16,16,17,18, 0, 0,21,
+	21,21, 0,14,14,16,16, 0,20,20,21, 0, 0,16,16,16,
+	16, 0,10,10,14,14, 0,14,14,15,16, 0,14,14,15,15,
+	 0, 0,21,18,18, 0, 0,21,18,19, 0,13,13,16,16, 0,
+	16,16,18,18, 0,14,14,15,15, 0,21, 0,18,18, 0,21,
+	 0,18,18, 0,13,13,16,16, 0,17,17,19,20, 0,14,14,
+	15,15, 0, 0, 0,18,20, 0, 0,21,18,18, 0, 0,21,19,
+	18, 0, 0, 0, 0, 0, 0,20,21,18,17, 0, 0, 0,21,21,
+	 0, 0, 0,19,19, 0,21, 0,18,19, 0, 0, 0, 0, 0, 0,
+	21,20,17,17, 0, 0,21,20, 0, 0, 0, 0,19,19, 0,19,
+	20,15,16, 0, 0,20,18,17, 0,20,21,17,18, 0,21, 0,
+	18,18, 0, 0, 0,19,19, 0,20,20,17,18, 0, 0, 0,18,
+	19, 0,20,20,18,17, 0, 0, 0, 0,20, 0, 0,21,17,18,
+	 0,20,21,17,17, 0, 0, 0,18,18, 0,19,19,17,17, 0,
+	 0, 0,21,21, 0,20,20,17,17, 0, 0, 0,21,19, 0, 0,
+	 0,20,19, 0,21,20,17,18, 0, 0, 0, 0, 0, 0, 0,20,
+	18,17, 0,21,20,18,18, 0, 0, 0,20,21, 0,20,20,17,
+	17, 0, 0, 0, 0, 0, 0,20, 0,17,17, 0,11,11,13,14,
+	 0,13,13,16,16, 0,13,13,16,16, 0,17,17, 0, 0, 0,
+	17,18, 0, 0, 0,13,13,16,16, 0,15,16,18,18, 0,13,
+	13,16,17, 0,16,17,20, 0, 0,17,18,20, 0, 0,13,13,
+	17,17, 0,16,16,20,21, 0,13,13,16,16, 0,17,17,21,
+	 0, 0,17,18, 0, 0, 0,17,18, 0,21, 0, 0, 0, 0, 0,
+	 0,15,15,20, 0, 0,19,19, 0, 0, 0,17,17, 0, 0, 0,
+	18,17,21,20, 0, 0, 0, 0, 0, 0,16,16,20,21, 0,21,
+	20, 0,21, 0,19,21, 0, 0, 0,15,15, 0, 0, 0,16,17,
+	 0,19, 0,16,16, 0, 0, 0,17,17, 0, 0, 0,19,18, 0,
+	 0, 0,16,16,20,20, 0,20,18,21, 0, 0,15,15,21,21,
+	 0,18,18, 0, 0, 0,18,19, 0, 0, 0,16,15, 0,21, 0,
+	20,19, 0, 0, 0,16,16, 0, 0, 0,20,18, 0,21, 0,17,
+	18,21, 0, 0,18,19, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
+	20,20, 0,19,20, 0, 0, 0,17,17, 0, 0, 0,18,17,20,
+	21, 0, 0, 0, 0, 0, 0,16,16, 0,20, 0,20,22, 0, 0,
+	 0,18,18, 0,22,
+};
+
+static const static_codebook _44p0_p4_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p0_p4_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p0_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p4_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p0_p4_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p0_p4_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p0_p4_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p0_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p5_0[] = {
+	 1, 6, 6, 6, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9,
+	 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
+	10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,
+	14,14,13,13,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 8,
+	 7, 7,11, 9, 9, 9, 7, 7, 8, 7, 7,12,10,10,10, 7,
+	 7, 7, 8, 8,12,11,11,12,10,10,11,10,10,14,13,13,
+	13,10,10,11,10,11,16,14,14,13,10,10, 7, 8, 7,12,
+	12,12,12,11,11,12,11,11,16,14,15,13,12,12,11,11,
+	11,17,15,14,14,13,13,10, 9, 9,13,11,11,13,11,11,
+	12,11,11,16,14,13,14,11,11,12,11,11,16,15,14,14,
+	11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,14,
+	13,13,11,11,12,10,10,16,14,14,13,10,10, 8, 8, 8,
+	12,12,12,12,11,11,12,11,11,16,14,15,14,12,12,12,
+	11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,
+	11,12,12,12,16,14,14,14,11,11,12,11,11,17,14,15,
+	14,11,11,
+};
+
+static const static_codebook _44p0_p5_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p5_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p0_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p5_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p5_1[] = {
+	 2, 7, 7, 7, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 8,
+	 7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 7, 6, 6, 6, 9, 7,
+	 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
+	10, 8, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 6, 6, 9,
+	 7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 8, 8, 9, 7,
+	 7, 7, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9, 9,
+	12, 8, 8,12, 9, 9,12,10, 9,12, 8, 8, 8, 7, 7,10,
+	 9, 9,11, 9, 9,11, 9, 9,11,11,10,11, 9, 9,11,10,
+	 9,11,10,11,11, 9, 9,10, 8, 8,11, 9, 9,11, 9, 9,
+	11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
+	 9, 9, 9, 8, 8,12, 9, 9,12, 9, 9,11, 9, 9,12, 9,
+	 9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 9, 7, 7,
+	11, 9,10,11,10, 9,11, 9, 9,11,11,11,11, 9, 9,11,
+	10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11,10,
+	10,11,10, 9,11,10,10,11, 9, 9,11,10,10,11,10,11,
+	11, 9, 9,
+};
+
+static const static_codebook _44p0_p5_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p5_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p0_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p0_p6_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p0_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p0_p6_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p0_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p0_p6_1[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p0_p6_1[] = {
+	 1, 3, 2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,12,12,12,14,14,14,15,15,
+};
+
+static const static_codebook _44p0_p6_1 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p0_p6_1,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p0_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p0_p6_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p0_p6_2[] = {
+	 3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p0_p6_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p0_p6_2,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p0_p6_2,
+	0
+};
+
+static const char _huff_lengthlist__44p0_short[] = {
+	 3, 3, 7, 8,10,13,16, 3, 2, 5, 7, 9,13,16, 6, 4,
+	 4, 6,10,14,15, 7, 5, 5, 7,10,13,14, 9, 8, 9, 9,
+	 9,11,13,12,11,12, 9, 7, 8,11,14,12,10, 6, 5, 7,
+	10,
+};
+
+static const static_codebook _huff_book__44p0_short = {
+	2, 49,
+	(char *)_huff_lengthlist__44p0_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p1_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p1_l0_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5,
+	 8, 6, 9, 8,10, 9,10,10,11,10, 5, 5, 6, 6, 8, 8,
+	 9, 9,10,10,10,10,11, 7, 8, 8, 9, 8,10, 9,10, 9,
+	11,10,11,10, 7, 8, 8, 8,10, 9,10,10,10,10,11,10,
+	11, 9,10,10,11,11,11,11,12,11,12,11,12,11, 9,10,
+	10,11,11,11,11,11,11,11,12,11,12,11,11,11,12,12,
+	12,12,12,12,12,12,12,11,11,12,11,12,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,13,12,13,12,12,12,12,
+	12,12,12,12,12,13,13,13,13,12,13,12,12,12,12,12,
+	13,13,12,13,12,13,12,13,12,12,12,12,13,13,13,13,
+	13,13,12,12,12,12,12,11,12,
+};
+
+static const static_codebook _44p1_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p1_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p1_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p1_l0_1[] = {
+	 1, 4, 4, 6, 6, 5, 5, 5, 6, 6, 5, 6, 5, 6, 6, 6,
+	 6, 7, 7, 7, 6, 7, 6, 7, 7,
+};
+
+static const static_codebook _44p1_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p1_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p1_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p1_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p1_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p1_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p1_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p1_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p1_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p1_long[] = {
+	 3, 3, 7, 7, 9,13,16, 3, 2, 4, 6,10,13,17, 7, 4,
+	 4, 6, 9,12,14, 7, 6, 6, 5, 7, 9,12,10,10, 9, 6,
+	 6, 9,12,14,14,13, 9, 8,10,11,18,18,15,13,11,10,
+	11,
+};
+
+static const static_codebook _huff_book__44p1_long = {
+	2, 49,
+	(char *)_huff_lengthlist__44p1_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p1_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p1_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p1_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p2_0[] = {
+	 1, 4, 4, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
+	 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11,
+	11, 0,11,11, 0,12,12, 0,14,14, 0,11,11, 0,12,12,
+	 0,14,14, 0,11,11, 0, 6, 6, 0, 6, 5, 0, 7, 6, 0,
+	 7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 7,
+	 7, 0, 7, 7, 0,10,10, 0,11,11, 0,11,11, 0,14,14,
+	 0,10,10, 0,12,12, 0,14,14, 0,12,12, 0, 6, 6, 0,
+	11,11, 0,11,11, 0,12,12, 0,14,14, 0,11,11, 0,12,
+	12, 0,15,15, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 8, 8, 0,11,11, 0,11,11, 0,12,12, 0,15,
+	15, 0,12,12, 0,11,11, 0,15,15, 0,11,11, 0, 6, 6,
+	 0,11,11, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,
+	12,12, 0,14,14, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p1_p2_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p2_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p1_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p2_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p2_1[] = {
+	 1, 3, 3, 0, 8, 8, 0, 8, 8, 0,10,10, 0, 9, 9, 0,
+	10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7,
+	 7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 9, 9,
+	 0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0,
+	10,10, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,10,
+	10, 0, 8, 8, 0,11,11, 0,11,11, 0,12,12, 0,11,11,
+	 0,12,12, 0,12,12, 0,12,12, 0,12,12, 0, 8, 8, 0,
+	11,11, 0,11,11, 0,13,12, 0,12,12, 0,13,12, 0,13,
+	13, 0,12,12, 0,13,13, 0, 7, 7, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 8, 8, 0,11,11, 0,11,11, 0,13,12, 0,12,
+	12, 0,12,12, 0,12,12, 0,11,11, 0,12,12, 0, 8, 8,
+	 0,12,12, 0,12,12, 0,13,13, 0,12,12, 0,13,13, 0,
+	13,13, 0,12,13, 0,13,13, 0, 7, 7, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p1_p2_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p2_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p1_p2_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p3_0[] = {
+	 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
+	 8, 8, 7, 9, 9,11,12,12, 9, 8, 8, 6, 7, 7, 9,11,
+	11,10,11,11,10,11,11,13,13,13,11,12,12,10,11,11,
+	13,14,14,12,12,12, 6, 6, 6, 8, 6, 6, 8, 6, 6, 9,
+	 7, 7,12,10,10,10, 6, 6, 9, 7, 7,12,10,10,11, 7,
+	 6, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
+	13,10,10,12,11,11,15,13,13,14,11,11, 8, 7, 7,12,
+	11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,
+	11,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,12,12,
+	 0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
+	11,11, 7, 8, 8,13,10,10,12,10,10,12,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
+	12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,
+	12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
+	12, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,15,14,
+	 0,12,12,
+};
+
+static const static_codebook _44p1_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p3_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p1_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p3_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p1_p3_1[] = {
+	 2, 3, 4, 7, 7,10,12,12,12,12,10,11,11,13,13,11,
+	12,12,11,11,12,12,12,12,12,11,13,13,13,13,12,12,
+	12,13,14,12,13,13,13,13,12,13,13,13,13,12,13,13,
+	13,13,11,13,13,13,13,12,12,12,14,14,12,13,13,12,
+	12,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,
+	12,12,12,14,14,12,13,13,12,12,12,13,13,13,13,12,
+	13,13,12,12,12,13,13,13,13,12,12,12,14,14,12,13,
+	13,12,12,12,13,13,13,13,12,13,13,12,12,10,10,11,
+	10,10,11,11,11,11,11,11, 9, 9,10,10,12,11,11,10,
+	10,12,10,10,10,10,13,12,12,12,12,13,11,11,11,11,
+	13,12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,
+	12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,11,
+	11,11,11,13,12,12,11,11,13,12,12,11,11,13,11,11,
+	11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,
+	11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,
+	13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,11,
+	11,11, 9, 9,11,12,12,11,11,12,12,12, 9, 9,13,13,
+	13,10,10,13,13,13,11,11,13,13,13,14,14,13,13,13,
+	11,10,13,13,14,12,12,13,13,13,11,11,13,13,13,11,
+	11,13,13,13,14,14,13,13,13,10,10,13,13,13,11,11,
+	13,13,13,10,10,13,14,13,11,11,13,14,14,14,14,13,
+	13,13,10,10,13,14,14,11,11,13,13,13,10,10,13,14,
+	14,11,11,13,13,13,14,14,14,13,13,10,10,13,14,14,
+	11,11,13,13,13,10,10,14,12,12, 9, 9,14,12,12, 9,
+	 9,14,11,11, 9, 9,14,12,12, 8, 8,14,11,11, 7, 7,
+	15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
+	12,12,10,10,15,13,13,10,10,15,13,13,10,10,15,12,
+	12,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,
+	10,10,15,13,13,10,10,15,12,12,10,10,15,13,13, 9,
+	 9,15,12,12, 9, 9,14,13,13, 9, 9,15,13,13,10,10,
+	15,12,12,10,10,15,13,13, 9, 9,15,12,12, 9, 9,15,
+	13,13, 9, 9,13,12,12, 9, 9,13,13,13, 8, 8,13,13,
+	13, 9, 9,13,13,13, 7, 7,14,13,13, 8, 8,14,14,14,
+	10,10,15,14,14,11,11,14,14,14, 9, 9,15,14,14,10,
+	10,15,14,14, 9, 9,14,14,14,10,10,15,14,14,11,11,
+	15,14,14, 9, 9,14,14,14,10,10,14,14,14, 9, 9,15,
+	14,15,10,10,15,14,14,11,11,14,14,14, 9, 9,14,14,
+	14, 9, 9,14,14,14, 8, 8,15,14,14,10,10,15,14,14,
+	11,11,14,14,14, 9, 9,15,14,14, 9, 9,14,14,14, 8,
+	 8,12,12,12,13,13,16,16,16,11,11,17,16,16,12,12,
+	17,16,16,11,11,17,16,16,11,11,17,17,16,13,13,17,
+	16,16,13,13,18,17,16,12,12,17,16,16,13,13,17,16,
+	17,12,12,18,17,17,13,13,17,16,16,14,14,18,17,17,
+	12,12,18,16,16,13,13,17,17,17,13,12,17,17,17,13,
+	13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,12,
+	17,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,
+	17,17,12,12,17,17,17,13,13,18,17,18,12,12,13,14,
+	14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,
+	12,13,16,14,14,13,13,17,15,15,14,14,16,16,16,15,
+	15,17,15,15,14,14,17,16,16,14,15,17,15,15,14,14,
+	17,15,16,14,14,17,16,16,15,15,17,15,15,13,13,17,
+	15,15,14,14,18,15,15,13,14,17,15,15,14,14,16,16,
+	16,15,15,17,15,15,13,13,17,15,15,14,14,17,15,15,
+	13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,13,
+	13,17,15,15,14,14,18,15,15,13,13,13,11,11,10,10,
+	16,14,14,13,12,16,14,14,13,13,16,15,14,12,12,16,
+	14,14,12,12,16,15,15,14,14,16,14,14,14,14,17,15,
+	15,13,13,16,15,15,14,14,17,15,15,13,14,17,15,15,
+	14,14,17,15,14,14,14,17,15,15,13,13,17,15,15,14,
+	14,17,15,15,13,13,17,15,15,14,14,17,14,14,14,14,
+	17,15,15,13,13,17,15,15,13,13,17,15,15,13,13,17,
+	15,15,14,14,17,15,15,14,14,17,15,15,13,13,17,15,
+	15,13,13,17,15,15,13,13,14,14,15, 8, 8,14,14,14,
+	19,19,14,15,15,18,19,14,14,14,19,18,14,14,14,19,
+	19,15,15,15,19,18,15,16,16,19,19,15,15,15,19,19,
+	15,16,16,20,19,15,15,15,19,19,15,15,15,19,19,16,
+	16,16,20,19,15,15,15,19,18,15,16,16,20,19,15,15,
+	15,18,18,15,15,15,19,20,15,16,16,19,19,15,15,15,
+	20,19,15,15,15,20,19,15,15,15,19,18,15,15,15,19,
+	19,15,16,16,19,20,15,15,15,19,19,15,15,15,19,20,
+	15,15,15,19,19,14,12,12, 9, 9,14,14,14,19,19,14,
+	14,14,19,19,14,14,15,20,19,15,14,14,18,19,15,15,
+	15,19,19,15,15,14,20,19,15,15,15,20,19,15,15,14,
+	20,19,15,15,15,20,19,15,15,15,19,20,15,14,14,19,
+	20,15,15,15,20,20,15,14,14,20,19,15,15,15,19,19,
+	15,15,15,19,19,15,14,14,19,19,15,15,15,19,20,15,
+	15,15,20,20,15,15,15,19,19,15,15,15,20,19,16,14,
+	14,19,19,15,15,15,20,19,15,14,15,20,19,14,15,15,
+	20,19,12,12,12,13,13,16,16,16,11,11,16,16,16,12,
+	12,17,16,16,11,11,17,15,16,11,11,17,17,17,13,13,
+	18,16,17,13,13,18,17,17,13,12,17,16,17,13,13,17,
+	17,17,13,13,16,16,16,12,12,17,16,16,13,13,17,16,
+	16,12,12,17,16,16,12,13,17,17,17,12,12,17,17,17,
+	13,13,18,16,16,13,13,18,17,17,12,12,18,17,17,12,
+	12,17,17,17,12,12,17,17,17,12,12,17,16,16,13,13,
+	17,17,17,12,12,17,16,16,12,12,17,17,17,12,12,13,
+	14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,17,14,
+	14,13,13,16,14,14,13,13,17,15,15,15,15,16,16,16,
+	15,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,
+	14,17,15,15,14,14,16,16,16,15,15,17,15,15,14,14,
+	17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,16,
+	16,16,15,15,18,15,15,14,13,17,15,15,14,14,17,15,
+	15,13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,
+	14,13,17,15,15,14,14,17,15,15,13,13,13,11,11,11,
+	11,16,14,14,12,12,16,14,14,13,13,16,15,14,12,12,
+	17,14,14,12,12,17,15,15,13,13,17,14,14,14,14,17,
+	15,15,13,13,17,14,15,14,13,17,15,15,13,13,16,15,
+	15,13,13,16,14,14,14,14,17,15,15,13,13,16,14,14,
+	13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,14,
+	14,17,15,15,12,12,17,15,15,13,13,17,15,15,12,12,
+	16,15,15,13,13,17,14,14,13,14,17,15,15,12,12,17,
+	14,14,13,13,17,15,15,12,12,14,14,14, 8, 8,14,14,
+	14,18,18,14,15,15,19,19,14,14,14,19,19,14,15,14,
+	18,19,15,15,15,18,19,15,16,16,20,20,15,15,15,19,
+	20,15,16,16,19,20,15,15,15,19,20,15,15,16,19,19,
+	15,16,16,20,20,15,15,15,20,19,15,16,16,20,19,15,
+	15,15,19,20,15,15,15,19,19,15,16,16,20,19,15,15,
+	15,19,19,15,16,15,20,19,15,15,15,19,19,15,15,15,
+	19,20,15,16,16,20,20,15,15,15,19,19,15,15,15,20,
+	20,15,15,15,19,19,14,12,12, 9, 9,14,14,14,18,18,
+	14,14,14,19,20,14,14,14,18,18,14,14,14,18,19,15,
+	15,15,19,20,15,14,14,19,19,15,15,15,19,19,15,14,
+	15,19,19,15,15,15,18,20,15,15,15,19,19,15,14,14,
+	19,19,15,15,15,20,19,15,15,14,20,20,15,15,15,19,
+	19,15,15,15,19,19,15,14,14,19,19,15,15,15,19,19,
+	15,14,14,19,20,14,15,15,19,19,15,15,15,19,19,15,
+	14,14,20,19,15,15,15,19,19,15,14,14,20,19,15,15,
+	15,19,19,13,12,12,13,13,17,17,16,11,11,16,16,16,
+	12,12,17,17,16,11,11,17,16,16,11,11,17,17,17,13,
+	13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,13,
+	18,17,17,12,12,18,17,17,13,13,18,16,17,13,13,17,
+	17,17,12,12,18,17,17,13,13,18,17,17,12,12,17,16,
+	17,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,
+	12,12,17,17,17,11,11,17,17,17,12,12,18,16,16,13,
+	13,18,17,17,12,11,17,16,16,12,12,18,17,17,11,11,
+	13,14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,17,
+	14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,16,
+	16,15,16,18,15,15,14,14,17,15,15,14,14,17,15,15,
+	14,14,18,15,15,14,14,16,16,16,15,16,18,15,15,14,
+	14,17,16,15,14,14,18,15,15,14,14,17,15,15,14,14,
+	17,16,16,15,15,18,14,15,13,13,17,15,15,14,14,18,
+	15,15,13,13,17,15,15,14,14,17,16,15,15,15,17,15,
+	15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,11,
+	10,10,16,14,14,12,12,16,14,14,12,12,17,14,15,11,
+	11,17,14,14,11,11,17,15,15,13,13,17,14,14,14,13,
+	17,15,15,13,13,16,15,15,13,13,17,15,15,13,13,17,
+	15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,14,
+	15,13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,
+	13,13,17,15,15,12,12,16,14,14,12,12,17,15,15,12,
+	12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,
+	17,14,14,12,12,17,15,15,12,12,13,15,14, 8, 8,14,
+	14,14,19,19,14,15,15,18,19,14,14,14,18,19,14,15,
+	14,19,19,15,16,15,19,19,15,16,16,19,20,15,15,15,
+	19,19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,
+	19,15,16,16,20,20,15,15,15,19,19,15,15,15,19,19,
+	15,15,15,19,19,15,15,15,19,19,15,16,16,20,19,15,
+	15,15,19,19,15,15,15,19,19,15,15,15,19,19,15,16,
+	15,19,19,15,16,16,21,19,15,15,15,20,20,15,15,15,
+	20,21,15,15,15,19,20,14,12,12, 8, 8,14,14,14,19,
+	19,14,13,13,19,19,14,14,14,19,19,14,13,14,19,19,
+	15,15,15,20,20,15,14,14,20,19,15,15,15,19,20,15,
+	14,14,19,20,15,15,15,20,19,15,15,15,19,20,15,14,
+	14,20,20,15,15,15,20,19,15,14,14,19,19,15,15,15,
+	19,19,15,15,15,20,19,15,14,14,21,19,15,15,15,20,
+	21,15,14,14,21,19,15,15,15,19,19,15,15,15,20,20,
+	15,14,14,19,21,15,15,15,19,19,15,14,14,19,20,15,
+	15,15,19,19,13,12,12,13,13,17,16,16,11,11,17,16,
+	15,12,12,18,16,16,11,11,17,16,16,11,11,18,17,17,
+	13,13,18,16,16,13,13,17,17,17,12,13,18,17,16,13,
+	13,18,17,17,13,13,17,17,17,13,13,17,16,16,13,13,
+	18,16,17,12,12,17,16,16,13,12,17,17,17,12,12,18,
+	17,17,13,12,18,16,16,13,13,18,17,17,12,12,17,16,
+	16,12,12,17,17,17,11,11,17,16,16,12,12,17,16,16,
+	13,13,17,16,16,11,11,17,16,16,12,12,17,17,17,11,
+	11,13,14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,
+	17,14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,
+	15,16,15,15,17,15,15,14,14,17,15,16,14,15,18,15,
+	15,14,14,17,15,15,14,14,16,16,16,15,15,18,15,15,
+	13,14,17,15,15,14,14,18,15,15,14,14,17,15,15,14,
+	14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,
+	18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
+	15,15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,
+	11,10,10,16,14,14,12,12,16,14,14,13,13,17,14,14,
+	11,11,17,14,14,12,12,17,15,15,14,14,17,14,14,14,
+	14,17,15,15,13,13,17,15,14,13,13,16,15,15,13,13,
+	16,15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,
+	14,14,13,13,16,15,15,13,13,16,15,15,13,13,17,14,
+	14,13,13,17,15,15,12,12,17,14,14,12,12,16,15,15,
+	12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,
+	12,17,14,14,12,12,16,15,15,12,12,14,14,14, 8, 8,
+	14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,
+	14,14,18,19,15,16,15,19,19,15,17,16,20,20,15,15,
+	15,19,19,15,16,16,19,19,15,15,15,19,19,15,16,15,
+	18,19,15,16,16,20,20,15,15,15,19,19,15,16,16,19,
+	20,15,15,15,19,19,15,15,16,19,19,15,16,16,20,20,
+	15,15,15,19,19,15,15,15,19,20,15,15,15,19,19,15,
+	15,15,19,19,15,16,16,20,20,15,15,15,19,20,15,16,
+	16,20,20,15,15,15,19,19,13,12,12, 8, 8,14,14,14,
+	19,20,14,14,14,19,19,14,14,14,18,19,14,14,14,19,
+	20,15,15,15,19,20,15,14,14,21,20,15,15,15,20,20,
+	15,15,14,19,19,15,15,15,19,19,15,15,15,19,19,15,
+	14,14,19,20,15,15,15,19,20,15,14,14,19,19,15,15,
+	15,19,19,15,15,15,19,19,16,14,14,19,19,15,15,15,
+	20,20,15,14,14,21,19,15,15,15,19,19,15,15,15,19,
+	20,16,14,14,19,20,15,15,15,19,19,15,14,14,19,19,
+	15,15,15,20,19,
+};
+
+static const static_codebook _44p1_p3_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p1_p3_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p1_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p1_p4_0[] = {
+	 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,14,14, 0,
+	13,13,16,16, 0,13,13,15,14, 7, 8, 8,15,15, 9,10,
+	10,16,16, 9, 8, 8,15,15, 0,13,13,17,16, 0,13,13,
+	15,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,14,
+	14, 0,13,13,17,18, 0,13,13,15,15, 0,14,14,16,16,
+	 0, 0, 0,19,18, 0,12,12,16,15, 0,15,16, 0,20, 0,
+	14,14,16,16, 0,14,14,17,17, 0, 0, 0,19,18, 0,12,
+	12,15,15, 0,17,17, 0,20, 0,14,14,16,16, 5, 6, 7,
+	12,12, 9, 9, 9,14,14,10,10,10,14,14, 0,21,21,18,
+	17, 0,20,20,18,17, 9,10,10,14,14,12,12,12,16,16,
+	12,10,10,14,14, 0,20,19,18,17, 0, 0,20,17,18,11,
+	10,10,14,14,14,13,13,18,18,13,11,11,14,14, 0,20,
+	20,17,18, 0,21,21,17,17, 0,21, 0,18,18, 0, 0, 0,
+	 0, 0, 0,20,19,16,17, 0, 0, 0,19,19, 0, 0, 0,18,
+	18, 0,21,21,18,18, 0, 0, 0, 0, 0, 0,20,20,16,17,
+	 0, 0, 0,21,21, 0, 0, 0,18,19, 6, 6, 6,13,12, 8,
+	 6, 6,11,11, 8, 6, 6,13,13, 0, 9, 9,11,11, 0,11,
+	10,14,14, 9, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
+	13,13, 0,10,10,14,15, 0,10,10,13,13, 9, 7, 7,13,
+	13,13,10, 9,13,13,10, 6, 6,13,13, 0,10,10,15,14,
+	 0,10,10,13,13, 0,11,11,15,15, 0,19,20,17,17, 0,
+	 9, 9,13,13, 0,13,13,20,20, 0,11,11,13,13, 0,11,
+	11,15,15, 0,19,19,17,17, 0,10,10,13,13, 0,15,15,
+	20,20, 0,12,12,13,13, 0,10,10,12,12, 0,11,11,15,
+	15, 0,11,11,15,15, 0,15,15,20, 0, 0,16,16, 0,21,
+	 0,11,11,15,15, 0,14,14,18,17, 0,11,11,15,15, 0,
+	15,16,19,20, 0,16,16,21,21, 0,12,12,15,15, 0,15,
+	14,18,18, 0,11,11,16,16, 0,15,15,21,21, 0,16,15,
+	 0, 0, 0,16,16,21, 0, 0, 0, 0, 0, 0, 0,14,14,20,
+	20, 0,18,18, 0, 0, 0,16,17,21, 0, 0,16,16,21,21,
+	 0, 0, 0, 0, 0, 0,15,15,21,21, 0,20,19, 0,21, 0,
+	17,17, 0, 0, 0,10,10,12,11, 0,10,10,10,11, 0,11,
+	11,12,12, 0,11,11, 9, 9, 0,13,13,11,12, 0,11,11,
+	12,12, 0,13,13,12,12, 0,10,10,12,12, 0,12,12,13,
+	13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
+	 0,10,10,12,12, 0,13,13,14,14, 0,12,12,12,12, 0,
+	14,14,14,13, 0,19,20,15,15, 0,12,11,12,12, 0,15,
+	15,21,20, 0,13,13,11,11, 0,13,13,13,13, 0,19, 0,
+	15,15, 0,12,12,12,12, 0,17,16,19, 0, 0,13,13,12,
+	12, 7, 7, 7,16,16,11, 9, 9,15,15,12, 9, 9,16,16,
+	 0,13,13,15,14, 0,14,14,17,16,10, 9, 9,16,16,14,
+	11,11,17,16,12, 9, 8,15,15, 0,13,13,18,18, 0,13,
+	13,15,15,12,10,10,18,17,15,12,12,17,17,14, 9, 9,
+	16,16, 0,13,13,18,19, 0,14,13,17,16, 0,14,14,18,
+	18, 0, 0, 0,20,21, 0,12,12,16,16, 0,16,16,20,21,
+	 0,14,14,17,16, 0,14,14,18,19, 0, 0, 0,19,21, 0,
+	13,13,17,17, 0,17,17, 0,21, 0,15,15,16,16, 8, 7,
+	 7,14,14,11,10,10,15,15,12,10,10,15,15, 0,20,20,
+	18,18, 0, 0, 0,17,17,11,10,10,16,16,14,12,12,18,
+	17,14,11,11,15,15, 0,20,21,18,18, 0, 0,19,18,17,
+	12,10,10,16,16,17,14,14,19,19,14,11,11,15,15, 0,
+	21,21,19,19, 0,21,20,19,18, 0,21, 0,18,19, 0, 0,
+	 0, 0, 0, 0,20,20,18,17, 0,21, 0, 0, 0, 0, 0, 0,
+	19,18, 0, 0, 0,18,19, 0, 0, 0, 0, 0, 0, 0,21,17,
+	18, 0, 0, 0, 0,21, 0, 0,21,18,19,11, 9, 9,14,14,
+	13,10,10,13,13,13,11,11,15,15, 0,13,13,12,12, 0,
+	15,15,16,16,13,10,10,15,15,16,12,12,15,15,15,10,
+	10,15,15, 0,14,13,16,15, 0,14,13,15,15,13,10,10,
+	15,15,18,14,14,15,15,15,10,10,14,15, 0,14,14,16,
+	16, 0,14,14,16,15, 0,15,15,17,16, 0,21, 0,18,18,
+	 0,12,13,15,15, 0,16,16, 0, 0, 0,14,14,15,15, 0,
+	15,15,16,16, 0,21,20,18,18, 0,13,13,15,15, 0,19,
+	18, 0, 0, 0,15,15,15,15, 0,11,11,13,13, 0,12,12,
+	16,16, 0,12,12,16,16, 0,15,16,20, 0, 0,16,17, 0,
+	 0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,17,
+	 0,15,15,20, 0, 0,16,16, 0, 0, 0,12,12,16,16, 0,
+	15,15,19,19, 0,11,11,17,17, 0,16,16,21, 0, 0,16,
+	16, 0, 0, 0,17,17,20,20, 0, 0, 0, 0, 0, 0,15,15,
+	20, 0, 0,17,18, 0, 0, 0,17,17, 0, 0, 0,16,16, 0,
+	21, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,19,18, 0, 0,
+	 0,18,17, 0, 0, 0,11,11,14,14, 0,11,11,15,15, 0,
+	12,12,16,16, 0,13,13,14,14, 0,14,14,17,17, 0,12,
+	12,16,16, 0,14,14,16,16, 0,11,11,16,15, 0,13,13,
+	16,17, 0,13,13,16,16, 0,12,12,15,16, 0,15,14,16,
+	16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,16,16,
+	 0,15,14,18,18, 0,21, 0,19,19, 0,13,13,15,15, 0,
+	16,16,20,20, 0,14,14,16,15, 0,14,14,17,17, 0,21,
+	 0,20,18, 0,13,13,15,15, 0,17,17, 0, 0, 0,14,14,
+	16,15, 8, 8, 8,16,16,12, 9, 9,16,16,13, 9, 9,16,
+	16, 0,14,14,18,17, 0,14,14,16,17,12,10,10,18,17,
+	14,11,11,18,18,14, 9, 9,16,16, 0,13,13,18,18, 0,
+	13,13,17,16,12, 9, 9,16,17,17,13,13,16,16,14, 9,
+	 9,15,15, 0,14,14,20,20, 0,13,13,15,15, 0,15,14,
+	18,18, 0, 0, 0,20,21, 0,12,13,16,17, 0,16,16,20,
+	21, 0,14,14,16,17, 0,14,14,18,17, 0, 0, 0,20,21,
+	 0,13,13,16,16, 0,19,17, 0,21, 0,14,15,16,16, 8,
+	 7, 7,14,13,12,10,10,15,15,13,10,10,15,15, 0,21,
+	21,18,19, 0,20,21,18,18,12,10,10,16,15,15,12,12,
+	17,17,14,11,11,15,15, 0,21,21,19,18, 0, 0,21,17,
+	18,13,11,11,15,15,16,13,13,18,19,15,11,11,15,14,
+	 0,21, 0,19,19, 0, 0,21,18,18, 0, 0,21,19,19, 0,
+	 0, 0, 0, 0, 0,20,19,17,17, 0, 0, 0,21, 0, 0,21,
+	 0,18,19, 0, 0,20,20,19, 0, 0, 0, 0, 0, 0,21,20,
+	18,17, 0, 0, 0, 0,20, 0, 0, 0,18,19, 0,10,10,15,
+	14, 0,11,11,14,14, 0,11,11,15,16, 0,14,14,15,15,
+	 0,15,15,16,16, 0,11,11,16,16, 0,14,13,16,16, 0,
+	11,11,15,15, 0,14,14,16,16, 0,14,14,15,15, 0,11,
+	11,15,15, 0,13,13,15,15, 0,11,11,15,15, 0,15,15,
+	18,17, 0,14,14,15,15, 0,15,16,18,18, 0, 0, 0,20,
+	20, 0,14,13,16,15, 0,17,17,21, 0, 0,15,15,15,15,
+	 0,16,15,17,17, 0, 0, 0,19,19, 0,13,13,15,15, 0,
+	20,19, 0, 0, 0,15,15,15,15, 0,11,11,13,13, 0,12,
+	12,16,16, 0,12,12,16,16, 0,15,15,21,21, 0,17,16,
+	 0, 0, 0,12,12,16,16, 0,14,14,17,17, 0,11,11,16,
+	16, 0,15,15, 0, 0, 0,16,16,21, 0, 0,12,12,17,16,
+	 0,14,15,20,20, 0,11,11,16,16, 0,15,15, 0,20, 0,
+	16,16, 0,21, 0,16,17,21, 0, 0, 0, 0, 0, 0, 0,15,
+	15, 0,21, 0,18,18, 0, 0, 0,17,16, 0, 0, 0,17,17,
+	21, 0, 0, 0, 0, 0, 0, 0,15,15, 0,20, 0,19,20,21,
+	 0, 0,17,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
+	 0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
+	13,12,17,16, 0,14,14,17,16, 0,11,11,16,16, 0,14,
+	14,17,17, 0,14,14,17,17, 0,12,12,16,16, 0,15,15,
+	17,17, 0,11,11,16,16, 0,14,14,17,17, 0,14,14,16,
+	16, 0,15,15,18,17, 0, 0, 0,19, 0, 0,13,13,16,16,
+	 0,16,16, 0,21, 0,14,14,16,16, 0,15,15,18,17, 0,
+	 0, 0,19,19, 0,13,13,16,16, 0,18,17, 0,21, 0,14,
+	15,16,16, 0,11,11,16,16, 0,13,13,17,17, 0,13,13,
+	17,17, 0,16,16,16,17, 0,16,16,18,18, 0,12,12,17,
+	17, 0,16,15,18,17, 0,12,12,16,16, 0,16,15,19,19,
+	 0,16,15,17,17, 0,12,12,17,18, 0,16,16,18,18, 0,
+	12,12,16,16, 0,16,16,19,19, 0,15,16,17,17, 0,15,
+	16,18,18, 0, 0, 0,20,20, 0,13,13,16,16, 0,18,18,
+	21,20, 0,15,15,16,16, 0,16,16,19,18, 0, 0, 0,19,
+	20, 0,14,14,17,17, 0,19,19, 0,21, 0,15,16,16,16,
+	 0, 9, 9,14,14, 0,13,13,15,15, 0,14,14,15,15, 0,
+	 0,21,19,19, 0, 0,21,18,18, 0,12,12,15,15, 0,15,
+	15,18,18, 0,14,13,15,15, 0,21,21,18,19, 0,21,20,
+	18,18, 0,13,13,16,16, 0,17,17,18,19, 0,14,14,15,
+	15, 0, 0,21,19,19, 0,21,20,18,19, 0,20,20,19,19,
+	 0, 0, 0, 0, 0, 0,19,20,17,17, 0, 0, 0,21,21, 0,
+	21, 0,18,20, 0,21, 0,18,21, 0, 0, 0, 0, 0, 0,21,
+	21,19,18, 0, 0, 0, 0, 0, 0, 0, 0,19,19, 0,18,18,
+	15,15, 0,18,20,17,16, 0,20, 0,17,17, 0,21, 0,17,
+	17, 0,21,20,19,20, 0,19,19,16,16, 0,21,21,17,18,
+	 0,19,19,17,17, 0,20,21,21,21, 0,20,20,18,18, 0,
+	19,19,16,16, 0, 0,21,18,19, 0,18,19,16,17, 0,21,
+	21,19,20, 0,21,19,18,18, 0,21,20,19,21, 0, 0, 0,
+	20,21, 0,19,19,17,16, 0, 0, 0, 0, 0, 0,21,20,17,
+	17, 0,20,21,19,18, 0, 0, 0, 0,21, 0,19,18,16,17,
+	 0, 0, 0, 0, 0, 0,20,20,17,17, 0,11,11,14,14, 0,
+	13,13,16,16, 0,13,13,16,16, 0,17,17,21, 0, 0,17,
+	18, 0, 0, 0,12,12,16,16, 0,15,15,17,18, 0,12,12,
+	16,16, 0,16,16, 0,20, 0,17,17, 0,21, 0,12,12,17,
+	17, 0,16,16,19,20, 0,12,12,17,17, 0,17,17, 0,20,
+	 0,17,17, 0, 0, 0,17,17,21, 0, 0, 0, 0, 0, 0, 0,
+	15,15, 0,20, 0,19,19, 0, 0, 0,18,18, 0, 0, 0,17,
+	17, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,20,19,
+	 0, 0, 0,19,18, 0, 0, 0,14,14,21,19, 0,16,16,20,
+	21, 0,16,16,20,20, 0,17,17,20, 0, 0,17,17,20,20,
+	 0,15,15,20,20, 0,19,18,20, 0, 0,15,15,20,20, 0,
+	17,18,21,20, 0,17,17,20,21, 0,15,15,19,19, 0,19,
+	18,21,21, 0,15,15,19,20, 0,17,18, 0, 0, 0,17,17,
+	20,20, 0,17,18,20,21, 0, 0, 0, 0, 0, 0,15,15,20,
+	20, 0,19,19, 0, 0, 0,17,17,19,21, 0,17,17, 0,21,
+	 0, 0, 0, 0,21, 0,15,15,20,19, 0, 0,20, 0, 0, 0,
+	17,17,21,20, 0,12,12,16,16, 0,14,14,17,17, 0,13,
+	13,17,17, 0,16,16,17,18, 0,17,16,18,18, 0,13,13,
+	18,17, 0,15,16,19,18, 0,13,13,16,16, 0,16,16,19,
+	19, 0,16,16,17,17, 0,13,12,17,17, 0,16,16,18,17,
+	 0,12,12,16,16, 0,17,17,19,18, 0,16,15,16,16, 0,
+	16,17,18,19, 0, 0, 0,20,20, 0,14,14,17,16, 0,18,
+	18,21, 0, 0,16,16,16,16, 0,16,16,18,17, 0, 0,21,
+	21,21, 0,14,14,16,16, 0,21,20,21, 0, 0,16,16,16,
+	16, 0,10,10,14,14, 0,14,14,15,16, 0,14,14,15,15,
+	 0, 0,21,18,18, 0, 0,21,18,19, 0,13,13,16,16, 0,
+	16,16,18,17, 0,14,14,15,15, 0,20, 0,18,18, 0,21,
+	 0,18,17, 0,13,13,16,15, 0,17,17,19,19, 0,14,14,
+	15,15, 0,20,20,18,19, 0, 0, 0,18,17, 0, 0,21,18,
+	18, 0, 0, 0, 0, 0, 0,20,21,18,17, 0, 0, 0, 0, 0,
+	 0, 0, 0,19,19, 0, 0,21,18,18, 0, 0, 0, 0, 0, 0,
+	21, 0,18,17, 0, 0, 0, 0,21, 0, 0, 0,19,20, 0,19,
+	19,16,16, 0, 0,21,18,17, 0,21, 0,18,18, 0,20, 0,
+	19,18, 0,21,20,19,19, 0,21,19,17,18, 0, 0,21,19,
+	19, 0,21,19,18,18, 0,21, 0,20,18, 0, 0,21,18,18,
+	 0,20,21,17,17, 0,21, 0,18,18, 0,21,19,17,17, 0,
+	21, 0, 0,20, 0, 0,20,17,18, 0, 0, 0,19,20, 0, 0,
+	 0,20,19, 0,19,21,17,18, 0,21, 0, 0, 0, 0,21,21,
+	18,17, 0, 0,21,18,18, 0, 0, 0, 0,21, 0,20,19,16,
+	17, 0, 0, 0, 0, 0, 0,21,20,17,17, 0,11,11,13,13,
+	 0,13,13,16,16, 0,13,13,16,16, 0,17,17, 0,21, 0,
+	18,19,21, 0, 0,12,12,16,16, 0,15,15,19,18, 0,13,
+	13,16,16, 0,16,17,21,19, 0,17,17,21,21, 0,13,13,
+	16,16, 0,16,16,20,18, 0,13,13,16,16, 0,17,17, 0,
+	 0, 0,18,18, 0, 0, 0,18,17, 0,20, 0, 0, 0, 0, 0,
+	 0,15,15,21,21, 0,19,18, 0, 0, 0,17,17,21,21, 0,
+	17,17, 0, 0, 0, 0, 0, 0, 0, 0,15,15,20,21, 0,20,
+	20, 0, 0, 0,19,19, 0, 0, 0,14,15,21,19, 0,16,16,
+	 0,21, 0,17,16,21,21, 0,17,18,21,20, 0,18,18, 0,
+	21, 0,16,16, 0,20, 0,19,19, 0, 0, 0,16,15, 0,20,
+	 0,18,18, 0, 0, 0,17,17, 0,21, 0,16,16,20,20, 0,
+	20,19, 0, 0, 0,15,16,21,22, 0,18,18, 0, 0, 0,18,
+	17, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
+	21,20, 0,19,20, 0, 0, 0,18,17,21, 0, 0,17,18, 0,
+	 0, 0, 0, 0, 0, 0, 0,16,16, 0,20, 0, 0,20, 0, 0,
+	 0,18,18,22, 0,
+};
+
+static const static_codebook _44p1_p4_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p1_p4_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p1_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p4_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p1_p4_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p1_p4_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p1_p4_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p1_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p5_0[] = {
+	 1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9,
+	 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
+	10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,
+	14,14,13,12,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 9,
+	 7, 7,11,10,10, 9, 7, 7, 9, 7, 7,12,10,10,10, 7,
+	 7, 7, 8, 8,12,11,10,12,10,10,11,10,10,15,13,13,
+	13,10,10,11,10,10,17,14,13,13,10,10, 7, 7, 7,12,
+	11,12,12,11,11,12,11,11,16,14,14,13,12,12,12,11,
+	11,17,15,14,14,12,12,10, 9, 9,13,11,11,13,11,11,
+	13,11,11,17,14,13,14,11,11,12,11,11,16,15,14,14,
+	11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,15,13,
+	13,14,11,10,12,10,10,16,14,14,14,10,10, 8, 7, 7,
+	12,11,11,12,11,11,12,11,11,17,14,14,14,12,12,12,
+	11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,
+	11,13,11,12,16,14,14,14,11,11,13,12,11,16,15,15,
+	14,11,11,
+};
+
+static const static_codebook _44p1_p5_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p5_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p1_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p5_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p5_1[] = {
+	 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 8, 8, 8,
+	 7, 7, 8, 8, 8, 9, 8, 8, 9, 7, 7, 6, 6, 6, 9, 8,
+	 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
+	10, 8, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 7, 7, 9,
+	 7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 8, 8, 9, 7,
+	 7, 7, 8, 8,11, 9, 9,11, 9, 9,11, 8, 9,12, 9, 9,
+	12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,10,
+	 9, 9,10,10, 9,10, 9, 9,11,10,10,11, 9, 9,11, 9,
+	 9,11,10,11,11, 9, 9,10, 8, 8,11, 9, 9,10, 9, 9,
+	11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
+	 9, 9, 9, 8, 8,11, 9, 9,12, 9, 9,11, 9, 9,12, 9,
+	 9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 9, 7, 7,
+	11, 9, 9,11,10,10,11, 9, 9,11,11,11,11, 9, 9,11,
+	10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11,10,
+	10,11, 9, 9,11,10,10,11, 9, 9,11, 9,10,11,10,10,
+	11, 9, 9,
+};
+
+static const static_codebook _44p1_p5_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p5_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p1_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p1_p6_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p1_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p1_p6_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p1_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p1_p6_1[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p1_p6_1[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,13,14,16,16,16,16,
+};
+
+static const static_codebook _44p1_p6_1 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p1_p6_1,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p1_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p1_p6_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p1_p6_2[] = {
+	 3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p1_p6_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p1_p6_2,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p1_p6_2,
+	0
+};
+
+static const char _huff_lengthlist__44p1_short[] = {
+	 4, 5, 7, 8,10,13,14, 4, 2, 4, 6, 8,11,12, 7, 4,
+	 3, 5, 8,12,14, 8, 5, 4, 4, 8,12,12, 9, 7, 7, 7,
+	 9,10,11,13,11,11, 9, 7, 8,10,13,11,10, 6, 5, 7,
+	 9,
+};
+
+static const static_codebook _huff_book__44p1_short = {
+	2, 49,
+	(char *)_huff_lengthlist__44p1_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p2_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p2_l0_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5,
+	 8, 7, 9, 8,10, 9,11,10,11,11, 4, 5, 6, 7, 8, 8,
+	 9, 9,10,10,10,10,11, 8, 9, 8,10, 8,10, 9,11,10,
+	11,11,11,11, 8, 8, 9, 8,10, 9,10,10,11,11,11,11,
+	11, 9,10,10,11,11,11,11,11,11,12,11,12,11, 9,10,
+	10,10,11,11,11,11,11,11,12,11,12,10,11,11,12,11,
+	12,12,12,12,12,12,12,12,10,11,11,11,11,12,12,12,
+	13,12,12,12,12,11,12,12,12,12,13,13,12,12,12,12,
+	12,12,11,12,12,12,12,13,13,12,13,12,12,12,12,12,
+	13,13,13,13,13,13,12,13,12,13,12,12,12,13,13,13,
+	13,13,13,13,12,13,12,12,12,
+};
+
+static const static_codebook _44p2_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p2_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p2_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p2_l0_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+	 5, 6, 6, 6, 5, 6, 5, 6, 6,
+};
+
+static const static_codebook _44p2_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p2_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p2_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p2_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p2_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p2_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p2_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p2_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p2_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p2_long[] = {
+	 3, 4, 9, 8, 8,10,13,16, 4, 2, 9, 5, 7,10,14,18,
+	 9, 7, 6, 5, 7, 9,12,16, 7, 5, 5, 3, 5, 8,11,13,
+	 8, 7, 7, 5, 5, 7, 9,11,10,10, 9, 8, 6, 6, 8,10,
+	13,14,13,11, 9, 8, 9,10,17,18,16,14,11,10,10,10,
+};
+
+static const static_codebook _huff_book__44p2_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p2_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p2_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p2_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p2_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p2_p2_0[] = {
+	 1, 4, 4, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
+	 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
+	 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 0,
+	 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
+	 0, 0,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,11,10, 0, 0, 0, 0, 0,
+	 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0,
+	 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,
+	 0, 0, 0, 0, 0,10,10, 0, 0, 0,13,13, 0, 0, 0, 0,
+	 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
+	 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0,
+	 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+	 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11,
+	 0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,11, 0, 0,
+	 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0,
+	 0, 0, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0, 0,
+	 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
+	 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0,11,11, 0,
+	 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0,
+	 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0,
+	 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,
+	10, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,14,13,
+	 0, 0, 0, 0, 0, 0, 0, 0,13,12, 0, 0, 0,13,13, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,
+	11, 0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0,
+	 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0,
+	 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0,
+	 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,
+	12, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0,12,12,
+	 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
+	 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,14,14, 0, 0,
+	 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,
+	12,12, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0,12,
+	12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,14,13,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	11,11, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0, 0,
+	 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
+	 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
+	 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,14,14, 0, 0,
+	 0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0,
+	12,12, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0,
+};
+
+static const static_codebook _44p2_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p2_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p2_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p3_0[] = {
+	 1, 5, 5, 6, 7, 7, 0, 8, 8, 6, 9, 9, 8,11,11, 0,
+	 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 5, 7, 7, 7,10,
+	10, 0,12,12, 8,11,11, 9,12,12, 0,11,12, 0,12,12,
+	 0,15,15, 0,12,12, 0, 6, 6, 0, 6, 6, 0, 7, 7, 0,
+	 7, 7, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
+	 7, 6, 7, 7,10, 9, 9, 0,11,10,10, 9, 9,12,12,12,
+	 0,10,10, 0,11,11, 0,13,13, 0,11,11, 7, 6, 6,10,
+	10,10, 0,11,11,11,11,11,12,12,12, 0,11,11, 0,12,
+	12, 0,15,15, 0,11,11, 0,11,11, 0,11,11, 0,12,12,
+	 0,12,12, 0,14,14, 0,12,12, 0,12,12, 0,15,15, 0,
+	11,11, 0, 8, 8, 0,10,10, 0,11,11, 0,11,11, 0,12,
+	12, 0,12,12, 0,11,11, 0,15,15, 0,11,11, 0, 6, 6,
+	 0,10,10, 0,12,12, 0,10,10, 0,13,13, 0,12,12, 0,
+	13,13, 0,14,14, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p2_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p2_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p3_1[] = {
+	 2, 3, 3, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,
+	 9, 9, 0, 9, 9, 0, 9, 9, 0, 8, 8, 0, 6, 6, 0, 7,
+	 7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
+	 0, 8, 8, 0, 8, 8, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0,
+	 8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 6,
+	 6, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,10,10, 0,10,10,
+	 0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0, 7, 7, 0,
+	10,10, 0,10,10, 0,12,11, 0,12,12, 0,11,11, 0,11,
+	11, 0,12,12, 0,10,10, 0, 7, 7, 0,10,10, 0,10,10,
+	 0,12,12, 0,11,12, 0,11,11, 0,11,11, 0,11,11, 0,
+	10,10, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,10,10, 0,10,
+	10, 0,10, 9, 0,10,10, 0,10,10, 0, 9, 9, 0, 6, 6,
+	 0,10,10, 0,10,10, 0,11,11, 0,12,12, 0,11,11, 0,
+	11,11, 0,12,12, 0,11,11, 0, 7, 7, 0, 9, 9, 0, 9,
+	 9, 0,11,11, 0,11,11, 0,10,10, 0,10,10, 0,11,11,
+	 0, 9, 9,
+};
+
+static const static_codebook _44p2_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p2_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p4_0[] = {
+	 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
+	 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7, 9,11,
+	11, 9,11,11,10,11,11,12,13,13,11,12,12,10,11,11,
+	13,14,14,12,12,12, 6, 6, 6, 8, 6, 6, 8, 7, 7, 9,
+	 7, 7,11,10,10,10, 6, 6, 9, 7, 7,12,10,10,11, 6,
+	 7, 7, 7, 7,11,10,10,12,10,10,11,10,10,14,13,13,
+	13,10,10,12,11,11,15,13,13,14,10,10, 8, 7, 7,12,
+	11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,
+	11,15,15,15,13,12,12, 0,10,10, 0,11,11, 0,11,11,
+	 0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
+	11,11, 7, 8, 8,12,10,10,12,10,10,12,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
+	12,11,11,12,11,11,12,11,11,16,14,14,14,12,12,13,
+	12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
+	12, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,14,14,
+	 0,12,12,
+};
+
+static const static_codebook _44p2_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p2_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p2_p4_1[] = {
+	 3, 4, 4, 8, 8,11, 9, 9,12,12,11,10,10,12,12,12,
+	10,10,11,11,12,12,12,12,12,12,11,11,13,13,12,12,
+	12,13,13,12,10,10,12,12,12,11,11,13,13,12,13,13,
+	13,13,12,11,11,13,13,12,12,12,13,13,12,10,10,12,
+	12,12,11,11,13,13,12,13,13,12,12,12,11,11,13,13,
+	12,13,13,13,13,12,11,11,12,12,12,11,11,12,12,12,
+	13,13,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
+	13,12,12,12,13,13,13,13,12,13,13,12,12,11, 8, 8,
+	10,10,12,11,11,11,11,12,10,10,10,10,13,11,11,10,
+	10,13,11,11,10,10,13,12,12,12,12,13,11,11,11,11,
+	13,12,12,11,11,13,12,12,11,11,13,12,12,12,11,13,
+	12,12,12,12,13,11,11,11,11,13,12,12,11,11,13,11,
+	12,11,11,13,12,12,11,11,14,12,12,11,11,13,11,11,
+	11,11,14,12,12,11,11,13,11,12,10,10,14,12,12,11,
+	11,14,12,12,11,11,14,11,11,11,11,14,12,12,11,11,
+	13,12,12,11,11,14,12,12,11,11,11, 8, 8,10,10,12,
+	 7, 7,10,10,12, 9, 9,11,11,13, 9, 9, 9, 9,13,13,
+	13,10,10,13, 9, 9,12,12,13,13,13,12,12,13, 9, 8,
+	11,11,13,10,10,12,12,14,13,13,11,11,13, 9, 9,11,
+	11,13,13,13,12,12,13, 9, 9,10,10,13,10,10,11,11,
+	13,13,13,10,10,14,10,10,11,11,14,14,14,12,12,13,
+	 9, 9,10,10,13,10,10,11,11,14,13,14,10,10,14,14,
+	14,11,12,14,14,14,14,14,14,13,13,10,10,13,14,14,
+	11,11,14,14,14,10,10,14, 9, 9, 9, 9,14, 9, 9, 9,
+	 9,14,10,10, 9, 9,14,10,10, 8, 8,14,11,11, 8, 8,
+	15,11,11,10,10,15,12,12,10,10,15,10,10,10,10,15,
+	11,11,10,10,15,13,13,10,10,15,11,11,10,10,15,12,
+	12,10,10,15,10,10,10,10,15,11,11,10,10,15,13,13,
+	10,10,15,11,11,10,10,15,12,12,10,10,15,11,11, 9,
+	 9,15,11,11, 9, 9,15,13,13, 9, 9,15,13,13,10,10,
+	15,12,12,10,10,15,13,13,10,10,15,13,12, 9, 9,15,
+	13,13, 9, 9,14,12,12, 9, 9,14,13,13, 9, 9,14,13,
+	13, 9, 9,14,13,13, 7, 7,14,13,13, 8, 8,15,14,14,
+	10,10,15,14,14,10,10,15,14,14,10,10,15,14,14,10,
+	10,15,14,14, 9, 9,15,14,14,10,10,15,14,14,10,10,
+	14,14,14, 9, 9,15,14,14,10,10,14,14,14, 9, 9,15,
+	14,14,10,10,15,14,14,10,10,14,14,14, 9, 9,14,14,
+	14, 9, 9,14,14,14, 8, 8,15,14,14,10,10,15,14,14,
+	11,11,15,14,14, 9, 9,15,14,14, 9, 9,14,14,14, 8,
+	 8,13, 9, 9,12,12,17,11,11,12,12,17,12,12,12,12,
+	17,12,12,11,11,18,15,15,12,12,17,12,12,12,12,17,
+	14,15,13,13,17,12,12,12,12,17,13,13,12,13,17,15,
+	15,12,12,18,13,13,13,13,18,15,15,13,13,18,12,12,
+	12,12,18,13,13,13,13,18,15,15,12,12,18,13,13,12,
+	12,18,15,15,13,13,18,13,13,12,12,17,13,13,12,12,
+	17,15,15,12,12,18,15,15,13,13,18,15,15,13,14,18,
+	15,16,12,12,18,15,15,12,12,18,16,16,12,12,13, 8,
+	 8,10,10,14,15,14,11,11,14,15,15,12,12,15,14,14,
+	12,11,15,15,15,12,12,15,15,15,12,12,15,15,15,13,
+	13,15,15,15,12,12,15,15,15,13,13,15,15,15,13,13,
+	15,15,15,13,13,15,15,16,13,13,15,15,15,12,12,15,
+	15,15,13,13,15,15,15,13,13,15,15,15,13,13,15,15,
+	15,13,13,15,15,14,12,12,15,15,15,12,12,16,15,14,
+	12,12,16,15,15,13,13,16,16,16,13,13,16,15,15,12,
+	12,15,15,15,13,13,15,15,15,12,12,13,12,12,10,10,
+	14,14,14,11,11,15,14,14,12,12,15,14,14,11,11,15,
+	14,14,11,11,15,15,15,13,13,15,14,14,13,13,15,15,
+	15,12,12,15,14,15,13,13,16,15,15,12,12,15,15,15,
+	13,13,16,14,14,13,13,15,15,15,12,12,15,15,15,13,
+	13,16,15,15,12,12,16,15,15,12,12,16,14,14,13,13,
+	15,15,15,11,11,15,15,15,12,12,16,15,15,11,11,16,
+	15,15,13,13,16,14,15,14,14,16,15,15,12,12,16,15,
+	14,12,12,16,15,15,12,12,14,10,10, 9, 9,14,11,11,
+	12,12,14,12,12,13,13,14,12,12,12,12,15,14,14,13,
+	13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,13,
+	15,13,13,14,14,15,14,14,13,13,15,13,13,13,14,15,
+	14,14,15,15,15,12,12,13,13,15,13,13,14,14,15,14,
+	14,13,13,15,13,13,14,14,15,14,14,15,15,15,13,13,
+	12,12,15,13,13,13,13,15,14,14,13,12,15,15,15,14,
+	15,15,15,14,20,20,15,14,14,13,13,15,14,14,13,13,
+	15,14,14,13,13,14,12,12, 9, 9,14,14,14,12,12,14,
+	13,13,12,13,14,14,14,12,12,15,14,14,12,12,15,14,
+	14,14,13,15,14,14,14,14,15,14,14,13,13,15,14,14,
+	13,13,15,15,15,14,14,15,14,14,13,13,15,14,14,14,
+	14,15,14,14,13,13,15,14,14,13,13,15,15,15,15,14,
+	15,15,15,13,13,15,14,14,14,14,15,14,14,13,13,15,
+	14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,14,
+	14,14,14,15,15,15,14,14,15,14,14,13,14,15,15,15,
+	14,14,13,10,10,12,12,17,11,11,12,12,17,12,12,12,
+	12,17,12,12,11,11,17,15,15,12,11,18,13,13,13,13,
+	18,15,15,13,13,17,12,12,12,12,18,13,13,13,13,17,
+	15,15,12,12,17,12,12,12,12,17,15,15,13,13,17,12,
+	12,12,12,17,13,13,12,12,17,15,15,12,12,18,14,13,
+	12,12,18,15,15,13,13,18,13,13,12,12,18,13,13,12,
+	12,18,16,16,12,12,18,16,16,12,12,18,15,15,13,13,
+	18,16,16,12,12,17,15,15,12,12,17,16,16,12,12,13,
+	 8, 8,10,10,14,14,15,12,12,14,15,15,12,12,15,14,
+	14,12,12,15,15,14,12,12,15,15,15,13,13,15,15,15,
+	13,13,15,15,15,12,12,16,15,15,13,13,16,15,15,13,
+	13,15,15,15,12,12,15,15,15,14,14,15,15,15,12,12,
+	15,15,15,13,13,16,15,15,13,13,15,15,15,13,13,16,
+	15,15,13,13,15,15,14,12,12,15,15,15,12,12,16,14,
+	15,13,13,16,15,15,13,13,15,16,15,13,13,16,15,14,
+	13,13,16,15,15,13,13,16,15,15,13,13,13,12,12,11,
+	11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,11,
+	16,14,14,11,11,15,15,15,12,13,16,14,14,13,13,15,
+	15,15,12,12,15,14,14,13,13,16,15,15,12,12,15,15,
+	15,12,12,15,14,14,13,13,15,15,15,12,12,15,14,14,
+	12,12,16,15,15,12,12,16,15,15,12,12,16,14,14,13,
+	13,15,15,15,11,11,15,15,14,12,12,16,15,15,11,11,
+	16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,16,
+	14,14,12,12,16,15,15,11,11,14,10,10, 9, 9,14,11,
+	11,12,12,14,12,12,13,14,14,12,12,12,12,14,14,14,
+	13,13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,
+	13,15,13,13,14,14,15,15,15,14,14,15,13,13,14,14,
+	15,15,15,15,15,15,12,12,13,13,15,13,13,14,14,15,
+	14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,12,
+	12,13,13,15,13,13,13,13,14,14,14,13,13,15,15,15,
+	14,15,15,15,15,21,19,15,14,14,13,13,15,14,14,14,
+	14,14,14,14,13,13,14,12,12, 9, 9,14,14,14,12,12,
+	14,14,13,13,13,14,14,14,12,12,14,14,14,12,12,15,
+	14,14,13,13,15,14,14,14,14,15,14,14,13,13,15,14,
+	14,13,13,15,15,15,15,15,15,14,14,13,13,15,14,14,
+	14,14,15,14,14,13,13,15,14,14,13,13,14,15,15,15,
+	15,15,14,15,13,13,15,14,14,14,14,15,14,14,13,13,
+	15,14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,
+	14,14,14,14,15,15,15,15,15,15,14,14,14,13,14,15,
+	15,14,14,13,10,10,12,12,18,12,12,12,12,17,12,12,
+	12,12,18,13,13,11,11,18,15,14,11,11,17,13,13,13,
+	13,18,15,15,12,12,18,12,12,12,12,17,13,13,12,12,
+	18,15,15,12,12,18,13,13,13,12,18,15,15,13,13,18,
+	13,13,12,12,18,13,13,12,12,18,15,15,12,12,17,13,
+	13,12,12,17,15,15,12,12,17,12,12,11,11,17,13,13,
+	11,11,17,15,15,11,11,18,16,16,12,12,18,15,15,13,
+	13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,
+	13, 8, 8,10,10,14,14,14,11,11,15,15,15,12,12,15,
+	14,14,11,11,16,14,14,12,12,15,15,15,12,12,15,15,
+	15,13,13,15,15,15,12,12,15,15,15,12,12,16,15,15,
+	13,13,15,15,15,12,12,15,15,15,13,13,16,15,15,12,
+	12,15,15,15,12,12,16,15,15,13,13,16,15,15,12,12,
+	15,15,15,13,13,15,14,14,12,12,15,15,15,12,12,16,
+	15,14,12,12,16,15,15,13,13,16,16,16,13,13,16,14,
+	15,13,13,15,15,15,13,13,16,15,15,12,12,13,12,12,
+	10,10,14,14,14,11,11,15,14,14,12,12,15,14,14,11,
+	11,16,14,14,11,11,15,14,15,12,12,15,14,14,13,13,
+	15,15,15,12,12,15,14,14,12,12,15,14,15,12,12,15,
+	15,15,12,12,16,14,14,13,13,15,15,15,11,12,16,14,
+	14,12,12,16,15,15,12,12,15,15,15,12,12,16,14,14,
+	12,12,15,15,15,11,11,15,14,14,11,12,15,15,14,11,
+	11,16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,
+	16,14,14,12,12,16,15,15,11,11,13,10,10, 8, 8,14,
+	12,12,12,12,14,12,12,13,13,14,12,12,12,12,14,14,
+	14,13,13,15,13,13,14,14,15,15,14,15,15,15,13,13,
+	13,13,15,13,13,14,14,15,14,15,14,14,15,13,13,13,
+	13,15,15,15,15,15,15,12,12,13,12,15,13,13,14,14,
+	15,14,14,13,13,15,13,13,14,13,15,15,15,16,16,15,
+	13,13,12,12,15,13,13,13,13,14,14,14,12,12,15,15,
+	15,14,14,15,15,15,20,20,15,14,14,13,13,15,15,14,
+	14,14,15,14,14,13,13,13,12,12, 9, 9,14,13,13,12,
+	12,14,13,13,12,12,14,14,14,12,12,14,14,14,13,13,
+	15,14,14,13,13,15,14,14,14,14,15,15,14,12,12,15,
+	14,14,13,13,15,14,15,14,15,15,14,14,13,13,15,14,
+	14,14,14,15,14,14,12,12,15,14,14,13,13,14,15,14,
+	15,14,15,14,14,13,13,15,14,14,14,14,15,14,14,12,
+	12,15,14,14,13,13,15,15,15,14,14,15,15,15,14,14,
+	16,14,14,14,14,15,15,15,14,14,15,14,14,14,14,14,
+	15,15,14,14,13,13,13,12,13,17,15,15,12,12,17,15,
+	15,12,12,18,15,15,11,11,17,16,16,11,11,18,16,16,
+	13,13,18,17,16,13,13,18,16,16,12,12,18,16,16,12,
+	12,18,17,17,12,12,17,16,16,12,13,17,16,16,12,13,
+	17,16,16,12,12,17,16,16,12,12,18,17,16,12,12,18,
+	16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,
+	15,12,12,17,17,17,11,11,17,17,17,12,12,17,16,16,
+	13,13,18,16,16,11,11,18,16,16,12,12,18,17,16,11,
+	11,14,14,14,10,10,16,15,14,11,11,16,15,15,12,12,
+	16,14,14,12,12,17,14,14,13,13,17,15,15,13,13,17,
+	15,15,14,14,16,15,15,12,12,16,15,15,13,13,18,15,
+	15,14,14,16,15,15,12,12,16,15,15,14,14,16,15,15,
+	12,12,16,15,15,13,13,17,15,15,13,13,17,15,15,13,
+	13,17,15,15,14,14,16,14,14,12,12,17,15,15,12,12,
+	18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
+	15,14,13,13,17,15,15,14,14,17,15,15,13,13,14,12,
+	12,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,
+	11,11,17,14,14,12,12,16,15,14,13,13,16,14,14,13,
+	13,16,15,15,12,12,16,14,14,13,13,17,15,15,13,13,
+	16,15,15,13,13,17,14,14,13,13,16,15,15,12,12,16,
+	14,14,12,12,16,15,15,12,12,17,15,15,12,12,17,14,
+	14,13,13,16,15,15,12,12,16,14,14,12,12,16,15,15,
+	12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,
+	12,17,14,14,12,12,17,15,15,12,12,14,14,14, 8, 8,
+	14,14,14,13,13,14,15,15,14,14,14,14,14,14,14,15,
+	15,15,19,19,15,15,15,14,14,15,15,16,20,19,15,15,
+	15,14,14,15,16,16,15,15,15,15,15,19,19,15,15,15,
+	14,14,15,16,16,19,20,15,15,15,14,14,15,15,15,15,
+	15,15,15,15,19,19,15,15,15,15,15,15,15,16,19,20,
+	15,14,15,14,14,15,15,15,15,15,15,15,15,20,19,15,
+	15,15,21,19,15,16,16,20,20,15,15,14,19,19,15,15,
+	16,20,21,15,15,15,20,19,13,12,12, 9, 9,14,14,14,
+	12,12,14,13,13,13,13,14,14,14,13,13,15,14,14,20,
+	19,15,14,14,14,13,15,14,14,19,19,15,15,14,13,13,
+	15,14,14,14,14,15,15,15,19,20,15,14,14,13,13,15,
+	14,14,20,19,14,15,14,13,13,15,14,14,14,13,15,15,
+	15,19,20,15,15,14,14,14,15,14,14,21,19,15,15,15,
+	13,13,15,14,14,14,14,14,15,15,20,20,15,15,15,21,
+	20,15,14,14,19,20,15,15,15,20,20,15,14,14,19,20,
+	15,15,15,21,19,
+};
+
+static const static_codebook _44p2_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p2_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p2_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p2_p5_0[] = {
+	 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0,
+	13,13,16,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10,
+	10,17,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13,
+	16,16, 8, 8, 8,15,15,12,11,11,16,17, 9, 8, 8,14,
+	14, 0,13,13,18,17, 0,13,13,16,15, 0,14,14,18,17,
+	 0,20,22,18,20, 0,12,12,16,16, 0,16,16,22,20, 0,
+	14,14,16,16, 0,14,14,17,17, 0,22,22,22,19, 0,12,
+	13,16,16, 0,17,17, 0, 0, 0,15,15,16,16, 5, 7, 7,
+	13,13, 9, 9, 9,15,14,10,10,10,14,14, 0,21,21,18,
+	17, 0,21,22,18,17, 9,10,10,14,14,12,12,12,17,17,
+	12,10,10,14,14, 0,19,21,18,17, 0,20,22,18,18,11,
+	10,10,14,14,14,13,13,18,17,12,11,11,14,14, 0,22,
+	19,17,18, 0,20, 0,18,17, 0,22,21,17,17, 0, 0, 0,
+	 0, 0, 0,20,22,17,17, 0,22, 0,21,19, 0,22, 0,18,
+	18, 0, 0,22,18,19, 0, 0, 0, 0, 0, 0,19,21,17,17,
+	 0, 0, 0,20,20, 0, 0, 0,18,18, 6, 6, 6,13,12, 8,
+	 6, 6,11,11, 8, 6, 6,13,13, 0, 9, 9,11,11, 0,11,
+	11,14,14, 9, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
+	13,13, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
+	14,13, 9, 9,13,13,10, 6, 6,13,12, 0,11,11,15,15,
+	 0,10,10,13,13, 0,12,12,15,15, 0,19, 0,17,17, 0,
+	 9, 9,13,13, 0,13,14,19,20, 0,11,11,13,13, 0,11,
+	11,14,14, 0,19,20,17,18, 0,10,10,13,13, 0,15,15,
+	21,19, 0,12,12,13,13, 0,10,10,12,13, 0,11,11,15,
+	15, 0,11,11,15,15, 0,15,15,22, 0, 0,16,17,22, 0,
+	 0,11,11,15,15, 0,14,14,18,17, 0,11,11,15,16, 0,
+	15,15,22,21, 0,16,16, 0,20, 0,12,12,16,15, 0,15,
+	14,19,19, 0,11,11,16,16, 0,15,15,21, 0, 0,16,15,
+	 0, 0, 0,16,16,22,21, 0, 0, 0, 0, 0, 0,15,15,20,
+	20, 0,18,18, 0, 0, 0,16,17, 0, 0, 0,17,17, 0,22,
+	 0, 0, 0, 0, 0, 0,15,15,21,22, 0,20,18, 0, 0, 0,
+	18,17,22, 0, 0,10,10,12,11, 0,10,10,10,10, 0,11,
+	11,12,12, 0,11,11, 9, 9, 0,13,13,12,12, 0,11,11,
+	12,12, 0,13,13,12,12, 0,10,10,12,12, 0,13,12,13,
+	13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
+	 0,10,10,12,12, 0,13,13,13,14, 0,12,12,12,12, 0,
+	13,14,14,14, 0,20,21,15,15, 0,12,11,12,12, 0,15,
+	16,20,22, 0,13,12,11,11, 0,13,13,14,13, 0,20, 0,
+	16,15, 0,12,12,12,12, 0,16,16,22,21, 0,13,13,12,
+	12, 6, 7, 7,16,16,11, 9, 9,15,15,12, 9, 9,16,16,
+	 0,13,13,14,14, 0,14,14,16,17,10, 9, 9,16,16,14,
+	12,12,16,16,12, 9, 9,15,15, 0,13,13,18,18, 0,13,
+	13,15,16,12,10,10,17,18,15,12,12,17,17,13, 9, 9,
+	16,16, 0,13,13,17,18, 0,14,14,16,16, 0,15,15,18,
+	18, 0,22, 0,20,20, 0,12,12,16,16, 0,16,16,20,22,
+	 0,14,14,16,16, 0,15,14,18,18, 0, 0,22,19,21, 0,
+	13,13,16,17, 0,17,17,22,22, 0,15,15,16,16, 7, 7,
+	 7,14,14,11,10,10,15,15,12,10,10,15,14, 0,22, 0,
+	18,18, 0, 0,21,17,18,11,10,10,15,15,14,12,12,17,
+	17,14,11,11,15,15, 0,22,20,18,18, 0, 0,20,18,17,
+	12,10,10,16,16,17,14,14,19,18,14,11,11,15,15, 0,
+	21,22,19,19, 0,21,22,18,18, 0,22, 0,19,21, 0, 0,
+	 0, 0, 0, 0,22,22,18,17, 0, 0, 0,21,20, 0,22,22,
+	20,19, 0, 0,22,20,20, 0, 0, 0, 0, 0, 0,20,21,17,
+	17, 0, 0,22,21,21, 0, 0, 0,18,18,10, 9, 9,14,14,
+	13,10,10,13,13,13,10,11,14,14, 0,13,13,12,12, 0,
+	15,15,16,16,13,10,10,15,15,15,12,12,14,14,15,10,
+	10,14,15, 0,14,14,16,15, 0,14,14,15,15,13,10,10,
+	15,15,18,13,13,15,15,15,10,10,14,15, 0,14,14,16,
+	16, 0,14,14,15,15, 0,15,15,16,16, 0,22, 0,18,18,
+	 0,12,13,14,14, 0,17,17,22, 0, 0,14,14,14,14, 0,
+	15,15,16,16, 0,22, 0,18,17, 0,13,13,14,14, 0,19,
+	18,21,22, 0,15,15,14,14, 0,11,11,13,13, 0,12,12,
+	16,16, 0,12,12,16,16, 0,15,16,21, 0, 0,16,17, 0,
+	22, 0,12,12,16,16, 0,14,14,17,18, 0,11,11,16,16,
+	 0,15,15,21,22, 0,16,16, 0, 0, 0,12,12,16,16, 0,
+	15,15, 0,19, 0,12,12,16,17, 0,16,16,22, 0, 0,16,
+	16, 0,22, 0,17,17, 0,22, 0, 0, 0, 0, 0, 0,15,15,
+	20,19, 0,18,18, 0, 0, 0,17,18, 0, 0, 0,17,17, 0,
+	 0, 0, 0, 0, 0, 0, 0,15,15, 0,22, 0,20,18, 0, 0,
+	 0,18,18,22,22, 0,11,11,14,14, 0,12,12,14,14, 0,
+	12,12,15,15, 0,13,13,14,14, 0,14,14,17,16, 0,12,
+	12,16,16, 0,14,14,16,16, 0,11,11,15,15, 0,13,13,
+	16,16, 0,13,13,15,15, 0,12,12,15,15, 0,15,14,16,
+	16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,15,15,
+	 0,15,15,17,17, 0, 0, 0,19,18, 0,13,12,15,15, 0,
+	16,16, 0, 0, 0,14,14,15,15, 0,14,14,16,17, 0,22,
+	 0,18,18, 0,13,13,15,15, 0,17,17, 0, 0, 0,14,14,
+	15,15, 8, 8, 8,16,16,12,10,10,16,16,13, 9, 9,16,
+	16, 0,14,14,17,17, 0,14,14,17,16,12,10,10,18,17,
+	14,11,11,18,18,14, 9,10,16,16, 0,13,13,18,19, 0,
+	14,13,16,16,12, 9, 9,16,16,17,13,13,17,17,14, 9,
+	 9,15,15, 0,14,14,19,20, 0,13,13,15,15, 0,15,15,
+	18,19, 0, 0,22,22,22, 0,13,13,17,17, 0,16,16,19,
+	21, 0,14,14,16,16, 0,14,14,18,18, 0, 0, 0, 0, 0,
+	 0,13,13,16,16, 0,18,18, 0, 0, 0,15,15,16,16, 8,
+	 7, 7,14,14,12,10,10,15,15,13,10,10,15,14, 0,22,
+	 0,18,18, 0,22, 0,18,18,12,10,10,16,15,15,12,12,
+	17,17,14,11,11,15,15, 0,20,21,19,18, 0, 0, 0,17,
+	18,13,11,11,15,15,16,13,13,18,18,15,11,11,14,14,
+	 0,22,21,19,19, 0,21,22,18,18, 0,22,22,20,18, 0,
+	 0, 0, 0, 0, 0,22,19,17,17, 0, 0, 0,22,21, 0, 0,
+	22,19,17, 0, 0,22,19,19, 0, 0, 0, 0, 0, 0,22,21,
+	18,17, 0, 0, 0,22, 0, 0, 0, 0,19,19, 0,10,10,14,
+	14, 0,11,11,15,14, 0,11,11,15,15, 0,14,14,15,14,
+	 0,15,15,16,16, 0,11,11,16,16, 0,13,13,16,16, 0,
+	11,11,15,15, 0,14,14,17,16, 0,14,14,15,15, 0,11,
+	11,16,16, 0,14,13,15,15, 0,11,11,15,15, 0,15,15,
+	17,17, 0,14,14,15,14, 0,16,16,17,17, 0, 0,22,18,
+	18, 0,13,13,15,15, 0,17,17,22, 0, 0,15,15,15,14,
+	 0,15,16,16,17, 0, 0,22,18,19, 0,13,13,15,15, 0,
+	20,18,21, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,
+	12,16,16, 0,12,12,16,15, 0,15,16,22,22, 0,17,17,
+	 0, 0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,
+	16, 0,15,16,22,20, 0,16,16, 0,22, 0,12,12,16,16,
+	 0,15,15,18,20, 0,11,11,16,16, 0,15,15, 0, 0, 0,
+	16,16, 0, 0, 0,17,17,22, 0, 0, 0, 0, 0, 0, 0,15,
+	15, 0,21, 0,18,18, 0, 0, 0,17,16, 0, 0, 0,17,17,
+	22,22, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,20,22, 0,
+	 0, 0,18,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
+	 0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
+	13,12,16,16, 0,14,14,16,16, 0,12,11,16,16, 0,14,
+	14,17,17, 0,14,14,16,16, 0,12,12,16,16, 0,15,15,
+	17,16, 0,11,11,15,16, 0,14,14,17,17, 0,14,14,16,
+	16, 0,15,15,18,18, 0, 0, 0,22,19, 0,13,13,15,16,
+	 0,16,17, 0, 0, 0,14,14,16,16, 0,15,15,18,17, 0,
+	 0, 0,20,20, 0,13,13,16,15, 0,17,17,22,22, 0,14,
+	14,15,15, 0,11,11,16,16, 0,13,13,16,17, 0,13,13,
+	17,18, 0,16,16,17,17, 0,17,17,18,18, 0,12,12,17,
+	17, 0,16,15,18,18, 0,12,12,16,16, 0,16,16,18,18,
+	 0,15,15,17,17, 0,12,12,17,17, 0,16,16,19,18, 0,
+	12,12,16,17, 0,16,16,19,19, 0,15,16,16,17, 0,16,
+	16,19,17, 0, 0, 0,20,22, 0,13,13,16,16, 0,19,18,
+	21, 0, 0,15,15,16,16, 0,16,16,18,18, 0, 0, 0,22,
+	21, 0,14,14,16,16, 0,21,19,21,22, 0,16,16,16,16,
+	 0, 9, 9,14,14, 0,13,13,15,15, 0,14,14,15,15, 0,
+	 0,20,18,19, 0, 0,22,18,18, 0,12,12,15,15, 0,15,
+	15,17,18, 0,14,13,14,14, 0,20, 0,18,18, 0,21, 0,
+	18,17, 0,13,13,15,16, 0,17,17,18,18, 0,14,14,15,
+	15, 0,22,22,20,19, 0,20,21,18,18, 0,20,22,19,19,
+	 0, 0, 0, 0, 0, 0,20,20,17,17, 0, 0,22,22,21, 0,
+	22, 0,18,18, 0,20,22,19,19, 0, 0, 0, 0, 0, 0,21,
+	21,17,18, 0, 0, 0,21,20, 0, 0,22,19,18, 0,18,18,
+	15,15, 0,22,21,17,16, 0, 0,22,17,17, 0,20,22,18,
+	18, 0, 0,22,20,20, 0,21,19,16,16, 0,21,21,18,18,
+	 0,19,19,17,17, 0, 0,22,19,19, 0,22,20,17,17, 0,
+	21,19,16,16, 0,22,22,19,18, 0,19,20,16,16, 0,22,
+	21,19,21, 0,21,22,17,18, 0,21,20,18,18, 0, 0, 0,
+	19,20, 0,20,19,16,16, 0,22,22, 0, 0, 0,21,21,17,
+	16, 0,22,20,19,18, 0, 0, 0,20,20, 0,20,19,16,16,
+	 0, 0, 0, 0, 0, 0,21,22,17,17, 0,11,11,13,13, 0,
+	13,13,15,16, 0,13,13,16,16, 0,17,18,21, 0, 0,17,
+	18, 0, 0, 0,12,12,15,16, 0,15,15,19,18, 0,12,12,
+	16,16, 0,17,17,22, 0, 0,17,17, 0,22, 0,12,12,17,
+	16, 0,16,16,19,20, 0,12,12,16,16, 0,17,17, 0, 0,
+	 0,17,17, 0,21, 0,17,16,22, 0, 0, 0, 0, 0, 0, 0,
+	15,15,20,22, 0,20,18, 0, 0, 0,18,18, 0, 0, 0,17,
+	17,21, 0, 0, 0, 0, 0, 0, 0,15,15,21,22, 0,19,20,
+	22, 0, 0,19,18, 0, 0, 0,14,14,18,18, 0,16,16,22,
+	20, 0,16,16,22,19, 0,17,17,20,22, 0,19,19, 0, 0,
+	 0,15,15,20, 0, 0,18,21, 0,20, 0,15,15,21,20, 0,
+	18,17, 0, 0, 0,17,17, 0,22, 0,15,15,19,19, 0,19,
+	18, 0, 0, 0,15,15,20, 0, 0,18,18,22,22, 0,17,17,
+	 0,20, 0,18,18, 0, 0, 0, 0,22, 0, 0, 0,15,15,19,
+	20, 0,20,19, 0, 0, 0,17,17,20,21, 0,17,18,20,22,
+	 0, 0, 0, 0,22, 0,15,15,20,20, 0,22,20, 0, 0, 0,
+	17,18,20, 0, 0,12,12,17,16, 0,14,14,17,17, 0,13,
+	13,17,17, 0,16,16,18,18, 0,17,16,17,17, 0,13,13,
+	17,17, 0,15,16,18,18, 0,13,13,16,16, 0,16,16,18,
+	18, 0,16,16,17,16, 0,13,13,16,16, 0,17,17,18,17,
+	 0,12,12,15,16, 0,17,17,19,19, 0,16,16,16,16, 0,
+	16,17,19,18, 0, 0, 0,21,22, 0,14,14,16,16, 0,18,
+	18, 0,22, 0,16,16,16,16, 0,16,16,18,17, 0, 0, 0,
+	21,20, 0,14,14,16,16, 0,21,22,22, 0, 0,16,16,16,
+	16, 0, 9, 9,14,13, 0,13,14,15,16, 0,14,13,15,14,
+	 0,22, 0,18,18, 0,21, 0,17,18, 0,13,13,15,15, 0,
+	15,16,18,17, 0,14,14,15,14, 0,20,22,18,18, 0,22,
+	21,17,17, 0,13,13,15,15, 0,17,17,19,19, 0,14,14,
+	14,14, 0, 0,22,18,18, 0, 0,22,17,17, 0, 0,22,19,
+	20, 0, 0, 0, 0, 0, 0,21,20,17,16, 0, 0, 0,21,22,
+	 0, 0, 0,18,19, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0,
+	22, 0,17,17, 0, 0, 0,20,22, 0, 0, 0,18,19, 0,18,
+	19,16,16, 0,22,20,17,17, 0,22,22,17,18, 0,22,22,
+	18,17, 0, 0,22,18,19, 0,20,20,17,18, 0, 0,22,19,
+	18, 0,22,22,17,17, 0,22, 0,19,19, 0, 0,22,18,18,
+	 0,20,22,17,17, 0, 0,22,18,18, 0,19,20,17,17, 0,
+	22, 0,20,19, 0,22,21,17,17, 0, 0, 0,18,18, 0, 0,
+	 0,22,19, 0,20, 0,17,17, 0,22, 0, 0,22, 0, 0,20,
+	17,18, 0,22, 0,19,19, 0, 0, 0, 0,19, 0,19,21,17,
+	17, 0, 0, 0, 0, 0, 0,20,21,17,16, 0,11,11,13,13,
+	 0,13,13,16,16, 0,13,13,15,16, 0,17,17,21,22, 0,
+	17,18, 0, 0, 0,12,12,16,16, 0,15,15,18,18, 0,13,
+	13,16,16, 0,17,16,21,21, 0,17,17, 0, 0, 0,13,13,
+	16,16, 0,16,16,19,18, 0,13,13,16,16, 0,17,17, 0,
+	22, 0,17,18,20,22, 0,17,18, 0, 0, 0, 0, 0, 0, 0,
+	 0,15,15,20, 0, 0,18,19, 0, 0, 0,17,17, 0, 0, 0,
+	18,17,22, 0, 0, 0, 0, 0, 0, 0,15,16,21,20, 0,20,
+	20, 0, 0, 0,18,19, 0, 0, 0,15,15,22,22, 0,17,16,
+	20,22, 0,17,17,20,22, 0,18,18, 0,21, 0,19,18, 0,
+	 0, 0,16,16,20,20, 0,19,19,22, 0, 0,15,16,21,22,
+	 0,18,19,22, 0, 0,17,18, 0, 0, 0,16,16,22, 0, 0,
+	19,19, 0,21, 0,15,16,20, 0, 0,18,18, 0,22, 0,18,
+	17, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
+	22,21, 0,20,21, 0, 0, 0,17,18,22, 0, 0,18,18, 0,
+	 0, 0, 0, 0, 0, 0, 0,16,16,20,19, 0,22,21, 0, 0,
+	 0,18,18,22,22,
+};
+
+static const static_codebook _44p2_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p2_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p2_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p2_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p2_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p2_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p2_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p6_0[] = {
+	 1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,11,11, 9,
+	 8, 8, 7, 8, 9,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
+	10,10,10,10,10,10,10,14,14,14,12,11,11,10,11,11,
+	15,14,14,13,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 8,
+	 7, 7,11,10,10, 9, 7, 7, 9, 7, 7,12,10,10,10, 7,
+	 7, 6, 8, 7,12,10,10,12,10,10,11,10,10,15,14,13,
+	13,10,10,11,10,10,16,14,14,14,10,10, 7, 7, 7,12,
+	11,11,12,11,11,11,11,11,16,14,14,13,12,12,11,11,
+	11,17,15,15,14,12,12,10, 9, 9,13,11,11,13,11,11,
+	12,11,11,16,14,13,14,11,11,12,11,11,17,15,14,14,
+	11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,13,
+	14,13,10,10,11,10,10,17,14,14,14,10,10, 7, 7, 7,
+	12,11,11,12,11,11,12,11,11,15,14,15,14,12,12,12,
+	11,11,17,15,15,14,12,12,10,10, 9,13,11,11,13,11,
+	11,13,11,11,16,14,14,14,11,11,13,11,11,16,15,15,
+	15,11,11,
+};
+
+static const static_codebook _44p2_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p2_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p6_1[] = {
+	 2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 8,
+	 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 9, 8,
+	 8, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
+	10, 8, 9,10, 8, 8, 7, 6, 6, 8, 6, 6, 9, 6, 6, 9,
+	 7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 9, 8, 9, 7,
+	 7, 7, 7, 7,11, 8, 8,11, 9, 9,10, 9, 9,12, 9, 9,
+	12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,10,
+	 9, 9,10, 9, 9,10, 9, 9,11,10,11,11, 9, 9,11, 9,
+	 9,11,11,11,11, 9, 9,10, 8, 8,11, 9, 9,10, 9, 9,
+	11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,12,10,10,11,
+	 9, 9, 8, 8, 8,11, 9, 9,12, 9, 9,11, 9, 9,12, 9,
+	 9,12, 8, 8,12, 9, 9,12, 9,10,12, 8, 8, 9, 7, 7,
+	11, 9, 9,11,10,10,11, 9, 9,11,11,11,11, 9, 9,11,
+	10,10,12,11,11,11, 9,10,10, 9, 9,11, 9, 9,11,10,
+	10,11,10,10,11,11,11,11, 9, 9,11, 9,10,11,11,11,
+	11, 9, 9,
+};
+
+static const static_codebook _44p2_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p2_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p2_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p2_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p2_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p2_p7_1[] = {
+	 1, 9, 9, 6, 9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,
+};
+
+static const static_codebook _44p2_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p2_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p2_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p2_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p2_p7_2[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p2_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p2_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p2_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p2_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p2_p7_3[] = {
+	 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p2_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p2_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p2_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p2_short[] = {
+	 4, 4,12, 9, 8,12,15,17, 4, 2,11, 6, 5, 9,13,15,
+	11, 7, 8, 7, 7,10,14,13, 8, 5, 7, 5, 5, 8,12,12,
+	 8, 4, 7, 4, 3, 6,11,12,11, 8, 9, 7, 6, 8,11,12,
+	15,13,14,12, 9, 7,10,13,16,12,17,12, 7, 5, 8,11,
+};
+
+static const static_codebook _huff_book__44p2_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p2_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p3_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p3_l0_0[] = {
+	 1, 4, 4, 8, 8, 8, 8, 9, 9,10,10,10,10, 4, 6, 5,
+	 8, 7, 9, 9, 9, 9,10, 9,11, 9, 4, 5, 6, 7, 8, 9,
+	 9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9,
+	12,10,12,10, 8, 8, 9, 8, 9, 9,10, 9,11,10,12,10,
+	12, 9,10,10,11,10,12,11,12,11,12,12,12,12, 9,10,
+	10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,
+	12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,
+	12,12,12,12,12,11,12,12,12,12,12,13,12,13,12,13,
+	12,12,11,12,12,12,12,12,12,13,12,12,12,12,12,12,
+	12,12,13,13,12,13,12,13,12,13,12,12,12,13,12,13,
+	12,13,12,13,12,13,12,12,12,
+};
+
+static const static_codebook _44p3_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p3_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p3_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p3_l0_1[] = {
+	 3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
+	 5, 6, 5, 6, 5, 6, 5, 6, 5,
+};
+
+static const static_codebook _44p3_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p3_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p3_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p3_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p3_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p3_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p3_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p3_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p3_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p3_long[] = {
+	 3, 4,13, 9, 9,12,15,17, 4, 2,18, 5, 7,10,14,18,
+	11, 8, 6, 5, 6, 8,11,14, 8, 5, 5, 3, 5, 8,11,13,
+	 9, 6, 7, 5, 5, 7, 9,10,11,10, 9, 8, 6, 6, 8,10,
+	14,14,11,11, 9, 8, 9,10,17,17,14,13,10, 9,10,10,
+};
+
+static const static_codebook _huff_book__44p3_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p3_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p3_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p3_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p3_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p3_p2_0[] = {
+	 3, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,
+	11,11, 0, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,10,11, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0,
+	 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,12,12, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
+	 5, 5, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5,
+	 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
+	 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 9, 9, 0,
+	 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0,
+	 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0,
+	 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0,
+	 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,
+	 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 7, 7,
+	 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0,
+	 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+	 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,11,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 7,
+	 7, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0,10,10, 0, 0, 0, 9, 9, 0, 0, 0,10,10,
+	 0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,11,
+	11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,12,12,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0,
+	 9, 9, 0, 0, 0,10,10, 0, 0, 0,12,12, 0, 0, 0, 0,
+	 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
+	 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0,
+};
+
+static const static_codebook _44p3_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p3_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p3_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p3_0[] = {
+	 1, 5, 5, 5, 8, 8, 0, 8, 8, 6, 9, 9, 8,10,10, 0,
+	 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10,
+	10, 0,12,12, 7,11,11, 9,12,12, 0,12,12, 0,13,13,
+	 0,15,15, 0,12,12, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0,
+	 8, 8, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
+	 7, 5, 7, 7, 9, 9, 9, 0,11,10, 9, 9, 9,11,12,12,
+	 0,10,10, 0,11,11, 0,13,13, 0,11,11, 6, 7, 7, 9,
+	10,10, 0,12,12,10,11,11,11,12,12, 0,12,12, 0,13,
+	13, 0,15,15, 0,12,12, 0,10,10, 0,11,11, 0,11,11,
+	 0,12,12, 0,13,13, 0,11,11, 0,12,12, 0,15,15, 0,
+	11,11, 0, 8, 8, 0,10,10, 0,12,12, 0,11,11, 0,12,
+	12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0, 7, 7,
+	 0,10,10, 0,12,12, 0,10,10, 0,12,13, 0,12,12, 0,
+	13,13, 0,14,14, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p3_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p3_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p3_1[] = {
+	 3, 4, 4, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0,
+	 8, 8, 0, 9, 9, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8,
+	 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
+	 0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 6, 6, 0, 7, 7, 0,
+	 7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 6,
+	 5, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 9, 9,
+	 0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 6, 6, 0,
+	 9,10, 0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0,10,
+	10, 0,11,11, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 8, 8,
+	 0, 9, 9, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,
+	 7, 7, 0, 8, 8, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 9,
+	 9, 0, 7, 7, 0, 7, 7, 0, 9, 9, 0, 6, 6, 0, 6, 6,
+	 0,10,10, 0,10,10, 0,10,10, 0,12,12, 0, 9, 9, 0,
+	10,10, 0,12,12, 0, 9, 9, 0, 8, 8, 0, 7, 7, 0, 8,
+	 8, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9,
+	 0, 7, 7,
+};
+
+static const static_codebook _44p3_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p3_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p4_0[] = {
+	 1, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8,10,11,11, 9,
+	 8, 8, 8, 8, 8,11,11,11,10, 8, 8, 5, 7, 7, 9,11,
+	11,10,11,11,10,11,11,12,13,14,11,12,12,10,11,11,
+	13,14,14,12,12,12, 5, 6, 6, 8, 6, 6, 8, 7, 7, 8,
+	 7, 7,11,10,10,10, 7, 7, 9, 7, 7,12,11,11,11, 7,
+	 7, 7, 7, 7,11,10,10,12,10,10,11,10,10,15,13,13,
+	13,10,10,12,11,11,15,13,13,14,11,11, 7, 7, 7,11,
+	11,11,12,11,11,12,11,11,14,14,14,14,12,12,12,12,
+	12,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,11,12,
+	 0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
+	11,11, 8, 8, 8,12,10,10,12,10,10,13,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
+	12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,
+	12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
+	12, 0,12,12, 0,15,15, 0,12,12, 0,13,13, 0,14,15,
+	 0,12,12,
+};
+
+static const static_codebook _44p3_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p3_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p3_p4_1[] = {
+	 3, 4, 5, 8, 8,12,10,10,12,12,12,10,10,12,12,13,
+	11,11,12,12,13,12,12,12,12,13,10,10,13,13,13,13,
+	13,13,13,13,10,10,13,13,13,11,11,13,13,14,13,13,
+	12,12,13,10,10,13,13,13,13,13,13,13,13,10,10,12,
+	12,13,11,11,13,13,13,13,13,12,12,13,12,12,13,13,
+	13,13,13,13,13,14,11,11,12,12,14,12,12,13,12,14,
+	14,14,12,12,13,14,14,13,13,14,13,13,13,13,14,14,
+	14,12,12,14,13,13,13,13,14,14,14,12,12,12, 8, 8,
+	11,11,12,12,12,11,11,12,11,11,10,10,13,12,12,10,
+	10,13,12,12,10,10,13,12,12,12,12,14,12,12,12,12,
+	13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,
+	12,12,12,12,13,12,12,12,12,13,13,13,11,11,14,12,
+	12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,
+	12,11,14,13,13,11,11,14,13,12,11,11,14,13,13,11,
+	11,14,13,13,12,12,14,12,12,12,12,15,13,13,12,12,
+	14,12,12,11,11,14,13,13,11,11,12, 9, 9,10,10,12,
+	 7, 7,11,11,12, 9, 9,12,12,13,10,10,10,10,14,14,
+	14,11,11,13, 9, 9,12,12,14,14,14,12,12,13, 8, 8,
+	11,11,14, 9, 9,12,12,14,14,14,11,11,13, 9, 9,12,
+	12,14,14,14,12,12,14, 8, 8,11,11,14, 9, 9,12,12,
+	14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,
+	 9, 9,11,11,14,10,10,12,12,14,14,14,11,11,14,14,
+	15,12,12,15,14,14,14,14,15,14,14,11,11,14,14,14,
+	12,12,14,14,14,11,11,14,11,11,10,10,14,10,10,10,
+	10,14,10,10,10,10,15,11,11, 9, 9,14,12,12, 9, 9,
+	15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,
+	11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,
+	13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,
+	11,11,15,12,12,11,11,15,13,13,11,11,15,11,11,10,
+	10,15,12,12,10,10,15,13,13,10,10,15,14,14,11,11,
+	15,13,13,11,11,15,14,14,10,11,15,13,13,10,10,15,
+	13,14,10,10,14,13,13,10,10,14,13,13,10,10,14,13,
+	13,10,10,14,13,13, 9, 9,14,14,14, 9, 9,15,14,14,
+	11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,
+	11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,
+	14,14,14,10,10,15,14,14,10,10,14,14,14,10,10,15,
+	14,14,11,11,15,14,14,11,11,14,14,14,10,10,15,14,
+	14,10,10,14,14,14, 9, 9,15,15,15,11,11,15,14,14,
+	12,12,15,15,14,10,10,15,14,14,10,10,14,15,15, 9,
+	 9,14,10,10,12,12,17, 9, 9,12,12,17,10,10,13,13,
+	17,11,11,12,12,18,14,14,12,12,17,10,10,13,13,17,
+	14,14,12,12,17, 9, 9,12,12,17,11,11,12,12,17,14,
+	14,12,12,18,10,10,13,13,18,14,14,13,13,18, 9, 9,
+	12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,
+	13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,
+	17,14,14,12,12,18,15,15,13,13,18,14,14,14,14,18,
+	15,15,12,12,18,14,14,12,12,18,15,15,12,12,13, 7,
+	 7,11,11,14,15,15,11,11,14,15,15,12,12,14,15,15,
+	11,11,15,15,15,11,11,14,15,15,12,12,14,15,15,12,
+	12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,
+	14,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,
+	15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,
+	15,12,12,14,15,14,12,12,14,15,15,11,11,15,14,14,
+	12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,
+	12,15,15,15,12,12,15,15,15,12,12,13,13,13,11,10,
+	14,14,15,11,11,14,14,14,12,12,15,14,14,10,10,15,
+	15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,
+	15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,
+	12,12,14,14,14,12,12,14,15,15,11,11,14,15,15,12,
+	12,15,15,15,11,11,15,15,15,12,12,15,14,14,12,12,
+	14,15,15,11,11,14,15,15,11,11,15,15,15,10,10,15,
+	15,16,12,12,15,15,15,14,14,15,15,15,11,11,15,15,
+	15,12,12,15,15,15,11,11,14,11,11,10,10,15, 9, 9,
+	12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,12,
+	12,15,10,10,13,13,15,14,14,12,12,15, 9, 9,12,12,
+	15,10,10,13,13,15,13,13,12,11,15,10,10,12,12,15,
+	14,14,12,12,15, 9, 9,11,11,15,11,11,12,12,15,13,
+	13,11,11,15,11,11,13,13,15,13,14,13,14,15,11,11,
+	11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,13,
+	13,15,14,14,20,20,15,14,14,12,12,15,14,14,12,12,
+	15,14,14,11,11,14,13,13,10,10,14,13,13,12,12,14,
+	14,13,12,12,15,14,14,12,12,15,14,14,11,11,15,14,
+	14,12,12,15,14,14,13,13,15,14,14,12,11,15,14,14,
+	11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,
+	13,15,14,14,12,11,15,14,14,12,12,15,14,14,13,13,
+	15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,
+	14,14,12,12,15,15,15,13,13,15,15,15,13,13,15,14,
+	14,13,13,15,15,15,13,13,15,14,15,12,12,15,15,15,
+	13,13,14,10,10,12,13,17, 9, 9,12,12,17,10,10,13,
+	13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,
+	18,14,14,12,12,17, 9, 9,12,12,18,10,11,13,13,18,
+	14,14,12,12,17,10,10,12,12,17,14,14,12,12,17, 9,
+	 9,12,12,17,11,11,12,12,17,14,14,12,12,18,11,11,
+	12,12,18,14,14,13,13,18,11,11,12,12,18,11,11,12,
+	12,18,14,14,12,12,18,15,15,12,12,18,14,14,13,13,
+	18,15,15,12,12,17,14,14,12,12,17,15,15,12,12,13,
+	 7, 7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,
+	14,12,12,15,15,15,12,11,14,15,15,12,12,14,15,15,
+	12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,13,
+	13,14,15,15,11,11,14,15,15,13,12,14,15,15,11,11,
+	14,15,15,11,11,15,15,15,13,13,14,15,15,12,12,15,
+	15,15,12,12,15,15,15,11,11,15,15,15,11,11,15,15,
+	15,12,12,15,15,15,13,13,15,16,16,12,12,15,15,15,
+	12,13,15,15,15,12,12,15,15,15,12,12,13,13,13,11,
+	11,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,
+	15,14,14,11,11,14,15,15,12,12,14,14,14,12,12,14,
+	15,15,11,11,14,15,14,12,12,15,14,14,11,11,14,15,
+	15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,
+	12,12,15,15,14,11,11,15,15,15,12,12,15,14,14,12,
+	12,14,15,15,11,11,14,15,14,11,11,15,15,15,10,10,
+	15,15,15,12,12,15,14,14,14,13,15,15,15,11,11,15,
+	15,15,11,11,15,15,15,10,10,14,11,11,10,10,15, 9,
+	 9,12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,
+	12,12,15,10,10,13,13,15,13,13,12,12,15, 9, 9,12,
+	12,15,11,11,13,13,15,14,14,12,12,15,10,10,13,13,
+	15,13,14,12,12,15, 9, 9,12,12,15,10,10,13,13,15,
+	13,13,11,11,15,11,11,13,13,15,14,14,13,13,15,10,
+	10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,
+	13,13,15,14,14,21,20,15,14,14,11,11,15,14,14,12,
+	12,15,14,14,11,11,14,13,13,10,10,14,13,13,11,11,
+	15,14,14,12,12,15,14,14,12,12,14,14,14,12,12,15,
+	14,14,12,12,15,14,14,13,13,14,14,14,11,11,15,14,
+	14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,
+	13,13,14,14,14,11,11,15,14,14,11,11,14,14,14,13,
+	13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
+	15,14,14,12,12,14,14,14,13,13,15,15,15,13,13,16,
+	14,14,12,13,15,15,15,13,13,15,14,14,12,12,15,15,
+	15,13,13,15,11,11,13,12,18,10,10,12,12,17,11,11,
+	12,12,18,12,12,11,11,18,14,14,12,12,18,11,11,13,
+	13,17,14,14,12,12,18,10,10,12,12,18,12,12,12,12,
+	18,14,15,12,12,18,11,11,13,13,18,14,14,12,12,17,
+	10,10,12,12,18,11,11,12,12,18,15,14,12,12,17,12,
+	12,12,12,17,14,14,12,12,17,11,11,11,11,17,12,12,
+	12,11,17,15,15,11,11,18,15,15,12,12,18,14,15,13,
+	13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,
+	14, 9, 9,11,11,14,15,15,11,11,15,15,15,11,11,15,
+	15,15,12,11,15,15,15,12,12,15,15,15,11,11,15,15,
+	15,13,13,14,15,15,11,11,15,15,15,11,11,15,15,15,
+	13,13,15,15,15,11,11,15,15,15,13,13,15,15,15,11,
+	11,15,15,15,11,11,15,15,15,13,13,15,15,15,12,12,
+	15,15,15,13,13,15,15,14,11,11,15,15,15,12,12,15,
+	15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,
+	15,12,12,15,15,15,13,12,15,15,15,12,12,13,12,12,
+	11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,
+	11,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
+	14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,
+	14,14,12,12,15,14,14,12,12,14,15,15,11,11,15,14,
+	14,12,12,15,14,14,11,11,15,15,15,12,12,15,14,14,
+	12,12,15,15,15,11,11,15,14,14,11,11,15,14,15,11,
+	11,15,15,15,12,12,15,14,14,13,13,16,15,15,11,11,
+	15,14,14,12,12,15,15,15,11,11,14,11,11, 9, 9,15,
+	10,10,12,12,14,11,11,12,12,15,12,12,12,12,15,14,
+	14,13,13,15,11,11,13,13,15,14,14,13,13,15,10,10,
+	12,12,15,12,12,13,13,15,14,14,13,13,15,11,11,12,
+	12,15,14,14,13,13,14,10,10,12,12,15,12,12,13,13,
+	15,14,14,12,12,15,12,12,13,13,15,14,14,15,15,15,
+	11,11,12,12,15,12,12,12,13,15,14,14,12,12,15,15,
+	15,14,14,15,14,14,20,20,15,14,14,12,12,15,14,14,
+	13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,
+	11,14,13,13,12,12,14,14,14,12,12,15,14,14,13,13,
+	15,14,14,12,12,14,14,14,14,14,14,14,14,11,11,15,
+	14,14,12,12,15,14,14,14,14,15,14,14,12,12,14,14,
+	14,14,14,14,14,14,11,11,15,14,14,12,12,14,14,14,
+	14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,12,
+	12,15,14,14,12,12,14,14,14,14,13,15,15,15,14,14,
+	15,14,14,13,13,15,15,15,14,14,15,14,14,13,13,15,
+	15,15,13,13,14,13,13,13,13,18,15,15,12,12,18,15,
+	15,13,12,18,15,16,11,11,18,16,17,12,12,18,15,15,
+	13,13,18,17,17,12,12,18,15,15,12,12,17,15,15,12,
+	12,18,17,17,12,12,18,15,15,13,13,18,16,17,12,12,
+	17,15,15,12,12,18,15,15,12,12,18,16,17,11,12,18,
+	16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,
+	15,12,12,18,17,17,11,11,17,17,17,12,12,18,16,16,
+	13,13,18,17,17,11,11,18,16,16,12,12,18,17,17,11,
+	11,15,14,14,11,11,16,15,15,11,11,16,15,15,12,12,
+	16,15,15,12,12,17,15,15,14,13,16,15,15,12,12,17,
+	15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,
+	15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,
+	11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,
+	12,17,16,15,14,14,16,14,15,12,12,16,15,15,12,12,
+	18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
+	15,15,13,13,17,15,15,14,14,18,15,15,13,13,15,12,
+	13,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,
+	12,12,16,14,14,12,12,16,14,14,13,12,17,14,14,13,
+	13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,
+	16,14,14,12,12,17,14,14,13,13,15,15,15,12,12,16,
+	14,14,12,12,17,14,14,12,12,17,15,15,12,12,17,14,
+	14,13,13,16,15,15,12,12,16,14,14,12,12,17,15,15,
+	12,12,18,15,15,13,13,17,14,14,13,13,17,15,15,12,
+	12,17,14,14,12,12,17,15,15,12,12,14,15,15, 9, 9,
+	15,15,15,12,12,15,15,15,13,13,15,15,15,14,14,15,
+	15,15,19,19,15,15,16,13,13,15,15,16,19,20,15,15,
+	15,13,12,15,16,16,14,14,15,15,15,19,19,15,15,15,
+	13,13,15,16,15,20,19,14,15,15,13,13,15,15,15,14,
+	14,15,15,15,19,19,15,15,15,14,14,15,16,16,19,20,
+	15,15,15,14,14,15,15,15,14,14,15,15,15,19,19,15,
+	15,15,20,19,15,16,16,20,19,15,15,15,19,19,15,16,
+	16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,
+	11,11,14,14,14,12,12,15,14,14,13,13,15,14,14,19,
+	20,15,14,14,12,12,14,14,14,20,19,14,14,14,11,11,
+	15,14,14,12,12,15,14,14,20,20,15,14,14,12,12,14,
+	14,14,20,19,14,14,14,11,11,15,14,14,12,12,15,14,
+	14,19,20,15,14,14,13,13,15,14,14,22,19,15,15,14,
+	12,12,15,14,14,13,13,14,15,15,22,20,15,15,15,20,
+	20,15,14,14,21,20,15,15,15,20,21,15,14,14,20,20,
+	14,15,15,20,20,
+};
+
+static const static_codebook _44p3_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p3_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p3_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p3_p5_0[] = {
+	 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0,
+	12,12,15,15, 0,13,13,15,15, 7, 8, 8,15,15,10,10,
+	10,16,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13,
+	16,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,15,
+	15, 0,13,13,18,18, 0,13,13,16,16, 0,14,14,17,17,
+	 0,20, 0,19,20, 0,12,12,16,16, 0,16,16,20,22, 0,
+	14,14,16,16, 0,14,14,17,17, 0,20,22,20,19, 0,13,
+	13,15,16, 0,17,18, 0,21, 0,15,15,16,16, 5, 7, 7,
+	13,13, 8, 9, 9,14,14,10,10,10,14,14, 0,20,22,18,
+	18, 0,22,21,18,17, 9,10,10,14,14,12,12,12,17,17,
+	12,10,10,14,14, 0, 0,20,17,17, 0,22,21,17,18,11,
+	10,10,14,14,14,13,13,18,18,12,11,11,14,14, 0,22,
+	21,18,19, 0,20, 0,17,17, 0,22, 0,18,18, 0, 0, 0,
+	 0, 0, 0,20,20,17,17, 0,22, 0,22,21, 0,21, 0,19,
+	18, 0,22,22,18,18, 0, 0, 0, 0, 0, 0,21, 0,17,17,
+	 0,22, 0,20,20, 0, 0, 0,19,18, 6, 6, 6,12,12, 8,
+	 6, 6,10,10, 8, 6, 6,13,12, 0,10,10,11,11, 0,11,
+	11,13,13, 8, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
+	12,12, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
+	13,12,10,10,13,13,10, 6, 6,12,12, 0,11,11,15,15,
+	 0,10,10,13,13, 0,12,12,15,14, 0,19,20,16,17, 0,
+	 9, 9,13,13, 0,14,14,20,21, 0,12,11,13,12, 0,12,
+	12,15,14, 0,20,19,17,17, 0,10,10,12,13, 0,15,15,
+	22,21, 0,12,12,12,13, 0,10,10,12,12, 0,11,11,15,
+	15, 0,11,11,15,15, 0,15,15,22,22, 0,16,17, 0, 0,
+	 0,11,11,15,15, 0,14,14,18,18, 0,11,11,16,16, 0,
+	16,15, 0,21, 0,16,16, 0, 0, 0,12,12,15,15, 0,14,
+	14,19,19, 0,11,11,15,15, 0,15,15,22, 0, 0,16,16,
+	22, 0, 0,16,16, 0,21, 0, 0, 0, 0, 0, 0,15,15,19,
+	20, 0,18,18, 0, 0, 0,17,17, 0, 0, 0,17,17, 0, 0,
+	 0, 0, 0, 0, 0, 0,16,15,22,21, 0,20,20, 0, 0, 0,
+	18,18, 0, 0, 0,10,10,12,12, 0,10,10,11,11, 0,11,
+	11,12,12, 0,11,11, 9, 9, 0,13,12,12,12, 0,11,11,
+	13,13, 0,13,13,12,12, 0,10,10,12,12, 0,13,12,13,
+	13, 0,12,12,12,12, 0,11,11,13,13, 0,13,13,12,12,
+	 0,10,10,12,12, 0,13,13,14,13, 0,12,12,12,12, 0,
+	14,13,13,14, 0,20,21,15,15, 0,11,11,12,12, 0,15,
+	16,20,20, 0,12,13,10,10, 0,13,13,14,13, 0,20,20,
+	15,15, 0,11,11,12,12, 0,16,17,21,21, 0,13,13,11,
+	11, 6, 7, 7,16,15,11, 9, 9,14,15,12, 9, 9,16,16,
+	 0,13,13,15,15, 0,14,14,17,17,10, 9, 9,16,16,14,
+	12,12,16,16,12, 9, 9,15,15, 0,13,13,17,18, 0,13,
+	13,15,15,12,10,10,17,17,15,12,12,17,17,13, 9, 9,
+	16,16, 0,13,13,18,19, 0,14,14,16,16, 0,15,15,18,
+	18, 0, 0, 0,20,19, 0,12,12,17,16, 0,16,17, 0,21,
+	 0,14,15,16,16, 0,15,15,18,18, 0, 0,22,19,21, 0,
+	13,13,16,16, 0,18,17,22,22, 0,15,15,16,16, 7, 7,
+	 7,13,13,11,10,10,15,15,12,10,10,14,14, 0,21, 0,
+	18,17, 0,21,22,18,18,11,10,10,15,15,14,12,12,17,
+	17,14,11,11,14,14, 0,21,20,18,18, 0,22,21,18,17,
+	12,11,10,16,16,16,14,14,17,19,14,11,11,15,15, 0,
+	 0,22,19,19, 0,21,22,18,18, 0,21, 0,18,19, 0, 0,
+	 0,22, 0, 0,22,21,17,17, 0, 0, 0,20,22, 0, 0,21,
+	18,18, 0, 0, 0,19,20, 0, 0, 0, 0, 0, 0, 0,21,17,
+	17, 0, 0, 0,22,21, 0, 0, 0,19,19,10, 9, 9,14,13,
+	13,10,10,12,12,13,10,10,14,14, 0,13,13,12,12, 0,
+	15,14,16,15,13,10,10,14,14,15,12,12,14,14,15,10,
+	10,14,14, 0,14,14,15,15, 0,14,13,14,14,13,10,10,
+	15,15,17,13,13,15,15,14,10,10,14,14, 0,14,14,15,
+	16, 0,14,14,15,15, 0,15,15,16,16, 0,21,22,17,18,
+	 0,12,12,14,14, 0,17,17,20,21, 0,14,14,14,14, 0,
+	15,15,16,16, 0,21,22,18,18, 0,13,13,14,14, 0,18,
+	18,22, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,12,
+	16,15, 0,12,12,16,16, 0,16,16, 0, 0, 0,16,17, 0,
+	22, 0,12,12,16,16, 0,14,14,17,18, 0,11,11,16,16,
+	 0,15,15, 0,21, 0,16,16,21,22, 0,12,12,16,16, 0,
+	15,15,19,19, 0,12,12,17,16, 0,16,16,21,22, 0,16,
+	16, 0, 0, 0,17,17, 0,22, 0, 0, 0, 0, 0, 0,15,15,
+	19,20, 0,17,19, 0, 0, 0,17,17,22, 0, 0,17,17, 0,
+	22, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,19,20, 0, 0,
+	 0,19,18,22, 0, 0,11,12,14,14, 0,11,11,14,14, 0,
+	12,12,15,15, 0,13,13,13,13, 0,14,14,16,16, 0,12,
+	12,15,15, 0,14,14,16,15, 0,11,11,15,15, 0,13,13,
+	16,16, 0,13,13,15,15, 0,12,12,15,15, 0,15,14,16,
+	16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,15,15,
+	 0,15,15,16,16, 0, 0, 0,18,18, 0,12,12,14,14, 0,
+	16,16,22, 0, 0,14,14,15,15, 0,15,15,16,17, 0,21,
+	22,18,18, 0,13,13,15,14, 0,18,17,22, 0, 0,14,14,
+	15,15, 8, 8, 8,16,15,12,10,10,16,15,12,10,10,16,
+	16, 0,14,14,16,17, 0,14,14,17,16,12,10,10,17,18,
+	14,12,12,18,18,14,10,10,16,16, 0,14,14,18,18, 0,
+	14,14,16,16,12, 9, 9,16,16,17,13,13,16,17,14, 9,
+	 9,15,15, 0,14,14,18,19, 0,13,13,15,15, 0,15,15,
+	18,19, 0, 0, 0,22,21, 0,13,13,16,16, 0,16,16,22,
+	 0, 0,15,15,16,16, 0,14,14,18,17, 0, 0, 0,20, 0,
+	 0,13,13,16,16, 0,18,18, 0, 0, 0,15,15,16,16, 8,
+	 7, 7,13,13,12,10,10,15,15,12,10,10,14,14, 0,22,
+	22,19,18, 0, 0, 0,18,18,12,10,10,15,15,14,13,13,
+	17,17,14,11,11,15,15, 0,19,20,18,18, 0,22,21,17,
+	18,13,11,11,15,15,16,13,13,18,18,14,11,11,14,15,
+	 0,22,21,20,19, 0,22,21,17,17, 0, 0,22,19,18, 0,
+	 0, 0, 0, 0, 0,22,20,17,17, 0, 0, 0,21,20, 0, 0,
+	 0,19,17, 0, 0,22,19,19, 0, 0, 0, 0, 0, 0,22,20,
+	18,17, 0, 0, 0, 0, 0, 0, 0, 0,18,18, 0,10,10,14,
+	14, 0,11,11,14,14, 0,11,11,15,15, 0,14,14,14,14,
+	 0,15,15,16,16, 0,11,11,16,16, 0,13,13,16,16, 0,
+	11,11,15,15, 0,14,14,16,16, 0,14,14,15,15, 0,11,
+	11,15,15, 0,13,13,15,15, 0,10,10,15,15, 0,15,15,
+	17,17, 0,14,14,14,14, 0,16,16,16,16, 0, 0,22,19,
+	19, 0,13,13,14,14, 0,17,17, 0, 0, 0,15,15,14,14,
+	 0,16,16,17,17, 0, 0,22,18,18, 0,13,13,14,14, 0,
+	21,18, 0, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,
+	12,15,15, 0,12,12,16,15, 0,16,16, 0, 0, 0,17,17,
+	22,22, 0,12,12,16,16, 0,14,14,18,18, 0,11,12,16,
+	16, 0,15,16, 0,21, 0,16,16,22,21, 0,12,12,16,16,
+	 0,15,15,19,20, 0,11,12,16,16, 0,15,15,20,22, 0,
+	16,16, 0,22, 0,17,17,22, 0, 0, 0, 0, 0, 0, 0,15,
+	15,21,22, 0,19,18, 0, 0, 0,17,17, 0, 0, 0,17,17,
+	 0,22, 0, 0, 0, 0, 0, 0,16,15,22, 0, 0,19,19, 0,
+	 0, 0,17,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
+	 0,12,12,15,15, 0,13,13,14,14, 0,15,15,16,17, 0,
+	12,12,16,16, 0,14,14,16,16, 0,12,11,15,16, 0,14,
+	14,16,17, 0,14,14,16,16, 0,13,12,16,16, 0,15,15,
+	16,16, 0,11,11,15,15, 0,14,14,16,16, 0,14,14,15,
+	15, 0,15,15,18,17, 0, 0,22, 0,20, 0,13,13,15,15,
+	 0,16,17,22,22, 0,14,14,15,15, 0,15,15,17,18, 0,
+	20, 0,19,19, 0,13,13,15,15, 0,18,18,22, 0, 0,14,
+	14,15,15, 0,11,11,16,16, 0,14,14,17,16, 0,13,13,
+	17,17, 0,16,16,17,17, 0,17,17,18,19, 0,12,12,16,
+	17, 0,15,15,18,18, 0,12,12,16,16, 0,16,16,19,18,
+	 0,16,16,17,16, 0,12,13,17,17, 0,17,16,18,17, 0,
+	13,12,16,16, 0,16,16,18,19, 0,16,16,16,17, 0,16,
+	16,18,18, 0,22, 0,22,22, 0,13,13,16,16, 0,19,18,
+	22,20, 0,16,15,16,16, 0,16,17,18,18, 0, 0, 0,22,
+	20, 0,14,14,16,16, 0,19,19, 0, 0, 0,16,16,16,16,
+	 0, 9, 9,13,13, 0,13,13,15,15, 0,14,14,15,15, 0,
+	 0,22,17,18, 0,22, 0,18,19, 0,12,12,15,15, 0,15,
+	16,17,17, 0,14,14,14,14, 0,22, 0,18,18, 0,21,22,
+	17,17, 0,13,13,15,15, 0,17,17,17,18, 0,14,14,15,
+	15, 0,22,21,21,19, 0,20,21,17,17, 0,21,21,19,18,
+	 0, 0, 0, 0, 0, 0,21,21,17,17, 0, 0, 0,22,22, 0,
+	 0,22,19,18, 0, 0,21,19,18, 0, 0, 0, 0,22, 0,19,
+	20,17,17, 0, 0, 0, 0,22, 0, 0, 0,19,18, 0,19,19,
+	15,16, 0,21,19,16,17, 0, 0,21,17,17, 0, 0,22,17,
+	17, 0,22,22,18,19, 0,20,20,16,16, 0, 0,22,18,18,
+	 0,20,19,16,17, 0,22,21,20,19, 0, 0,21,17,17, 0,
+	21,20,17,17, 0, 0, 0,18,18, 0,19,19,17,16, 0,22,
+	 0,19,19, 0,21,22,17,18, 0, 0,22,19,18, 0, 0, 0,
+	19,20, 0,19,19,16,16, 0,22,22,22, 0, 0,20,22,16,
+	16, 0,22,20,18,19, 0, 0, 0,20,19, 0,20,20,16,16,
+	 0, 0, 0, 0, 0, 0,22,20,17,16, 0,11,11,13,13, 0,
+	14,13,15,15, 0,13,13,16,15, 0,18,17,21, 0, 0,18,
+	18,21, 0, 0,12,12,15,15, 0,15,16,17,18, 0,12,12,
+	15,15, 0,17,17,22,20, 0,17,18,22, 0, 0,12,12,17,
+	16, 0,16,17,19,19, 0,13,13,16,16, 0,17,17, 0,22,
+	 0,17,17, 0,21, 0,18,18,20,22, 0, 0, 0, 0, 0, 0,
+	15,15,21,20, 0,20,19, 0, 0, 0,18,18,22, 0, 0,17,
+	17,22, 0, 0, 0, 0, 0, 0, 0,15,16,20,22, 0,20,21,
+	 0, 0, 0,19,18, 0, 0, 0,15,15,19,19, 0,17,16,20,
+	20, 0,16,17,20,21, 0,18,17, 0, 0, 0,19,19, 0, 0,
+	 0,15,15,21,19, 0,19,19, 0, 0, 0,15,15,22,22, 0,
+	18,18, 0,22, 0,17,18,22,21, 0,15,15,20,19, 0,19,
+	19, 0, 0, 0,15,15,20,22, 0,18,19,20, 0, 0,18,17,
+	21,21, 0,18,18,19,22, 0, 0, 0, 0, 0, 0,15,15,20,
+	19, 0,19,19, 0, 0, 0,18,18,21,22, 0,18,18,22, 0,
+	 0, 0, 0, 0, 0, 0,15,15,19,20, 0,21,21, 0, 0, 0,
+	17,17,20,20, 0,12,12,17,17, 0,14,14,16,17, 0,13,
+	14,17,17, 0,16,16,17,17, 0,17,17,17,19, 0,13,13,
+	17,17, 0,16,16,18,18, 0,13,13,16,16, 0,16,16,18,
+	18, 0,16,16,17,17, 0,13,13,17,17, 0,17,17,18,17,
+	 0,12,12,15,16, 0,17,18,19,20, 0,16,16,16,16, 0,
+	17,16,18,19, 0, 0,22,21,22, 0,14,14,16,16, 0,19,
+	19, 0, 0, 0,16,16,16,16, 0,16,16,18,17, 0, 0,22,
+	21,21, 0,14,14,16,16, 0,22,20,22, 0, 0,16,16,15,
+	15, 0, 9, 9,13,13, 0,14,14,15,15, 0,14,14,14,14,
+	 0,22,22,18,18, 0, 0,22,18,18, 0,12,12,15,15, 0,
+	16,16,18,17, 0,14,14,14,14, 0,20,21,18,18, 0,22,
+	21,17,17, 0,13,13,15,15, 0,17,17,18,18, 0,14,14,
+	14,14, 0, 0,21,18,19, 0, 0,22,17,17, 0,22,22,19,
+	18, 0, 0, 0, 0, 0, 0,19,21,17,17, 0, 0, 0,22,20,
+	 0, 0,21,18,19, 0, 0,22,18,18, 0, 0, 0, 0,22, 0,
+	20,22,17,17, 0, 0, 0,20,22, 0, 0, 0,18,18, 0,19,
+	21,16,16, 0,20,22,16,17, 0,20, 0,17,17, 0,22, 0,
+	18,17, 0,21, 0,18,19, 0,20,20,17,17, 0,22, 0,18,
+	18, 0,21,20,17,17, 0, 0,20,20,19, 0, 0,21,18,17,
+	 0,21,21,17,17, 0,22, 0,18,17, 0,19,19,17,17, 0,
+	 0,22,20,21, 0, 0,21,17,17, 0,22, 0,18,18, 0, 0,
+	 0,20,22, 0,20,19,16,16, 0, 0, 0, 0, 0, 0,22,22,
+	17,17, 0,22, 0,18,19, 0, 0, 0,21,20, 0,19,21,16,
+	17, 0, 0, 0, 0, 0, 0,22,22,17,16, 0,11,11,13,13,
+	 0,13,13,15,15, 0,13,13,15,15, 0,17,17,22,21, 0,
+	18,18,22, 0, 0,12,13,16,15, 0,15,16,18,18, 0,13,
+	13,16,16, 0,17,17, 0,22, 0,17,17,22,22, 0,13,13,
+	16,16, 0,16,16,19,18, 0,13,13,16,16, 0,18,17, 0,
+	20, 0,18,17,20, 0, 0,17,17,21, 0, 0, 0, 0, 0, 0,
+	 0,15,15,21,22, 0,19,20, 0, 0, 0,18,18, 0, 0, 0,
+	18,17, 0, 0, 0, 0, 0, 0, 0, 0,16,16,22,22, 0,20,
+	20, 0, 0, 0,21,19, 0, 0, 0,15,15,20,19, 0,16,16,
+	22,20, 0,17,17, 0,22, 0,18,18, 0,22, 0,19,17, 0,
+	 0, 0,15,16,22,20, 0,18,19, 0, 0, 0,16,16,22,20,
+	 0,18,18, 0,22, 0,18,18,22, 0, 0,16,16,21,20, 0,
+	19,20, 0,22, 0,16,16, 0,22, 0,18,18, 0,22, 0,18,
+	18, 0,21, 0,19,18, 0,22, 0, 0, 0, 0, 0, 0,16,16,
+	21,20, 0,20, 0, 0, 0, 0,18,18,21, 0, 0,18,18, 0,
+	 0, 0, 0, 0, 0, 0, 0,16,16,21,19, 0, 0, 0, 0, 0,
+	 0,18,18, 0,21,
+};
+
+static const static_codebook _44p3_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p3_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p3_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p3_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p3_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p3_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p3_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p6_0[] = {
+	 1, 6, 6, 7, 7, 7, 7, 8, 8, 7, 9, 9,11,11,11, 9,
+	 8, 8, 8, 9, 9,12,11,11, 9, 8, 8, 6, 7, 7,10,11,
+	10,10,10,10,11,11,10,14,13,14,12,11,11,11,11,11,
+	15,14,14,13,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
+	 8, 8,12,10,10, 9, 7, 7, 9, 7, 8,12,10,10,10, 7,
+	 7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
+	13,10,10,11,10,10,16,13,14,14,10,10, 7, 7, 7,12,
+	11,11,12,11,11,11,11,11,16,15,15,14,12,12,12,11,
+	11,16,15,16,14,12,12,10, 9, 9,14,11,11,13,11,11,
+	12,11,11,16,14,14,14,11,11,12,11,11,17,15,15,14,
+	11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,14,
+	13,14,10,10,12,10,10,17,14,14,14,10,10, 8, 7, 7,
+	13,11,11,12,11,11,12,11,11,16,15,14,14,12,12,12,
+	11,11,16,15,14,15,12,12,11,10,10,13,11,11,13,12,
+	11,13,11,11,17,14,14,14,11,11,13,11,11,17,14,15,
+	14,11,11,
+};
+
+static const static_codebook _44p3_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p3_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p6_1[] = {
+	 2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
+	 7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 8, 6, 7, 7, 8, 8,
+	 8, 8, 8, 8, 9, 8, 8,10, 9, 9,10, 8, 8,10, 8, 8,
+	10, 9, 9,10, 8, 8, 6, 6, 6, 8, 6, 6, 8, 7, 7, 8,
+	 7, 7,10, 8, 8, 9, 7, 7, 9, 7, 7,10, 8, 9, 9, 7,
+	 7, 7, 7, 7,10, 8, 8,11, 8, 8,10, 8, 8,12, 9, 9,
+	12, 8, 8,11, 9, 9,12, 9, 9,11, 8, 8, 7, 7, 7,10,
+	 9, 9,10, 9, 9,10, 9, 9,11,10,10,10, 9, 9,11, 9,
+	 9,11,10,10,11, 9, 9, 9, 8, 8,10, 9, 9,10, 9, 9,
+	11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
+	 9, 9, 8, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9,
+	 9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,
+	10, 9, 9,10, 9, 9,11, 9, 9,11,11,11,11, 9, 9,11,
+	10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11, 9,
+	10,11,10, 9,11,10,10,11, 9, 9,11, 9,10,11,10,10,
+	11, 9, 9,
+};
+
+static const static_codebook _44p3_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p3_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p3_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p3_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p3_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p3_p7_1[] = {
+	 1, 9, 9, 6, 9, 9, 5, 9, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,
+};
+
+static const static_codebook _44p3_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p3_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p3_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p3_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p3_p7_2[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p3_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p3_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p3_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p3_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p3_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p3_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p3_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p3_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p3_short[] = {
+	 4, 5,16, 9, 9,12,17,18, 4, 2,18, 6, 5, 9,13,15,
+	10, 7, 7, 6, 7, 9,13,13, 8, 5, 6, 5, 5, 7,11,12,
+	 8, 4, 7, 4, 3, 6,10,12,11, 8, 9, 7, 6, 8,11,12,
+	15,13,13,11, 9, 7,10,12,16,12,16,12, 6, 5, 8,11,
+};
+
+static const static_codebook _huff_book__44p3_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p3_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p4_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p4_l0_0[] = {
+	 1, 4, 4, 8, 8, 9, 8, 9, 9,10,10,10,10, 4, 6, 5,
+	 8, 7, 9, 9, 9, 9,10, 9,10,10, 4, 5, 6, 7, 8, 9,
+	 9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9,
+	12,10,11,10, 8, 8, 9, 8, 9, 9,10, 9,11,10,11,10,
+	12, 9,10,10,11,10,11,11,12,11,12,12,12,12, 9,10,
+	10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,
+	12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,
+	12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,13,
+	12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,13,12,12,12,12,12,12,11,13,12,12,
+	12,13,12,12,12,12,12,12,12,
+};
+
+static const static_codebook _44p4_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p4_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p4_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p4_l0_1[] = {
+	 3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
+	 5, 6, 5, 6, 5, 6, 5, 6, 5,
+};
+
+static const static_codebook _44p4_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p4_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p4_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p4_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p4_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p4_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p4_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p4_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p4_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p4_long[] = {
+	 3, 5,13, 9, 9,12,16,18, 4, 2,20, 6, 7,10,15,20,
+	10, 7, 5, 5, 6, 8,10,13, 8, 5, 5, 3, 5, 7,10,11,
+	 9, 7, 6, 5, 5, 7, 9, 9,11,10, 8, 7, 6, 6, 8, 8,
+	15,15,10,10, 9, 7, 8, 9,17,19,13,12,10, 8, 9, 9,
+};
+
+static const static_codebook _huff_book__44p4_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p4_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p4_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p4_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p4_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p4_p2_0[] = {
+	 3, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	12,12, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
+	 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0,
+	 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,12,12, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
+	 5, 5, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5,
+	 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
+	 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 9, 9, 0,
+	 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0,
+	 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0,
+	 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0,
+	 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,
+	 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 7, 7,
+	 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0,
+	 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0,
+	 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0,
+	 0, 0,10,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+	 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,11,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 7,
+	 7, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0,10,10, 0, 0, 0, 9, 9, 0, 0, 0,10,10,
+	 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
+	 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,11,
+	11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,12,12,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0,
+	 9, 9, 0, 0, 0,10,10, 0, 0, 0,12,12, 0, 0, 0, 0,
+	 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
+	 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,
+	10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0,
+};
+
+static const static_codebook _44p4_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p4_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p4_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p3_0[] = {
+	 1, 6, 6, 5, 7, 8, 0, 8, 8, 6, 9, 9, 7,10,10, 0,
+	 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10,
+	10, 0,12,12, 7,11,11, 8,12,12, 0,12,12, 0,13,12,
+	 0,15,15, 0,12,12, 0, 7, 7, 0, 7, 7, 0, 7, 7, 0,
+	 8, 8, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
+	 7, 5, 7, 7, 8, 9, 9, 0,10,10, 8, 9, 9,11,11,11,
+	 0,10, 9, 0,11,11, 0,13,13, 0,10,10, 6, 7, 7, 8,
+	10,10, 0,12,12, 9,10,10,10,12,12, 0,12,12, 0,12,
+	12, 0,15,15, 0,12,12, 0,10,10, 0,11,11, 0,11,11,
+	 0,11,11, 0,13,13, 0,11,11, 0,11,11, 0,15,15, 0,
+	10,10, 0, 8, 8, 0,10,10, 0,12,12, 0,11,11, 0,12,
+	12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0, 7, 7,
+	 0,10,10, 0,12,12, 0,10,10, 0,12,12, 0,12,12, 0,
+	13,13, 0,14,14, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44p4_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p4_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p3_1[] = {
+	 3, 5, 5, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0,
+	 8, 8, 0, 8, 8, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8,
+	 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
+	 0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 6, 6, 0, 7, 7, 0,
+	 7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 5,
+	 5, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 9, 9,
+	 0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 6, 6, 0,
+	 9,10, 0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0,10,
+	10, 0,11,11, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 8, 8,
+	 0, 9, 9, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,
+	 7, 7, 0, 8, 8, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 9,
+	 9, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 6, 6, 0, 6, 6,
+	 0,10,10, 0,10,10, 0,10,10, 0,12,12, 0, 9, 9, 0,
+	10,10, 0,12,12, 0, 9, 9, 0, 8, 8, 0, 7, 7, 0, 7,
+	 7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9,
+	 0, 6, 6,
+};
+
+static const static_codebook _44p4_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p4_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p4_0[] = {
+	 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
+	 8, 8, 8, 8, 8,11,11,12, 9, 8, 8, 5, 7, 7, 9,11,
+	11,10,11,11,10,11,11,12,14,14,11,12,12,10,12,12,
+	13,14,14,12,12,12, 5, 6, 6, 7, 6, 6, 8, 7, 7, 8,
+	 7, 7,11,10,10,10, 7, 7, 9, 8, 8,12,11,11,10, 7,
+	 7, 7, 7, 7,11,10,10,12,10,10,11,10,10,15,13,13,
+	13,10,10,12,11,11,15,13,13,14,11,11, 7, 7, 7,11,
+	11,11,12,11,11,12,11,11,14,14,14,13,12,12,12,12,
+	12,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,12,12,
+	 0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
+	11,11, 7, 8, 8,12,11,10,12,10,10,12,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
+	12,11,11,12,11,11,12,11,11,15,14,14,14,12,12,13,
+	12,12,15,14,14,15,13,13, 0,11,11, 0,12,12, 0,12,
+	12, 0,12,12, 0,15,15, 0,12,12, 0,13,13, 0,15,14,
+	 0,12,12,
+};
+
+static const static_codebook _44p4_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p4_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p4_p4_1[] = {
+	 4, 5, 5, 9, 9,12, 9, 9,12,12,12,10,10,13,13,13,
+	11,11,12,12,13,13,13,12,12,13,10,10,13,13,13,13,
+	13,13,13,13,10,10,13,12,13,11,11,13,13,13,14,14,
+	13,12,13,10,10,13,13,12,13,13,13,13,13,10,10,12,
+	12,13,11,11,13,13,13,14,14,12,12,13,12,12,13,13,
+	13,13,13,13,13,13,11,11,12,12,13,11,11,13,13,13,
+	14,14,12,12,13,14,14,13,13,14,13,13,14,14,14,14,
+	14,12,12,13,14,14,13,13,14,14,14,12,12,12, 8, 8,
+	12,12,13,12,12,11,11,13,11,11,11,11,14,12,12,11,
+	11,14,12,12,10,11,14,12,12,12,12,14,12,12,12,12,
+	13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,
+	12,12,12,12,14,12,12,12,12,14,13,13,11,11,14,12,
+	12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,
+	12,12,14,13,13,11,11,14,12,12,11,11,14,13,13,11,
+	11,15,13,13,12,12,14,12,12,12,12,15,13,13,12,12,
+	14,12,12,11,11,15,13,13,11,11,12, 9, 9,11,11,13,
+	 7, 7,11,11,13, 8, 8,12,12,14,10,10,10,10,14,14,
+	14,11,11,14, 8, 8,12,12,14,14,14,12,12,14, 7, 7,
+	11,11,14, 9, 9,12,12,14,14,14,11,11,14, 8, 8,12,
+	12,14,14,14,12,12,14, 7, 7,11,11,14, 9, 9,12,12,
+	14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,
+	 9, 9,11,11,14,10,10,12,11,15,14,14,11,11,14,15,
+	15,12,12,15,14,14,14,14,15,14,14,11,11,15,14,14,
+	12,12,15,14,14,11,11,14,11,11,10,10,15,10,10,10,
+	10,15,10,10,10,10,15,11,11, 9, 9,15,12,13, 9, 9,
+	15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,
+	11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,
+	13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,
+	10,11,15,12,12,11,11,15,13,13,11,10,15,11,11,10,
+	10,15,11,12,10, 9,15,13,13,10,10,15,14,14,11,11,
+	15,13,13,11,11,15,14,14,10,10,15,13,13,10,10,15,
+	14,14,10,10,14,13,13,10,10,15,13,13,10,10,15,13,
+	13,10,10,14,14,14, 8, 9,15,14,14, 9, 9,15,14,14,
+	11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,
+	11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,
+	15,14,14,10,10,15,14,14,10,10,15,14,14, 9, 9,15,
+	14,14,11,11,15,14,14,11,11,15,14,14,10,10,15,14,
+	14,10,10,14,14,14, 9, 9,15,15,15,11,11,15,14,14,
+	12,12,15,15,15,10,10,15,14,15,10,10,15,15,15, 9,
+	 9,15,10,10,13,13,17, 8, 8,12,12,17,10, 9,13,13,
+	18,11,11,12,12,18,14,14,12,12,17, 9, 9,13,13,17,
+	13,13,12,12,18, 8, 8,12,12,18,10,10,12,12,18,14,
+	14,12,12,18,10,10,13,13,18,13,13,13,13,18, 9, 9,
+	12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,
+	13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,
+	18,14,14,12,12,18,14,14,13,13,18,14,14,13,13,19,
+	14,15,12,12,18,14,14,12,12,18,15,15,12,12,13, 7,
+	 7,11,11,14,15,15,11,11,14,16,15,11,11,14,15,15,
+	11,11,14,15,15,11,11,14,15,15,11,12,14,15,15,12,
+	12,13,15,15,11,11,14,15,15,11,11,15,15,15,12,12,
+	14,15,15,12,12,14,16,16,12,12,14,15,15,11,11,14,
+	15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,
+	15,12,12,14,15,15,11,11,14,15,15,11,11,15,14,15,
+	12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,
+	12,14,15,15,12,12,15,15,15,12,12,13,13,13,11,11,
+	14,14,15,11,11,14,14,14,12,12,14,15,15,10,10,15,
+	15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,
+	15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,
+	12,12,14,14,15,11,11,14,15,15,11,11,14,15,15,12,
+	12,15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,
+	14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,15,
+	15,15,12,12,15,15,15,14,14,15,15,15,11,11,15,15,
+	15,11,11,15,15,15,11,11,14,10,10,10,10,15, 9, 9,
+	12,11,15,10,10,12,12,15,11,11,11,11,15,13,13,12,
+	12,16,10,10,12,12,15,13,13,12,12,15, 9, 9,11,11,
+	15,10,10,13,12,15,13,13,11,11,15,10,10,12,12,15,
+	13,13,12,12,15, 9, 9,11,11,15,10,10,12,12,15,13,
+	13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,10,
+	11,11,15,11,11,12,12,15,13,14,11,11,15,14,14,13,
+	13,16,14,14,20,19,15,14,14,11,11,15,13,14,12,12,
+	15,14,14,11,11,14,13,13,10,10,14,14,13,11,11,15,
+	13,14,12,12,15,14,14,12,12,15,14,14,11,11,15,14,
+	14,12,12,15,15,14,13,13,15,14,14,11,11,15,14,14,
+	11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,
+	13,15,14,14,11,11,15,14,14,11,11,15,14,14,13,13,
+	15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,
+	14,14,11,11,15,15,15,12,12,15,15,15,13,13,16,14,
+	14,12,12,15,15,15,13,13,15,15,15,12,12,15,15,15,
+	12,12,14,10,10,13,13,17, 9, 9,12,12,17, 9, 9,13,
+	13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,
+	18,14,13,12,12,18, 9, 9,12,12,18,10,10,12,13,18,
+	14,14,12,12,17, 9, 9,12,12,17,13,14,12,12,17, 9,
+	 9,12,12,17,10,10,12,12,17,14,14,11,11,18,11,11,
+	12,12,18,14,14,12,13,18,10,10,12,12,18,11,11,12,
+	12,18,14,14,11,11,18,15,15,12,12,18,14,14,13,13,
+	18,14,15,12,12,17,14,14,12,12,17,15,15,12,12,13,
+	 7, 7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,
+	15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,
+	12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,
+	12,14,15,15,11,11,14,15,15,12,12,14,15,15,11,11,
+	15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,
+	15,16,12,12,14,15,15,11,11,14,15,15,11,11,15,15,
+	15,12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,
+	12,12,15,15,15,12,12,15,15,15,12,12,13,13,13,12,
+	12,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,
+	15,15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,
+	15,15,11,11,14,14,14,12,12,15,15,14,11,11,14,15,
+	15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,
+	11,11,15,14,14,10,10,14,15,15,12,12,14,14,14,12,
+	12,14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,
+	15,15,15,12,12,15,14,14,13,13,15,15,15,10,10,15,
+	14,14,11,11,15,15,15,10,10,14,10,10,10,10,14, 9,
+	 9,12,12,15,10,10,12,12,14,11,11,11,11,15,13,14,
+	12,12,15,10,10,13,13,15,13,13,12,12,15, 9, 9,12,
+	12,15,10,10,13,13,15,13,14,11,11,15,10,10,12,12,
+	15,13,13,12,12,15, 9, 9,11,11,15,10,10,12,12,15,
+	13,13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,
+	10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,
+	13,13,15,14,14,20,19,15,14,14,11,11,15,14,14,12,
+	12,15,14,14,11,11,14,13,13,11,11,15,13,13,11,11,
+	15,14,13,12,12,15,14,14,11,12,15,14,14,11,11,15,
+	14,14,12,12,14,14,14,13,13,15,14,14,11,11,15,14,
+	14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,
+	13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,13,
+	13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
+	15,14,14,11,11,14,14,14,12,12,15,15,15,13,13,16,
+	14,14,12,12,15,15,15,13,13,15,14,14,12,12,15,15,
+	15,12,12,15,11,11,13,13,18,10,10,12,12,17,11,11,
+	12,12,18,12,12,11,11,18,14,14,12,12,18,10,10,13,
+	13,18,14,14,12,12,18,10,10,12,12,18,11,11,12,12,
+	18,14,14,12,12,18,11,11,12,13,18,14,14,12,12,18,
+	10,10,12,12,18,11,11,12,12,18,14,14,11,11,18,11,
+	11,12,12,18,14,14,12,12,17,10,10,11,11,17,12,12,
+	11,11,17,14,14,11,11,18,15,15,12,12,18,14,14,13,
+	13,18,15,15,11,11,18,15,14,12,12,18,15,15,11,11,
+	14, 8, 8,11,11,14,15,15,10,10,14,15,15,11,11,14,
+	15,15,11,11,15,15,15,12,12,15,15,15,11,11,15,15,
+	15,12,12,14,15,15,10,10,15,15,15,11,11,15,15,15,
+	12,12,15,15,15,11,11,15,15,15,13,13,14,15,15,10,
+	10,15,15,15,11,11,15,15,15,12,12,15,15,15,12,12,
+	15,16,16,12,12,15,14,14,11,11,15,15,15,11,11,15,
+	15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,
+	15,12,12,15,15,15,12,12,15,15,15,12,12,14,13,13,
+	11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,
+	11,15,15,14,11,11,15,14,14,12,12,15,14,14,12,12,
+	14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,
+	14,15,12,12,15,14,14,12,12,14,15,15,11,11,15,14,
+	14,11,11,15,14,14,11,11,15,15,14,12,12,15,14,14,
+	12,12,15,15,15,10,11,15,14,14,11,11,15,15,15,10,
+	10,15,15,15,12,12,16,14,14,13,13,15,15,15,11,11,
+	15,14,14,11,11,15,15,15,11,11,14,11,11, 9, 9,14,
+	10,10,12,12,15,11,11,12,12,15,12,12,12,12,15,14,
+	14,13,13,15,11,11,12,12,15,14,14,13,13,14,10,10,
+	12,12,15,11,11,13,13,15,14,14,12,12,15,10,10,12,
+	12,14,14,14,13,13,14,10,10,11,11,15,11,11,12,12,
+	15,14,14,12,12,15,12,12,13,13,15,14,14,14,14,15,
+	11,11,11,11,15,12,11,12,12,15,14,14,11,11,15,15,
+	15,13,14,15,14,14,20,19,15,14,14,12,12,15,14,14,
+	13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,
+	11,14,13,13,11,11,15,14,14,12,12,15,14,14,12,12,
+	15,14,14,12,11,14,14,14,13,13,15,14,14,11,11,15,
+	14,14,11,11,15,14,14,14,14,15,14,14,11,12,15,14,
+	14,13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,
+	14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,11,
+	11,14,14,14,12,12,15,14,14,13,13,15,15,15,13,13,
+	15,14,14,13,13,15,15,15,13,13,15,14,14,13,13,15,
+	15,15,13,13,15,14,14,13,13,18,15,15,12,12,18,15,
+	15,12,12,18,16,16,11,11,18,17,17,12,12,18,15,15,
+	13,13,18,17,17,12,12,18,15,15,12,12,18,15,16,12,
+	12,18,17,17,12,12,18,15,15,13,12,17,16,17,12,12,
+	17,15,15,11,12,18,15,15,12,12,18,17,17,11,11,18,
+	16,16,12,12,18,17,16,12,12,18,15,15,11,11,18,15,
+	15,12,12,18,17,17,11,11,18,17,17,12,12,18,16,16,
+	13,13,18,17,17,11,11,17,16,16,11,11,18,17,17,11,
+	11,15,15,15,11,11,16,15,15,11,11,16,15,15,11,11,
+	16,15,15,12,12,17,15,15,14,14,16,15,15,11,11,17,
+	15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,
+	15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,
+	11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,
+	12,17,16,15,14,14,16,15,15,11,11,16,15,15,12,12,
+	18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,18,
+	14,15,13,13,18,15,15,14,14,18,15,15,13,13,15,13,
+	13,12,12,15,14,14,12,12,16,14,14,12,12,16,14,14,
+	12,12,17,14,15,12,12,16,14,14,12,12,17,14,14,13,
+	13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,
+	16,14,14,12,12,17,14,14,13,13,15,15,15,11,11,16,
+	14,14,12,12,17,14,14,12,12,16,15,15,12,12,17,14,
+	14,13,12,16,15,15,11,11,16,14,14,12,12,17,15,15,
+	11,11,17,15,15,13,13,17,14,14,13,13,18,15,15,12,
+	12,17,14,14,12,12,17,15,15,12,12,14,15,15, 9, 9,
+	14,15,15,12,12,15,16,15,13,13,15,15,15,14,14,15,
+	15,15,21,19,15,15,15,13,13,15,15,15,19,19,15,15,
+	15,12,12,15,16,16,14,14,15,15,15,19,19,15,16,15,
+	13,13,15,16,16,19,20,15,15,15,12,13,15,16,16,14,
+	14,15,15,15,20,19,15,15,15,14,14,15,16,16,19,19,
+	15,15,15,14,13,15,15,15,14,14,15,15,15,19,19,15,
+	16,16,20,19,15,17,16,21,20,15,15,15,20,19,15,16,
+	16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,
+	11,11,14,14,14,12,12,15,14,14,13,13,15,15,14,20,
+	20,15,14,14,12,12,14,14,14,19,19,15,14,14,11,11,
+	15,14,14,12,12,15,14,14,20,19,15,14,14,12,12,14,
+	14,14,20,20,14,14,14,11,11,15,14,14,12,12,15,14,
+	14,20,21,15,14,14,13,13,15,14,14,20,20,15,14,14,
+	12,12,15,14,14,13,13,14,15,15,20,20,15,15,15,20,
+	19,15,14,14,20,19,15,15,15,20,20,15,14,14,21,20,
+	15,15,15,20,20,
+};
+
+static const static_codebook _44p4_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p4_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p4_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p4_p5_0[] = {
+	 1, 7, 6,15,15, 7, 8, 8,15,15, 8, 8, 8,15,15, 0,
+	13,13,16,16, 0,14,14,16,16, 7, 9, 9,16,16,10,11,
+	11,17,17,10, 8, 8,15,16, 0,14,14,18,18, 0,14,14,
+	16,16, 9, 9, 9,16,16,12,11,11,17,17,10, 9, 9,15,
+	15, 0,14,14,19,19, 0,14,14,16,16, 0,15,15,18,17,
+	 0, 0, 0,20,20, 0,13,13,16,16, 0,17,17,22,20, 0,
+	15,15,17,17, 0,15,15,18,18, 0,22,21,20,21, 0,13,
+	13,16,16, 0,18,18, 0,22, 0,15,15,17,17, 6, 7, 7,
+	13,13, 9,10,10,15,15,11,10,10,15,15, 0,21,22,18,
+	18, 0, 0, 0,18,18,10,10,10,15,15,12,13,13,17,17,
+	12,11,11,15,15, 0,22,22,18,18, 0, 0,21,18,18,12,
+	11,11,15,15,15,14,14,18,18,13,11,11,15,15, 0, 0,
+	21,18,19, 0,21,22,18,19, 0,22, 0,18,19, 0, 0, 0,
+	 0, 0, 0,21,21,18,18, 0,22, 0, 0,21, 0, 0, 0,19,
+	18, 0, 0, 0,18,19, 0, 0, 0, 0, 0, 0,20,20,18,17,
+	 0, 0,22, 0,21, 0, 0, 0,19,19, 6, 6, 6,13,13, 8,
+	 6, 6,11,11, 9, 7, 7,13,13, 0,10,10,11,11, 0,12,
+	12,14,14, 9, 8, 8,14,14,12,10,10,13,13,10, 7, 7,
+	13,13, 0,11,11,15,15, 0,11,11,13,13, 9, 8, 8,14,
+	14,13,10,10,13,14,11, 7, 7,13,13, 0,11,11,15,15,
+	 0,11,11,13,13, 0,12,12,15,15, 0,21,21,17,17, 0,
+	10,10,13,13, 0,14,14,20,20, 0,12,12,13,13, 0,12,
+	12,15,15, 0,21,22,17,18, 0,10,10,13,13, 0,16,16,
+	20,21, 0,12,12,13,13, 0,11,11,13,13, 0,12,12,16,
+	16, 0,12,12,16,16, 0,16,16, 0,21, 0,17,18, 0, 0,
+	 0,12,12,15,15, 0,15,15,18,18, 0,12,12,16,16, 0,
+	16,16,21,22, 0,17,17,22,21, 0,12,12,16,16, 0,15,
+	15,19,19, 0,12,12,16,16, 0,16,16,22,22, 0,17,16,
+	22, 0, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,15,15,21,
+	20, 0,19,20, 0,22, 0,18,18, 0, 0, 0,18,17, 0, 0,
+	 0, 0, 0, 0, 0, 0,16,16,22,21, 0,20,20, 0,22, 0,
+	20,19, 0, 0, 0,11,11,12,12, 0,10,10,11,11, 0,11,
+	11,12,12, 0,12,12,10,10, 0,13,13,12,12, 0,11,11,
+	13,13, 0,13,13,12,12, 0,10,10,12,12, 0,13,13,14,
+	13, 0,12,12,12,12, 0,12,12,13,13, 0,14,14,13,13,
+	 0,10,10,12,12, 0,13,13,14,14, 0,13,12,12,12, 0,
+	14,14,14,14, 0,21,21,16,16, 0,12,12,12,12, 0,16,
+	16,20,21, 0,13,13,11,11, 0,14,14,14,14, 0,20,20,
+	16,15, 0,12,12,12,12, 0,17,17,20,20, 0,13,13,11,
+	11, 7, 8, 8,16,16,11,10,10,15,15,12,10,10,17,17,
+	 0,14,14,16,15, 0,15,15,17,17,11, 9, 9,16,16,14,
+	12,12,17,17,13, 9, 9,16,15, 0,14,14,19,18, 0,14,
+	14,16,16,12,10,10,17,18,16,13,13,17,18,14,10,10,
+	16,16, 0,14,14,19,19, 0,14,15,17,17, 0,15,15,18,
+	19, 0, 0, 0,20,20, 0,13,13,17,17, 0,17,18, 0,22,
+	 0,15,15,16,17, 0,15,15,18,18, 0, 0, 0,20,21, 0,
+	14,14,17,17, 0,19,18, 0, 0, 0,16,16,17,17, 8, 7,
+	 7,14,14,12,11,11,15,15,13,11,11,15,15, 0, 0, 0,
+	18,19, 0,21,20,18,18,12,10,11,15,16,14,13,13,18,
+	18,14,11,11,15,15, 0,20,20,19,18, 0,20, 0,18,18,
+	13,11,11,16,16,17,15,15,19,19,14,12,12,15,15, 0,
+	21, 0,18,20, 0,22,22,18,19, 0,22,22,19,19, 0, 0,
+	 0, 0, 0, 0,21,22,19,18, 0, 0, 0, 0,21, 0, 0, 0,
+	19,19, 0, 0,22,20,20, 0, 0, 0, 0, 0, 0,22, 0,18,
+	18, 0, 0, 0, 0,22, 0, 0, 0,19,20,11,10,10,14,14,
+	14,11,11,13,13,14,11,11,15,15, 0,14,13,12,12, 0,
+	15,15,16,16,13,11,11,15,15,16,13,13,15,15,15,10,
+	10,14,15, 0,14,14,16,16, 0,14,14,15,15,13,11,11,
+	15,15,18,14,14,15,15,15,10,10,15,14, 0,14,14,16,
+	16, 0,14,14,15,15, 0,15,15,17,16, 0,21,22,18,18,
+	 0,13,13,14,14, 0,18,17,20,21, 0,15,15,14,14, 0,
+	15,16,16,17, 0, 0, 0,19,18, 0,13,13,15,14, 0,19,
+	19, 0, 0, 0,15,15,14,14, 0,12,12,14,13, 0,13,13,
+	16,16, 0,12,12,16,16, 0,16,16,22, 0, 0,17,18, 0,
+	22, 0,13,13,16,16, 0,15,15,18,18, 0,12,12,16,16,
+	 0,16,16,22,22, 0,17,17, 0, 0, 0,13,13,17,17, 0,
+	16,16,19,20, 0,12,12,17,17, 0,17,17,22, 0, 0,17,
+	17,22,21, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
+	21,21, 0,19,19, 0, 0, 0,18,18, 0,22, 0,18,18, 0,
+	22, 0, 0, 0, 0, 0, 0,16,16,22, 0, 0,20,20, 0, 0,
+	 0,19,18, 0, 0, 0,12,12,15,15, 0,12,12,15,14, 0,
+	13,13,15,15, 0,14,14,14,14, 0,15,15,16,16, 0,13,
+	13,15,16, 0,15,15,16,16, 0,12,12,15,15, 0,14,14,
+	16,16, 0,14,14,15,15, 0,13,13,15,16, 0,15,15,16,
+	16, 0,12,12,15,15, 0,15,15,17,17, 0,14,14,15,15,
+	 0,15,15,17,17, 0,21,21,19,19, 0,13,13,14,14, 0,
+	17,17,22, 0, 0,14,14,15,15, 0,15,15,17,17, 0,22,
+	 0,18,20, 0,13,13,15,15, 0,18,18, 0,22, 0,15,15,
+	14,15, 8, 8, 8,17,16,12,10,10,16,16,13,10,10,17,
+	16, 0,15,15,17,17, 0,15,15,17,17,12,11,11,18,18,
+	15,12,12,18,18,15,10,10,16,17, 0,14,14,18,18, 0,
+	14,14,17,17,13,10,10,16,16,17,14,14,17,17,15,10,
+	10,16,15, 0,15,15,19,20, 0,14,14,15,16, 0,16,16,
+	19,19, 0, 0, 0,21,22, 0,13,13,17,17, 0,18,17, 0,
+	21, 0,15,15,17,17, 0,15,15,18,19, 0, 0,22, 0,21,
+	 0,13,13,16,17, 0,19,19, 0,22, 0,16,15,16,16, 9,
+	 8, 8,14,14,12,11,11,15,15,13,11,11,15,15, 0,21,
+	20,19,18, 0, 0, 0,19,18,12,11,11,16,15,15,13,13,
+	17,18,14,11,11,15,15, 0,22,22,19,18, 0,22,21,18,
+	18,14,11,11,15,15,17,14,14,18,18,15,12,12,15,15,
+	 0,22,22,20,19, 0, 0,21,18,18, 0, 0,22,20,20, 0,
+	 0, 0, 0, 0, 0,20,21,18,18, 0, 0, 0,21,21, 0, 0,
+	 0,20,19, 0,22,21,19,19, 0, 0, 0, 0, 0, 0, 0,22,
+	17,18, 0, 0,22, 0,22, 0,22, 0,19,19, 0,11,11,15,
+	15, 0,11,11,14,14, 0,12,12,15,15, 0,15,15,14,14,
+	 0,16,16,16,16, 0,12,12,16,16, 0,14,14,16,16, 0,
+	11,11,15,15, 0,15,15,17,17, 0,15,15,15,15, 0,12,
+	12,16,16, 0,14,14,15,15, 0,11,11,15,15, 0,15,15,
+	17,17, 0,15,15,14,15, 0,16,16,17,17, 0, 0, 0,19,
+	19, 0,14,14,15,15, 0,18,18,21, 0, 0,15,15,14,15,
+	 0,16,16,17,17, 0,21, 0,19,19, 0,14,14,15,15, 0,
+	20,20,22, 0, 0,16,15,14,14, 0,12,12,13,13, 0,12,
+	12,16,16, 0,12,12,16,16, 0,16,16,22,21, 0,18,17,
+	21, 0, 0,13,13,16,16, 0,15,15,18,19, 0,12,12,16,
+	16, 0,16,17,22, 0, 0,17,17, 0,22, 0,13,13,17,16,
+	 0,15,15,19,19, 0,12,12,16,16, 0,16,16,21,20, 0,
+	17,16,22, 0, 0,18,18,22,21, 0, 0, 0, 0, 0, 0,15,
+	16,21,21, 0,19,19, 0, 0, 0,18,17, 0, 0, 0,18,18,
+	21, 0, 0, 0, 0, 0, 0, 0,16,16,22,22, 0,20,21, 0,
+	 0, 0,18,19, 0,22, 0,13,13,16,16, 0,12,12,15,15,
+	 0,13,13,16,16, 0,14,14,15,15, 0,15,15,17,17, 0,
+	13,13,17,16, 0,15,15,17,17, 0,12,12,16,16, 0,15,
+	15,17,17, 0,14,14,16,16, 0,13,13,16,17, 0,15,15,
+	17,17, 0,12,12,16,16, 0,14,14,17,17, 0,14,14,16,
+	16, 0,16,16,17,17, 0,21, 0,21,19, 0,13,13,16,16,
+	 0,17,17, 0, 0, 0,15,15,16,16, 0,16,15,18,18, 0,
+	22, 0,20,20, 0,13,13,15,15, 0,18,18, 0, 0, 0,15,
+	15,15,15, 0,12,12,17,17, 0,14,14,17,17, 0,14,14,
+	17,17, 0,17,17,18,17, 0,17,17,19,18, 0,13,13,17,
+	17, 0,16,16,18,18, 0,13,13,16,16, 0,17,17,19,19,
+	 0,16,16,17,17, 0,13,13,18,18, 0,17,17,18,18, 0,
+	13,13,17,17, 0,17,17,19,19, 0,16,17,17,17, 0,17,
+	17,19,19, 0,21, 0,21,19, 0,14,14,16,16, 0,20,19,
+	 0,21, 0,16,16,16,16, 0,17,18,19,19, 0, 0, 0, 0,
+	21, 0,15,15,16,17, 0,21,20, 0, 0, 0,17,18,16,17,
+	 0, 9, 9,14,14, 0,14,14,15,16, 0,14,14,15,15, 0,
+	 0, 0,18,18, 0,21, 0,18,19, 0,12,12,15,15, 0,16,
+	16,17,17, 0,14,14,14,14, 0,22, 0,19,18, 0,22, 0,
+	17,18, 0,14,14,16,15, 0,18,18,19,18, 0,14,15,15,
+	15, 0, 0,21,20,20, 0, 0, 0,18,18, 0,21,21,19,19,
+	 0, 0, 0, 0, 0, 0,21,21,18,18, 0,22, 0,20,20, 0,
+	22, 0,19,19, 0,22, 0,19,20, 0, 0, 0, 0, 0, 0, 0,
+	21,17,18, 0, 0, 0,22,22, 0, 0, 0,19,18, 0,18,20,
+	16,16, 0,21,20,17,17, 0, 0,21,18,18, 0,22,21,18,
+	18, 0, 0,22,19,19, 0,20,20,17,17, 0, 0, 0,18,18,
+	 0,19,20,17,17, 0,22, 0,19,21, 0,22,21,18,18, 0,
+	20,19,17,18, 0, 0, 0,19,19, 0,20,20,17,17, 0,22,
+	22,21,21, 0,20, 0,18,18, 0,22,22,18,18, 0, 0, 0,
+	20,22, 0,20,20,16,16, 0, 0, 0,21, 0, 0,21,20,16,
+	17, 0,22, 0,19,20, 0, 0, 0,21,20, 0,19,21,17,17,
+	 0, 0, 0, 0, 0, 0,21,21,17,17, 0,12,12,13,13, 0,
+	14,14,16,16, 0,14,14,16,16, 0,18,18, 0, 0, 0,19,
+	18,22, 0, 0,13,13,16,16, 0,16,16,18,18, 0,13,13,
+	16,16, 0,17,18,21, 0, 0,18,18,21, 0, 0,13,13,16,
+	16, 0,17,17,19,20, 0,13,13,16,17, 0,18,18,21, 0,
+	 0,18,18,21, 0, 0,18,19, 0,21, 0, 0, 0, 0, 0, 0,
+	16,16,21,20, 0,20,20, 0, 0, 0,18,19, 0, 0, 0,18,
+	18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0,22,22,
+	 0, 0, 0,19,19, 0, 0, 0,16,16,19,20, 0,17,16,22,
+	21, 0,17,17,21,20, 0,19,18, 0,22, 0,19,19,22,22,
+	 0,16,15,22,22, 0,19,19, 0,21, 0,15,15,20,20, 0,
+	18,19, 0,21, 0,18,18,22,22, 0,16,16,21,20, 0,20,
+	19,21,22, 0,16,15,20,20, 0,19,19, 0,22, 0,18,18,
+	21, 0, 0,19,18,21,22, 0, 0, 0, 0, 0, 0,16,16,19,
+	21, 0,20,22, 0,22, 0,18,18,20,21, 0,19,18, 0,22,
+	 0, 0, 0,22, 0, 0,16,16,20,20, 0,21,21, 0, 0, 0,
+	18,18,21, 0, 0,12,12,17,17, 0,15,14,17,17, 0,14,
+	14,18,18, 0,17,17,17,18, 0,18,18,18,18, 0,13,13,
+	18,18, 0,16,17,19,18, 0,13,13,16,17, 0,17,17,18,
+	19, 0,17,17,17,17, 0,13,13,17,17, 0,17,18,18,18,
+	 0,13,13,16,16, 0,18,18,19,20, 0,16,17,17,16, 0,
+	17,18,19,18, 0, 0, 0,22,21, 0,15,15,16,16, 0,20,
+	20,21,22, 0,17,17,16,16, 0,16,17,18,18, 0, 0, 0,
+	21,21, 0,15,15,16,16, 0,21,20, 0, 0, 0,17,17,16,
+	16, 0,10,10,14,14, 0,14,14,15,15, 0,14,14,15,15,
+	 0,22, 0,18,18, 0, 0, 0,19,19, 0,13,13,15,16, 0,
+	17,16,18,18, 0,14,14,15,15, 0,21,21,19,18, 0,22,
+	21,18,17, 0,14,14,15,15, 0,18,18,19,18, 0,15,15,
+	14,14, 0,22,21,19,19, 0,22,21,17,18, 0, 0, 0,19,
+	19, 0, 0, 0, 0, 0, 0,20,22,17,17, 0, 0,22,22,20,
+	 0, 0, 0,19,18, 0,21,22,19,18, 0, 0, 0, 0, 0, 0,
+	22,22,17,18, 0, 0, 0,21,22, 0, 0, 0,19,18, 0,20,
+	20,17,17, 0,21,21,17,18, 0,21,22,18,18, 0,21, 0,
+	18,18, 0,22, 0,19,19, 0,19,21,18,18, 0, 0,22,18,
+	18, 0,22,21,17,17, 0,22, 0,20,20, 0, 0, 0,18,18,
+	 0,22,21,18,18, 0,21, 0,19,19, 0,20,21,17,17, 0,
+	 0,22,22,20, 0,21,22,17,17, 0, 0,21,19,18, 0, 0,
+	 0,21,21, 0,21,20,16,17, 0, 0, 0, 0, 0, 0,21, 0,
+	17,17, 0,21, 0,19,20, 0, 0, 0,20,22, 0,20,20,17,
+	17, 0, 0, 0, 0, 0, 0,21,21,17,17, 0,12,12,13,13,
+	 0,14,14,16,16, 0,14,14,16,16, 0,18,18,21, 0, 0,
+	19,19,22, 0, 0,13,13,16,16, 0,16,16,18,18, 0,13,
+	13,16,16, 0,18,18,21,22, 0,18,18, 0,22, 0,13,13,
+	16,16, 0,17,17,20,18, 0,13,13,16,16, 0,19,18, 0,
+	22, 0,18,18,22,21, 0,18,19, 0, 0, 0, 0, 0, 0, 0,
+	 0,16,16,21,21, 0,21,21, 0, 0, 0,18,19, 0, 0, 0,
+	19,19,21, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0,20,
+	20, 0, 0, 0,20,20, 0, 0, 0,16,16,21,20, 0,18,17,
+	21,22, 0,17,18, 0,21, 0,18,19,22,22, 0,19,19, 0,
+	22, 0,16,17,21,22, 0,20,19, 0, 0, 0,16,16,20,21,
+	 0,19,19, 0, 0, 0,19,19, 0,22, 0,17,17,21,21, 0,
+	19,20, 0, 0, 0,16,16, 0,20, 0,19,20, 0,21, 0,18,
+	18, 0,22, 0,19,20,22,22, 0, 0, 0, 0,22, 0,17,17,
+	 0,21, 0,21,21, 0, 0, 0,18,19,23,21, 0,20,19, 0,
+	 0, 0, 0, 0, 0, 0, 0,17,17, 0,20, 0, 0, 0, 0, 0,
+	 0,19,19,23,22,
+};
+
+static const static_codebook _44p4_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p4_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p4_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p4_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p4_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p4_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p4_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p6_0[] = {
+	 1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9,
+	 8, 8, 8, 9, 9,12,11,12, 9, 8, 8, 6, 7, 7,10,11,
+	11,10,10,10,11,11,11,14,14,14,12,11,12,11,11,11,
+	15,15,14,13,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
+	 7, 7,12,10,10,10, 7, 6, 9, 8, 8,12,10,10,10, 6,
+	 6, 7, 8, 8,12,10,10,12,10,10,11,10,10,16,14,14,
+	13,10,10,12,10,10,15,14,14,14,10,10, 7, 7, 7,13,
+	11,11,13,11,11,12,11,11,16,14,14,14,12,12,12,11,
+	11,18,15,15,14,12,12,10, 9,10,14,11,11,13,11,11,
+	12,11,11,17,14,14,14,11,11,13,11,11,16,15,15,14,
+	11,11, 7, 8, 8,13,11,11,12,10,10,12,10,10,16,14,
+	13,13,10,10,12,10,10,17,14,14,14,10,10, 8, 7, 7,
+	12,11,11,13,11,11,12,11,11,16,15,14,14,12,12,12,
+	11,11,16,15,15,14,12,12,11,10,10,14,11,11,13,11,
+	11,13,11,11,17,14,14,14,11,11,13,11,11,18,14,15,
+	15,11,10,
+};
+
+static const static_codebook _44p4_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p4_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p6_1[] = {
+	 2, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
+	 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 8, 8,
+	 8, 8, 8, 8, 9, 8, 8, 9, 8, 9, 9, 8, 8,10, 8, 8,
+	10, 9, 9,10, 8, 8, 6, 6, 6, 8, 6, 6, 8, 7, 7, 8,
+	 7, 7,10, 8, 8, 9, 7, 7, 9, 7, 7,10, 8, 8, 9, 7,
+	 7, 7, 7, 7,10, 8, 8,11, 9, 9,10, 9, 9,11, 9, 9,
+	11, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 7, 7, 7,10,
+	 9, 9,10, 9, 9,10, 9, 9,11,10,10,10, 9, 9,11, 9,
+	10,11,10,11,10, 9, 9, 9, 8, 8,10, 9, 9,10, 9, 9,
+	11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
+	 9, 9, 8, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9,
+	 9,12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,
+	10, 9, 9,10, 9, 9,10, 9, 9,11,11,11,11, 9, 9,11,
+	10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11, 9,
+	10,11,10,10,11,10,10,11, 9, 9,11,10,10,11,10,10,
+	11, 9, 9,
+};
+
+static const static_codebook _44p4_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p4_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p4_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p4_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p4_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p4_p7_1[] = {
+	 1, 9, 9, 7, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
+	 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 5, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 5,10, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 8,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,
+};
+
+static const static_codebook _44p4_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p4_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p4_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p4_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p4_p7_2[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p4_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p4_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p4_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p4_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p4_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p4_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p4_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p4_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p4_short[] = {
+	 3, 5,16, 9, 9,13,18,21, 4, 2,21, 6, 6,10,15,21,
+	16,19, 6, 5, 7,10,13,16, 8, 6, 5, 4, 4, 8,13,16,
+	 8, 5, 6, 4, 4, 7,12,15,13,10, 9, 7, 7, 9,13,16,
+	18,15,13,12, 9, 7,10,14,21,18,13,13, 7, 5, 8,12,
+};
+
+static const static_codebook _huff_book__44p4_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p4_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p5_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p5_l0_0[] = {
+	 1, 4, 4, 8, 8,10,10,10,10, 9, 8,11,11, 4, 6, 5,
+	 8, 6,10,10,10,10,10, 9,10, 9, 4, 5, 6, 6, 9,10,
+	10,10,10, 9,10, 9,10, 8, 9, 8, 9, 8, 9, 9,10, 9,
+	11,10,12,10, 8, 8, 9, 8, 9, 9, 9, 9,10,10,11,10,
+	12, 9,10,10,11,10,11,10,12,11,12,11,13,11, 9,10,
+	10,10,11,10,11,11,12,11,12,11,12,11,12,12,12,12,
+	13,12,13,12,13,12,13,13,11,12,12,12,12,12,12,12,
+	13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,13,
+	13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,12,
+	13,13,13,14,14,13,13,13,13,13,13,13,12,13,12,13,
+	13,13,13,13,13,13,13,13,13,
+};
+
+static const static_codebook _44p5_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p5_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p5_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p5_l0_1[] = {
+	 4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 4, 4, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p5_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p5_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p5_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44p5_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p5_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p5_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p5_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44p5_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p5_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p5_long[] = {
+	 3, 7,12,14,14,16,18,19, 6, 2, 4, 6, 8, 9,12,14,
+	12, 3, 3, 5, 7, 8,11,13,13, 6, 4, 5, 7, 8,10,11,
+	14, 8, 7, 7, 7, 7, 9,10,15, 9, 8, 7, 7, 6, 8, 9,
+	17,11,11,10, 9, 8, 9, 9,19,14,13,11,10, 9, 9, 9,
+};
+
+static const static_codebook _huff_book__44p5_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p5_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p5_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p1_0[] = {
+	 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
+	10, 8, 9,10, 8, 9,10, 9,10,12,10,11,11, 8,10,10,
+	10,11,11, 9,11,11, 5, 8, 7, 8, 9, 9, 8,10, 9, 8,
+	10,10, 9,11,11,10,11,11, 8,10, 9,10,11,11, 9,12,
+	10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9, 9, 9,10,11,
+	 9,11,11, 8,10, 9,10,11,11,10,11,11, 7, 9, 9, 9,
+	10,11, 9,11,11, 9, 9,11,10,10,13,11,11,12, 9,11,
+	11,11,12,13,11,13,12, 7, 9, 9, 9,11,11, 9,11,10,
+	 9,11,10,10,11,12,11,13,12, 9,11,11,11,12,13,11,
+	13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10,10,11,
+	11,10,11,11, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	 9,10,11, 9,11,11, 9,11,11,11,11,13,11,13,12, 9,
+	10,11,11,12,13,10,12,11, 7, 9, 9, 9,11,11, 9,11,
+	10, 9,11,11,11,12,13,11,13,12, 9,11, 9,11,12,11,
+	10,13,10,
+};
+
+static const static_codebook _44p5_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p5_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p5_p2_0[] = {
+	 4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8,
+	10,10,12,13, 8,10,10,13,12, 6, 7, 8,10,10, 7, 8,
+	 9,10,11, 8, 9, 9,11,11,10,10,11,12,14,10,11,11,
+	14,13, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
+	10,10,11,11,13,14,10,11,10,14,12, 9,10,10,12,12,
+	10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
+	14,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
+	10,13,12,13,13,14,14,15,12,13,12,15,12, 6, 7, 8,
+	10,11, 8, 9,10,11,12, 8, 9, 9,11,12,10,11,12,13,
+	14,10,11,11,14,13, 8, 9,10,11,12, 9,10,11,12,13,
+	 9,10,11,12,13,11,12,13,13,15,12,12,13,15,14, 8,
+	 9, 9,12,12, 9,10,11,12,13, 9,10,10,13,12,12,12,
+	13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,
+	13,15,12,13,13,14,15,14,13,15,14,16,14,15,15,16,
+	16,11,12,11,14,13,12,13,13,15,14,11,13,12,14,13,
+	14,15,15,15,16,13,14,14,16,14, 6, 8, 7,11,10, 8,
+	 9, 9,11,12, 8,10, 9,12,11,10,11,11,13,14,10,12,
+	11,14,13, 8, 9, 9,12,12, 9,10,10,12,13, 9,11,10,
+	13,12,11,12,12,13,14,12,13,12,15,14, 8,10, 9,12,
+	11, 9,11,10,13,12, 9,11,10,13,12,12,13,12,14,15,
+	11,13,12,15,13,11,11,12,13,14,11,12,13,13,15,12,
+	13,13,14,15,13,14,14,14,16,14,15,15,16,16,11,12,
+	11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,
+	16,16,13,15,13,16,14, 9,10,11,12,14,11,11,12,13,
+	15,11,12,12,13,14,13,14,15,15,17,13,14,14,15,16,
+	11,11,12,13,15,12,12,13,14,16,12,13,13,14,15,14,
+	14,16,15,17,15,15,15,16,17,11,12,12,14,14,12,13,
+	13,15,16,12,13,13,15,15,15,15,15,16,17,14,15,15,
+	16,16,14,14,15,15,17,14,15,15,15,17,15,15,16,16,
+	17,16,16,17,16,18,17,17,17,18,18,14,15,14,16,16,
+	15,15,16,17,17,14,15,15,17,16,17,17,17,18,18,16,
+	16,16,17,17, 9,11,10,14,12,11,12,12,14,13,11,12,
+	11,15,13,13,14,14,16,15,13,15,14,17,15,11,12,12,
+	15,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,
+	16,15,15,15,17,16,11,12,11,15,13,12,13,13,15,14,
+	12,13,12,16,14,15,15,15,17,16,14,15,14,17,15,14,
+	14,15,16,16,14,15,15,16,16,15,16,15,17,17,16,16,
+	16,17,17,17,17,17,18,17,14,15,14,16,15,15,15,15,
+	17,16,15,15,15,17,15,17,17,17,18,18,16,17,16,18,
+	16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
+	10,11,11,13,14,10,12,11,14,13, 7, 9, 9,11,12, 9,
+	10,10,12,13, 9,10,10,13,13,11,11,12,13,15,11,12,
+	12,15,14, 8, 9, 9,12,11, 9,11,10,13,13, 9,11,10,
+	13,12,12,13,12,14,15,11,13,12,15,13,10,11,12,13,
+	14,11,12,12,13,15,12,12,13,14,15,13,13,14,14,16,
+	14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,
+	13,12,15,13,14,15,15,15,16,13,14,14,16,14, 7, 9,
+	 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,12,
+	14,15,11,12,12,15,14, 9, 9,11,11,13,10,10,12,12,
+	14,10,11,12,13,14,12,12,13,14,16,12,13,13,15,15,
+	 9,11,10,13,13,10,12,12,13,14,10,12,11,14,13,12,
+	13,13,15,16,12,13,13,15,14,11,11,13,13,15,12,12,
+	14,13,16,13,13,13,14,15,14,14,15,14,17,15,15,15,
+	16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,16,
+	14,15,15,16,16,17,14,15,14,17,15, 7, 9, 9,12,11,
+	 9,10,10,12,13, 9,11,10,13,12,11,12,12,14,14,11,
+	13,12,15,14, 9,10,10,13,12,10,10,11,12,13,10,12,
+	11,14,13,12,12,13,13,15,12,14,13,16,15, 9,10,10,
+	13,12,11,11,12,13,13,10,12,10,14,12,13,13,13,15,
+	15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,
+	13,14,13,15,15,14,13,15,13,16,15,16,15,17,16,12,
+	13,12,14,14,13,14,14,15,15,12,13,12,15,14,15,15,
+	16,16,17,14,15,13,16,13,10,11,12,13,14,11,12,13,
+	14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,
+	16,12,12,13,12,15,12,12,14,13,16,13,13,14,14,16,
+	14,14,16,15,17,15,15,16,16,17,12,13,13,15,15,13,
+	14,14,16,16,13,14,13,16,15,15,16,16,17,17,14,15,
+	15,17,16,14,14,15,14,17,15,15,16,15,17,15,15,16,
+	15,17,16,16,17,16,18,17,17,17,17,18,14,15,15,17,
+	16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,
+	16,17,16,18,17,10,12,11,14,14,12,13,13,15,15,12,
+	13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,13,
+	12,15,14,12,13,13,15,15,13,14,13,16,14,15,15,15,
+	16,16,15,16,15,17,16,12,13,13,15,15,13,14,14,16,
+	16,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,
+	14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,16,
+	16,16,16,17,17,18,17,18,17,14,15,15,17,16,15,16,
+	16,17,17,15,16,15,17,16,17,17,18,18,18,16,17,16,
+	18,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
+	11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
+	 9,10,11,12,13, 9,10,11,13,13,11,12,13,13,15,12,
+	12,12,15,14, 7, 9, 9,12,11, 9,10,10,13,13, 9,10,
+	10,13,12,11,12,12,14,15,11,12,11,15,13,11,11,12,
+	13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,
+	16,14,15,15,16,16,10,12,11,14,13,12,13,12,14,14,
+	11,12,12,15,13,14,15,15,16,16,13,14,13,16,14, 7,
+	 9, 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
+	13,14,15,11,12,12,14,14, 9,10,10,12,13,10,10,12,
+	12,14,11,12,11,13,13,12,12,14,13,15,13,13,13,15,
+	15, 9,10,10,12,13,10,11,12,13,14,10,11,10,13,12,
+	13,13,14,15,16,12,13,12,15,13,12,13,13,14,14,12,
+	12,13,14,15,13,14,14,15,15,14,13,15,13,16,15,16,
+	15,17,16,11,12,12,14,14,13,13,14,15,15,12,13,12,
+	15,14,15,15,16,16,17,14,14,13,16,13, 7, 9, 9,12,
+	11, 9,10,10,12,13, 9,11,10,13,12,11,12,12,14,15,
+	11,12,12,15,14, 9,10,11,13,13,10,11,12,13,14,10,
+	12,12,14,13,12,13,13,14,16,12,13,13,16,15, 9,11,
+	 9,13,11,10,12,11,13,13,10,12,10,14,12,12,13,13,
+	15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,
+	15,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,
+	11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,
+	15,15,16,16,14,15,14,17,14,10,11,12,14,14,12,12,
+	13,14,15,12,13,13,15,15,14,15,15,16,17,14,15,15,
+	16,16,12,12,13,15,15,13,13,14,15,16,13,14,14,16,
+	16,15,15,16,16,17,15,16,16,17,17,11,12,13,14,15,
+	13,13,14,15,16,12,13,13,15,15,15,15,16,16,17,15,
+	15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,
+	16,17,17,16,16,17,16,18,17,17,17,18,18,14,15,15,
+	16,16,15,16,16,16,17,15,15,15,16,16,17,17,17,18,
+	18,16,16,16,17,16,10,12,11,14,13,12,13,13,15,15,
+	11,13,12,15,14,14,15,15,16,16,14,15,14,17,15,12,
+	13,13,15,15,13,13,14,16,16,13,14,14,16,16,15,15,
+	15,16,17,15,16,16,17,17,12,13,12,15,12,13,14,13,
+	16,14,12,14,12,16,13,15,16,15,17,16,14,16,14,17,
+	15,14,15,15,16,17,15,15,16,17,17,15,16,16,17,17,
+	16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,
+	16,15,17,15,15,16,15,17,15,17,17,17,18,17,16,17,
+	16,18,16, 9,11,11,14,14,11,12,12,14,14,11,12,12,
+	15,14,13,14,14,16,16,13,15,14,16,16,10,11,12,14,
+	14,11,12,13,15,15,12,13,13,15,15,13,14,15,16,17,
+	14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,
+	13,13,15,15,14,15,15,16,16,14,15,15,17,16,12,13,
+	14,15,16,13,14,14,15,16,13,14,15,16,16,15,15,16,
+	16,18,16,16,16,18,17,14,14,14,16,15,15,15,15,17,
+	16,14,15,15,17,16,16,17,17,18,17,16,16,16,18,16,
+	10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,
+	14,15,16,17,14,15,15,17,16,11,12,13,14,15,12,12,
+	14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,
+	17,17,12,13,13,15,15,13,14,14,16,16,13,14,13,16,
+	15,15,16,15,17,17,15,16,15,17,16,13,13,15,14,17,
+	14,13,16,15,17,15,14,16,15,17,15,15,17,16,18,16,
+	16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
+	15,17,16,17,17,17,18,18,16,17,16,18,17,10,12,11,
+	14,14,11,12,13,15,15,12,13,12,15,15,14,15,15,16,
+	16,14,15,15,17,16,11,12,12,15,15,12,13,13,15,15,
+	13,14,13,16,15,14,15,15,16,16,15,16,15,17,16,11,
+	13,13,15,15,13,14,14,15,15,12,14,13,16,15,15,16,
+	15,17,17,15,16,15,17,16,13,15,14,16,16,14,15,14,
+	16,16,15,16,15,17,16,15,16,16,16,17,16,17,16,18,
+	17,14,15,15,16,16,15,16,16,17,17,15,15,15,17,16,
+	17,17,17,18,18,16,16,16,18,16,12,13,13,15,16,13,
+	14,14,15,16,13,14,14,16,16,15,15,16,16,18,15,16,
+	16,17,17,13,13,14,15,16,14,14,15,15,17,14,15,15,
+	16,17,15,15,17,16,18,16,16,17,17,17,13,14,14,16,
+	16,14,15,15,17,17,14,15,14,17,16,16,17,16,17,18,
+	16,17,16,18,17,15,15,16,14,17,16,15,17,14,18,16,
+	16,16,15,18,16,16,18,15,19,18,18,18,17,19,15,16,
+	16,18,17,16,17,17,18,17,16,17,16,18,17,18,18,18,
+	19,19,17,18,16,18,17,11,12,12,15,15,13,13,14,15,
+	16,13,14,13,16,15,15,16,16,16,17,15,16,16,17,16,
+	12,14,13,16,15,13,13,14,15,16,14,15,14,17,15,15,
+	15,16,16,17,16,17,16,18,17,12,13,14,15,16,14,15,
+	15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
+	17,15,15,16,15,17,16,15,15,15,16,16,16,17,16,18,
+	16,16,15,16,15,17,17,18,17,18,17,15,15,16,17,17,
+	16,16,17,17,17,15,16,15,17,16,18,18,18,18,18,16,
+	17,16,18,15, 9,11,11,14,14,11,12,12,14,15,10,12,
+	12,15,14,13,14,15,16,16,13,14,14,16,16,11,12,12,
+	14,15,12,12,13,15,15,12,13,13,15,15,14,15,15,16,
+	17,14,15,15,16,16,10,12,12,14,14,12,13,13,15,15,
+	11,13,12,15,15,14,15,15,16,17,13,15,14,16,16,14,
+	14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
+	17,16,18,16,17,17,17,17,12,14,13,16,15,13,15,14,
+	16,16,13,14,14,16,15,16,16,16,17,17,15,16,15,17,
+	16,10,11,11,14,14,12,12,13,14,15,11,13,12,15,14,
+	14,15,15,16,17,14,15,15,16,16,12,13,13,15,15,12,
+	13,14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,
+	16,17,17,11,12,12,15,15,13,13,14,15,16,12,13,13,
+	15,15,15,15,16,16,17,14,15,15,16,16,14,15,15,16,
+	16,15,15,15,16,17,15,16,16,17,17,16,16,17,16,18,
+	17,17,17,17,18,13,14,15,16,16,15,15,16,16,17,14,
+	14,14,16,16,16,16,17,17,18,16,16,16,17,16,10,12,
+	12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,
+	16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,
+	16,13,14,14,16,16,15,15,16,16,17,15,15,16,17,17,
+	11,13,12,15,14,13,14,13,16,15,12,14,12,16,15,15,
+	16,15,17,17,14,15,14,17,16,14,15,15,16,17,15,15,
+	16,16,17,15,16,16,17,17,16,16,17,17,18,17,17,17,
+	18,18,13,15,13,17,14,14,16,14,17,16,14,15,13,17,
+	15,16,17,16,18,17,15,17,15,18,16,11,12,12,15,15,
+	13,13,14,15,16,13,14,13,16,15,15,16,16,16,17,15,
+	16,16,17,16,12,14,13,16,15,13,13,14,15,16,14,15,
+	15,16,16,16,15,16,16,17,16,16,16,17,17,12,13,14,
+	15,16,14,14,15,15,17,13,14,13,16,15,16,16,17,17,
+	18,15,16,15,17,15,15,16,15,17,17,15,15,16,16,17,
+	16,17,16,17,17,16,15,17,15,18,17,18,17,18,18,15,
+	15,16,16,17,16,16,17,16,18,15,15,15,16,16,17,17,
+	18,17,18,16,16,15,17,15,12,13,13,15,15,13,14,14,
+	16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,
+	16,13,14,14,16,16,14,14,15,16,17,14,15,15,17,17,
+	16,16,17,17,18,16,16,17,18,17,13,14,13,16,14,14,
+	15,15,17,16,14,15,14,17,15,16,17,17,18,17,15,17,
+	15,18,16,15,16,16,17,17,16,16,17,17,18,16,17,17,
+	18,18,17,16,18,17,19,18,18,18,18,18,15,16,15,17,
+	14,16,16,16,18,15,16,17,15,18,14,18,18,18,18,17,
+	17,18,16,19,15,
+};
+
+static const static_codebook _44p5_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p5_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p5_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p3_0[] = {
+	 1, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8,
+	10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 8,10,
+	11, 9,10,10, 9,10,11,10,11,12,11,12,12, 9,11,10,
+	11,12,12,10,12,11, 6, 9, 8, 9,10,10, 8,11,10, 9,
+	10,11,10,11,12,11,12,12, 9,11,10,11,12,12,10,12,
+	11, 6, 9, 9, 8,10,11, 9,11,10, 8,10,10,10,10,12,
+	11,12,12, 9,11,10,11,12,12,10,12,11, 8,10,10,10,
+	11,12,10,12,11,10,10,12,11,11,13,12,13,13,10,12,
+	11,12,13,13,11,13,11, 7,10,10,10,11,12,10,12,11,
+	10,12,11,11,11,12,12,14,13,10,12,12,12,14,14,11,
+	13,11, 6, 9, 9, 9,10,11, 8,11,10, 9,10,11,10,11,
+	12,11,12,12, 8,11,10,11,12,12,10,12,10, 7,10,10,
+	10,11,12,10,12,11,10,12,12,11,11,13,12,13,13,10,
+	11,12,12,13,14,11,12,11, 8,10,10,10,11,12,10,12,
+	11,10,11,12,11,11,13,12,13,13,10,12,10,12,13,13,
+	11,13,11,
+};
+
+static const static_codebook _44p5_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p5_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p3_1[] = {
+	 5, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7,
+	 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
+	 8, 9, 9, 8, 9, 9, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
+	 8, 6, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 9,
+	 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
+	 9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 8, 9, 8,
+	 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9, 8,
+	 9, 9, 6, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
+	 8, 8, 9, 8, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 8,
+	 8, 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9,
+	 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p5_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p5_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p4_0[] = {
+	 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
+	10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 8, 9, 9,10,
+	12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
+	11,12,13,11,13,11, 6, 9, 8, 9,11,11, 9,12,10, 9,
+	11,11,11,11,13,11,13,12, 9,11,10,12,13,13,11,13,
+	11, 6, 9, 9, 8,10,11, 9,12,11, 9,10,11,10,10,12,
+	11,13,13, 9,11,11,11,13,12,11,13,11, 8,10,10, 9,
+	10,12,10,12,11,10,10,12,10,10,13,12,13,13,10,12,
+	11,12,13,13,10,13,10, 7,10,10,11,11,13,11,14,11,
+	10,12,11,11,11,13,13,14,13,10,12,12,14,14,14,11,
+	14,11, 6, 9, 9, 9,11,12, 8,11,10, 9,11,11,11,11,
+	13,11,12,13, 8,11,10,11,13,13,10,12,10, 7,10,10,
+	11,11,14,11,13,11,10,12,12,11,11,14,14,14,14,10,
+	11,12,13,13,14,11,13,11, 8,10,10,10,11,12, 9,12,
+	10,10,11,12,11,10,13,12,13,13,10,12,10,12,13,13,
+	11,13,10,
+};
+
+static const static_codebook _44p5_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p5_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p5_p4_1[] = {
+	 5, 7, 7,10,10, 7, 8, 9,10,11, 7, 9, 8,11,10, 9,
+	10,10,11,11, 9,10,10,11,11, 7, 9, 9,10,10, 8, 9,
+	10,10,11, 9,10,10,11,11,10,10,11,11,11,10,11,11,
+	12,12, 7, 9, 9,10,10, 9,10,10,11,11, 8,10, 9,11,
+	10,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,
+	10,10,11,11,11,11,11,11,11,11,11,11,12,11,12,11,
+	12,11,12,12,10,10,10,11,11,10,11,11,11,11,10,11,
+	10,11,11,11,12,11,12,12,11,12,11,12,11, 8, 9, 9,
+	11,11, 9,10,10,11,12, 9,10,10,11,11,10,11,11,12,
+	12,10,11,11,12,12, 9,10,10,11,11,10,10,11,11,12,
+	10,11,11,12,12,11,11,12,12,12,11,12,12,12,12, 9,
+	10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,
+	12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12, 8, 9, 9,11,11, 9,
+	10,10,11,11, 9,10,10,11,11,10,11,11,12,12,10,11,
+	11,12,12, 9,10,10,11,11,10,10,11,12,12,10,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12, 9,10,10,11,
+	11,10,11,11,12,12,10,11,10,12,11,11,12,12,12,12,
+	11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+	11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,10,11,11,12,12,11,12,12,12,
+	12,11,12,12,12,12,12,12,13,13,13,12,12,12,13,13,
+	11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,
+	12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,
+	12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,
+	13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
+	13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,
+	11,12,12,12,12,12,13,12,12,12,12,13,13,11,12,12,
+	12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,
+	13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,
+	12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,
+	12,12,12,13,12,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,
+	13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,10,12,11,
+	10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,10,
+	10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,12,
+	12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,10,
+	12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
+	12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
+	10,11,11,10,10,11,12,12,10,11,11,12,12,11,11,12,
+	12,12,11,12,12,12,12,10,10,11,11,12,11,11,12,12,
+	12,11,11,12,12,12,11,11,12,12,13,12,12,12,12,12,
+	10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,12,12,13,12,13,12,12,13,
+	13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,13,12, 8,10,10,11,11,
+	10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,
+	12,12,12,12,10,11,10,12,12,10,10,11,12,12,11,12,
+	12,12,12,12,12,12,12,13,12,12,12,13,13,10,11,11,
+	12,12,11,12,12,12,12,10,12,11,12,12,12,12,12,13,
+	13,12,13,12,13,12,11,12,12,12,12,11,12,12,12,13,
+	12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
+	13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,
+	12,13,11,12,12,12,12,12,12,12,13,13,12,12,13,13,
+	13,11,12,12,12,12,12,12,12,12,13,12,12,13,13,13,
+	12,12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,
+	13,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,
+	13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,
+	12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,12,
+	12,12,12,12,12,12,13,13,12,13,12,13,13,13,13,13,
+	13,13,13,13,13,13,13,11,12,12,13,12,12,13,12,13,
+	13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13, 8, 9, 9,11,11, 9,10,10,11,12, 9,10,10,11,
+	11,10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,
+	10,10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
+	12,12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,
+	10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,
+	12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 8,
+	10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,10,11,11,12,12,10,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	13,10,10,11,12,12,11,12,12,12,12,10,11,10,12,12,
+	12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,11,
+	12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,
+	13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,
+	13,12,12,13,13,13,13,12,13,12,13,12, 9,10,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
+	11,12,12,12,12,12,12,12,13,12,12,12,13,12,10,11,
+	10,12,11,11,12,11,12,12,11,12,11,12,12,12,12,12,
+	12,12,12,12,11,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,
+	11,12,11,12,12,12,12,12,13,12,12,12,12,12,12,12,
+	13,12,13,13,12,12,12,13,12,10,11,11,12,12,11,12,
+	12,12,13,11,12,12,13,12,12,12,13,13,13,12,13,13,
+	13,13,11,12,12,12,13,12,12,13,13,13,12,12,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,11,12,12,12,12,
+	12,12,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,13,
+	13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,13,13,13,12,13,12,13,13,11,
+	12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,13,
+	13,13,13,12,13,13,13,13,11,12,12,12,12,12,13,12,
+	13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,
+	13,12,12,12,13,13,12,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,
+	13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,
+	12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,
+	12,11,12,12,13,13,12,12,12,13,13,12,12,13,13,13,
+	12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,
+	12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,
+	12,12,12,12,12,13,13,13,12,13,13,13,13,12,13,13,
+	13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,
+	13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,
+	12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,
+	13,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,
+	13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
+	13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,13,
+	12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,13,
+	13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,
+	12,12,11,12,12,12,13,11,12,12,13,12,12,13,13,13,
+	13,12,13,12,13,13,11,12,12,13,13,12,12,12,13,13,
+	12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,11,
+	12,12,13,12,12,13,12,13,13,12,13,12,13,13,13,13,
+	13,13,13,12,13,13,13,13,12,12,12,13,13,12,13,13,
+	13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,
+	12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,
+	13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,
+	12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,
+	12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
+	13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,
+	12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,
+	13,13,12,13,13,13,12,10,11,11,12,12,11,12,12,12,
+	12,11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,
+	11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,
+	12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,13,
+	12,13,13,12,13,12,13,13,12,13,13,13,13,12,13,12,
+	13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
+	12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,
+	12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,
+	12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,
+	13,12,12,13,13,13,11,12,11,12,12,12,12,12,13,13,
+	11,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,
+	12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,
+	13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,
+	13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,
+	12,12,13,13,13,12,13,13,13,13,11,12,12,13,13,12,
+	12,13,13,13,12,12,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,11,12,12,13,12,12,13,12,13,13,12,12,12,
+	13,13,12,13,13,13,13,13,13,13,13,13,12,12,13,13,
+	13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,12,
+	11,12,12,11,12,12,12,13,11,12,12,12,12,12,12,12,
+	13,13,12,12,12,13,13,11,12,12,12,13,12,12,12,13,
+	13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
+	11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,12,
+	13,13,13,13,12,13,12,13,13,12,13,12,13,13,12,13,
+	13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,
+	13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,
+	11,12,12,12,13,11,12,12,12,12,12,12,12,13,13,12,
+	12,12,13,13,11,12,12,12,12,12,12,13,13,13,12,13,
+	13,13,13,12,12,13,13,13,13,13,13,13,13,11,12,12,
+	12,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,
+	13,12,13,12,13,13,12,12,12,12,13,12,13,13,13,13,
+	12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,
+	12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,12,13,13,13,13,11,12,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,
+	12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,
+	13,13,13,13,13,12,13,13,13,13,13,13,12,12,12,12,
+	12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,
+	13,13,13,13,12,
+};
+
+static const static_codebook _44p5_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p5_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p5_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p5_p5_0[] = {
+	 1, 6, 6,10,10, 6, 7, 9,11,13, 5, 9, 7,13,11, 8,
+	11,12,13,15, 8,12,11,15,13, 6, 7, 8,11,11, 7, 8,
+	10,11,13, 9,10,10,13,13,11,11,13,12,16,12,13,13,
+	16,15, 6, 8, 7,11,11, 9,10,10,13,13, 7,10, 7,13,
+	11,12,13,13,15,16,11,13,11,16,12,10,11,11,11,13,
+	11,11,13,12,15,13,13,13,14,15,13,12,15,12,17,15,
+	16,16,16,16,10,11,11,14,11,13,13,13,15,14,11,13,
+	11,15,12,15,15,16,16,16,13,15,12,17,12, 6, 8, 9,
+	12,12, 9,10,12,13,15, 9,11,11,15,14,12,13,15,16,
+	18,13,14,14,17,16, 9,10,11,13,14,11,10,13,14,16,
+	11,12,12,15,15,14,13,16,15,18,14,15,15,17,17, 9,
+	11,11,14,14,11,12,13,15,16,11,13,11,15,14,15,15,
+	15,17,18,14,15,14,17,15,13,14,14,15,16,14,14,15,
+	15,17,15,16,15,17,17,16,16,17,15,19,17,18,18,19,
+	18,13,14,14,16,15,15,15,16,17,17,14,15,14,18,15,
+	17,17,17,19,19,16,17,15,19,16, 6, 9, 8,13,12, 9,
+	11,11,14,15, 9,12,10,15,13,13,14,14,16,17,12,15,
+	13,18,16, 9,11,11,14,14,11,11,13,14,15,11,13,12,
+	16,15,14,14,15,15,18,14,15,15,18,17, 9,11,10,14,
+	13,11,12,12,15,15,11,13,10,16,14,14,15,15,16,18,
+	14,16,13,18,15,13,14,14,16,16,14,14,15,15,17,15,
+	16,15,17,17,16,16,17,16,19,17,18,17,18,19,13,14,
+	14,16,15,15,15,15,17,17,14,15,14,17,15,17,17,17,
+	18,19,16,17,15,19,15,11,13,13,15,16,13,14,15,16,
+	18,14,15,15,17,17,16,16,18,18,20,17,18,17,19,20,
+	13,14,14,16,17,15,15,16,17,18,15,16,16,17,17,18,
+	17,19,18,19,18,18,18,19,21,14,14,15,16,17,15,15,
+	16,18,18,15,16,16,17,18,18,18,19,19,21,18,19,19,
+	22,20,16,16,17,17,19,17,17,17,18,20,17,18,18,20,
+	19,19,19,20,19, 0,19,19,20,20,21,17,17,17,19,18,
+	18,18,20,19,19,18,18,18,20,20,19,19,20,20,20,20,
+	21,20,21,19,11,13,13,16,15,14,15,15,17,17,14,15,
+	14,18,16,16,18,18,20,19,16,19,17,21,18,13,14,15,
+	16,17,15,15,16,18,18,15,16,15,19,18,18,18,18,19,
+	19,18,18,18,22,20,13,14,14,16,16,15,16,16,18,17,
+	15,16,15,18,17,18,18,18,19,19,17,18,17,21,18,16,
+	17,17,18,18,17,18,19,19,19,18,20,18,19,19,19,20,
+	21,19,21,20,20,20, 0,21,16,17,17,19,19,18,18,18,
+	19,21,17,18,18,19,18,20,19,21,20,21,19,20,20,22,
+	19, 7, 9, 9,13,13, 8,10,11,14,15, 9,12,11,15,14,
+	11,13,14,16,17,13,15,14,17,16, 8,10,11,14,14,10,
+	10,12,14,16,11,12,12,16,15,13,12,15,15,18,14,15,
+	15,19,17, 9,11,11,14,14,11,12,12,15,15,11,13,11,
+	16,14,14,15,14,17,17,14,16,14,18,15,12,13,14,15,
+	16,13,13,15,14,17,15,15,15,17,17,15,14,17,14,19,
+	17,18,18,19,18,13,14,14,16,16,15,15,15,17,17,14,
+	15,14,18,15,17,18,17,18,17,16,18,16,19,15, 7,10,
+	10,13,13, 9,10,12,14,15,10,12,11,15,14,12,13,14,
+	16,17,13,15,14,18,16,10,10,12,13,14,10,10,13,13,
+	16,12,12,13,15,15,13,12,15,15,18,15,15,16,18,17,
+	10,11,11,14,14,12,13,13,15,16,10,13,10,16,14,14,
+	15,15,17,17,14,15,13,17,15,13,13,14,15,16,14,13,
+	15,14,18,15,15,16,16,17,16,15,18,15,18,17,18,18,
+	18,18,13,15,14,17,16,15,16,16,17,17,14,15,13,17,
+	15,17,17,18,18,18,16,17,14,20,14, 8,10,10,14,14,
+	11,11,13,14,16,11,13,11,16,14,14,15,16,16,18,14,
+	16,15,18,16,10,12,11,15,14,11,11,13,14,16,13,14,
+	13,16,15,15,14,16,15,19,16,17,16,20,18,10,11,12,
+	14,15,13,13,14,16,16,11,14,11,16,14,16,16,17,18,
+	19,15,17,14,20,15,14,15,14,17,16,13,14,15,15,18,
+	16,17,16,19,18,16,15,18,15,19,18,19,18,21,21,14,
+	14,15,16,17,16,16,17,18,18,13,15,14,17,15,18,18,
+	19,18,22,16,18,15,21,15,12,13,14,16,16,14,14,16,
+	16,18,14,15,15,17,18,16,16,18,18,20,18,18,17,20,
+	20,13,14,15,15,17,15,14,16,16,18,16,16,16,17,19,
+	17,15,18,17,21,18,18,18,19,19,14,15,15,18,17,15,
+	16,16,18,19,15,16,15,18,18,17,18,18,20,21,17,19,
+	17,20,19,16,16,17,16,19,17,17,18,17,20,18,18,18,
+	18,19,19,18,20,17,22,20,20,19,20,20,17,17,18,18,
+	19,18,18,20,21,20,17,18,17,20,20,21,21,21,21,21,
+	19,21,18,22,20,11,13,13,17,16,14,14,16,16,18,14,
+	16,14,18,16,17,18,19,19,20,18,19,18,21,19,14,15,
+	14,17,16,14,14,16,18,18,16,17,16,18,17,18,17,19,
+	18,20,19,19,18,20,20,13,14,15,16,17,16,16,17,18,
+	19,14,16,14,19,17,18,19,18,20,20,18,20,17,21,18,
+	17,17,17,19,18,16,17,18,18,19,18,19,18,21,21,18,
+	18,20,17,21,19,20,20,22,21,16,17,18,18,19,18,18,
+	19,21,20,16,17,17,20,18,21,21,22,21,22,18,21,18,
+	 0,18, 7, 9, 9,13,13, 9,11,12,14,15, 8,11,10,15,
+	14,13,14,15,16,18,11,14,13,17,15, 9,11,11,14,14,
+	11,11,13,14,16,11,12,12,15,15,14,14,16,15,18,14,
+	14,15,17,17, 8,11,10,14,14,11,12,12,15,15,10,12,
+	10,16,14,14,15,15,17,18,13,15,12,18,15,13,14,14,
+	16,16,14,14,15,15,17,15,15,15,16,17,16,15,17,15,
+	19,17,17,17,18,18,12,14,13,16,15,15,15,15,17,17,
+	13,15,13,17,14,17,18,18,18,19,15,17,14,19,14, 8,
+	10,10,14,14,11,11,13,14,16,11,13,11,16,14,14,15,
+	16,17,19,14,16,15,18,17,10,12,11,15,14,11,11,14,
+	14,17,13,14,13,17,15,15,14,17,15,19,16,17,16,19,
+	17,10,11,12,14,15,13,13,14,15,17,11,13,11,17,14,
+	16,16,17,18,19,15,16,14,18,15,14,15,14,16,16,13,
+	14,15,15,18,16,16,16,18,18,16,15,18,15,20,18,19,
+	18,21,18,14,14,15,16,17,16,16,17,17,18,13,15,14,
+	17,16,19,19,19,19,19,15,18,15,20,15, 7,10,10,13,
+	13,10,11,12,14,15, 9,12,10,15,14,13,14,15,16,17,
+	12,15,13,17,16,10,11,11,14,14,10,10,13,14,16,12,
+	13,13,16,15,14,13,16,15,18,15,15,16,17,17,10,12,
+	10,14,13,12,13,12,15,15,10,13,10,16,13,15,16,15,
+	17,18,13,16,12,18,15,13,14,14,16,17,14,13,15,15,
+	18,15,16,15,17,17,16,14,17,15,19,17,18,18,19,19,
+	13,15,13,17,14,15,15,15,18,17,14,15,13,17,14,18,
+	17,18,18,19,15,17,15,19,15,11,13,13,16,17,14,14,
+	16,16,18,14,16,15,18,17,17,18,19,18,21,18,18,17,
+	20,18,13,15,14,17,16,14,14,16,17,18,16,17,16,19,
+	17,18,17,19,18,22,18,19,19,21,21,13,14,15,16,18,
+	16,16,17,17,20,14,16,14,18,17,18,18,19,19,21,17,
+	18,17,21,18,17,18,17,19,18,16,17,17,18,19,18,18,
+	18,22,22,18,17,19,17, 0,20,21,19,21,20,17,17,18,
+	18,21,18,18,18,19,21,17,17,17,19,19,20,20,22,21,
+	21,19,20,18,20,17,12,14,13,17,16,14,15,15,17,18,
+	14,16,14,18,16,17,18,18,21,20,16,18,16,21,18,14,
+	15,15,17,17,15,15,16,18,18,15,17,16,18,18,17,17,
+	19,19,20,18,19,18,20,19,14,15,14,17,15,15,16,16,
+	18,17,15,16,14,19,15,18,18,18,19,20,17,20,15,21,
+	17,16,17,18,18,19,17,17,18,18,20,18,19,18,19,21,
+	19,18,19,19,21,20, 0,19,21,20,16,17,16,19,16,18,
+	18,18,19,19,17,18,17,20,17,19,20,20,22, 0,19,20,
+	17,21,17,11,13,14,16,17,14,15,15,17,18,14,15,15,
+	18,18,16,17,17,19,20,16,18,17,19,21,13,14,15,17,
+	17,14,15,16,17,19,15,16,16,18,19,16,17,18,19,21,
+	17,18,20,21,21,13,15,15,17,17,15,16,16,18,19,15,
+	16,16,18,19,17,17,18,19,22,17,19,18,22,19,15,16,
+	17,19,19,16,17,18,18,20,17,18,18,19,20,19,18,20,
+	18,22,20,19,19,22,21,16,17,17,18,19,18,18,18,19,
+	20,17,18,18,20,19,20,19,20,22,20,19,20,21,21,20,
+	12,14,14,16,16,13,14,16,17,18,14,16,15,18,18,15,
+	17,17,19,19,17,18,18,19,19,13,14,15,16,17,14,14,
+	16,16,20,15,16,16,17,19,16,15,18,17,20,18,17,19,
+	19,19,14,15,15,17,17,16,16,16,18,18,15,16,15,19,
+	18,17,18,18,20,21,17,18,17,21,18,16,15,17,17,19,
+	17,15,18,17,20,19,17,18,19,20,18,16,19,17,22,20,
+	19,20,19,20,17,17,18,19,19,18,18,19,20,20,17,18,
+	17,18,18,21,21,20,20,21,18,20,17,21,19,11,14,14,
+	16,17,15,14,16,17,19,14,16,14,18,17,18,18,19,19,
+	21,17,19,18,20,20,13,15,14,17,17,14,14,16,17,18,
+	16,17,16,19,18,18,17,19,18,20,18,21,18,20,20,13,
+	15,15,16,17,16,16,17,18,19,14,16,15,19,18,19,19,
+	19,21,20,18,19,17,20,18,16,17,16,19,18,16,17,17,
+	19,20,17,19,18,20,19,18,17,21,18, 0,21,20,20, 0,
+	20,17,17,18,18,19,18,19,19,20,22,16,17,17,20,18,
+	21,22,20,20,22,18,22,18,22,18,12,14,14,17,17,14,
+	15,16,17,19,14,16,15,17,17,17,17,18,18,21,17,19,
+	17,20,19,14,15,15,16,18,15,14,16,16,19,16,17,16,
+	19,18,17,16,20,17,20,18,20,19,19,20,14,15,15,18,
+	17,16,16,17,18,19,14,16,15,19,17,18,21,18,19,21,
+	17,18,17,19,18,17,17,18,17,20,17,16,18,17,21,18,
+	19,19,19,19,18,17,19,17,20,20,21,20,21,20,17,17,
+	17,19,19,19,18,18,20,21,16,18,16,19,18,20,20,21,
+	21,20,18,19,16, 0,17,12,14,14,17,17,15,15,18,17,
+	19,15,18,15,20,16,20,19,21,18,22,20,20,20,22,19,
+	14,16,14,20,17,14,15,17,17,20,18,18,17,20,18,18,
+	17,19,17,21,20,21,20, 0,21,14,15,16,17,19,18,17,
+	19,18,21,14,18,15,21,17,21,20,21,20, 0,18,21,17,
+	21,17,18,19,17,20,18,16,17,17,19,19,19,21,20, 0,
+	20,18,17,21,17, 0,22, 0,21, 0,22,17,17,19,18,20,
+	20,20,21,19,22,16,17,18,20,18,22,22, 0,22, 0,17,
+	21,17,22,17,11,14,13,16,16,14,15,15,17,18,14,15,
+	14,18,17,17,18,18,19,20,16,17,17,21,19,13,14,15,
+	17,17,15,16,16,18,18,15,16,16,19,18,18,18,18,19,
+	20,17,18,18,20,19,13,15,14,17,17,15,16,16,17,18,
+	14,16,15,19,17,17,18,19,21,21,17,18,17,20,18,16,
+	17,17,19,19,17,18,19,19,20,18,19,18,21,21,21,20,
+	19,21,22,20,20,19,21,20,15,17,16,19,19,17,18,18,
+	20,21,16,18,17,20,18,19,19,21,21,21,19,19,19,20,
+	18,11,14,13,17,16,14,14,16,16,19,14,16,15,19,16,
+	18,18,18,19,22,17,18,17,20,19,13,15,14,17,17,15,
+	15,16,17,19,16,17,16,20,18,18,17,19,18,21,19,19,
+	18,22, 0,13,14,15,17,18,16,16,17,17,19,14,16,15,
+	19,18,18,19,19,20,21,18,18,17,20,18,17,18,17,20,
+	18,16,17,17,18,20,18,19,18,20,20,18,18,21,17,21,
+	20,21,21, 0,19,16,16,18,18,19,19,18,20,19,20,16,
+	17,17,20,18,21,20,21,22,22,18,20,17,21,17,12,14,
+	14,17,16,14,15,16,18,18,13,15,14,18,17,17,18,18,
+	19,19,15,17,16,19,19,14,15,15,17,17,15,15,16,18,
+	19,15,16,16,19,18,17,17,18,18,20,18,18,18,21,20,
+	13,15,14,17,16,15,16,15,18,18,14,16,14,18,17,18,
+	18,18,19,21,16,18,16,20,17,17,18,17,18,19,17,17,
+	18,18,19,18,19,19,21,19,19,18,20,18,21,21,20,20,
+	21,20,16,17,15,20,17,17,19,17,19,19,17,18,15,20,
+	17,19,20,19,21,22,17,20,16, 0,17,12,14,14,17,18,
+	16,15,18,16,20,16,18,15,21,17,20,18,21,19,22,19,
+	21,19, 0,19,14,16,15,19,17,14,15,17,16,21,18,19,
+	18,21,17,19,17,21,17,22,20,21,21, 0,21,14,15,16,
+	17,19,18,17,19,18,21,14,17,15,20,17,21,22,21,20,
+	22,18,21,17,21,17,17,19,17,21,18,16,17,17,19,20,
+	19,21,20,21,20,17,18,20,17,21, 0,22,20,21,22,17,
+	17,20,18,21,21,20,22,20,21,16,17,17,21,19, 0,22,
+	 0,21,21,18,22,17,21,17,12,14,14,17,16,14,15,16,
+	17,18,14,16,15,18,17,17,17,20,19,20,16,18,17,21,
+	18,14,15,15,17,17,14,15,16,17,19,16,17,16,18,18,
+	17,16,19,18,19,18,19,18,21,20,14,15,15,18,17,16,
+	16,16,19,18,15,16,14,20,16,18,18,19,19,20,16,19,
+	16,21,17,17,17,18,19,19,16,16,18,18,19,19,19,18,
+	20,20,18,16,19,18,20,22,21,20,19,20,16,18,17,20,
+	16,18,19,18,19,18,16,18,16,20,17,21,20,21,20,20,
+	18,19,17,21,16,
+};
+
+static const static_codebook _44p5_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p5_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p5_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p5_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p5_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p5_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p5_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p6_0[] = {
+	 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
+	 9,10, 5, 8, 7, 9,10, 9, 7,10, 7, 6, 9, 9, 9,10,
+	12,10,12,11, 9,10,11,11,10,13,12,12,13,10,11,11,
+	12,13,13,11,13,11, 6, 9, 9,10,11,12, 9,12,11,10,
+	11,11,11,11,13,12,13,13, 9,11,10,12,13,13,11,13,
+	10, 6, 9,10, 9,11,12,10,12,11, 9,10,11,10,10,13,
+	11,13,13,10,11,11,12,13,12,11,13,11, 7, 9,10, 9,
+	10,12,10,11,11,10,10,11,10,10,12,12,11,12,10,11,
+	10,12,12,12,10,12,10, 7,10,10,11,11,13,11,13,11,
+	10,12,11,11,10,13,13,14,13,10,11,12,13,13,14,11,
+	13,10, 6,10, 9,10,11,12, 9,12,11, 9,11,11,11,11,
+	13,12,12,13, 9,11,10,12,13,13,10,13,10, 7,10,10,
+	11,11,14,11,13,11,10,12,11,11,10,14,13,14,13,10,
+	11,12,13,13,14,11,13,10, 7,10, 9,10,10,12, 9,12,
+	10,10,11,11,10,10,12,12,12,12, 9,11,10,11,12,12,
+	10,12, 9,
+};
+
+static const static_codebook _44p5_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p5_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p6_1[] = {
+	 2, 6, 6, 5, 7, 8, 5, 8, 7, 6, 7, 7, 7, 7, 8, 8,
+	 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9,
+	10, 8, 9, 9, 8, 9, 9, 9, 9,10,10,10,10, 8, 9, 9,
+	10,10,10, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 9,
+	 9, 9, 9, 9,10,10,10,10, 8, 9, 9,10,10,10, 9,10,
+	 9, 6, 8, 9, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,10,
+	 9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 8, 9, 8,
+	 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9,10,10, 9,10,10,
+	 9,10, 9, 9, 9,10,10,10,10, 9,10, 9,10,10,10, 9,
+	10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,
+	10, 9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9,
+	 9,10,10, 9,10, 9, 9, 9,10,10, 9,10,10,10,10, 9,
+	 9, 9,10,10,10, 9,10, 9, 7, 9, 8, 8, 9, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p5_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p5_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p5_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p5_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p5_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p5_p7_1[] = {
+	 1, 7, 7, 6, 9, 9, 7, 9, 9, 6, 9, 9, 9, 9, 9, 9,
+	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,
+};
+
+static const static_codebook _44p5_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p5_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p5_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p5_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p5_p7_2[] = {
+	 1, 2, 3, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,12,12,13,13,14,14,14,14,
+};
+
+static const static_codebook _44p5_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p5_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p5_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p5_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p5_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p5_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p5_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p5_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p5_short[] = {
+	 4, 7,12,14,15,18,20,20, 5, 3, 4, 6, 9,11,15,19,
+	 9, 4, 3, 4, 7, 9,13,18,11, 6, 3, 3, 5, 8,13,19,
+	14, 9, 6, 5, 7,10,16,20,16,11, 9, 8,10,10,14,16,
+	21,14,13,11, 8, 7,11,14,21,14,13, 9, 6, 5,10,12,
+};
+
+static const static_codebook _huff_book__44p5_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p5_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p6_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p6_l0_0[] = {
+	 1, 4, 4, 7, 7,10,10,12,12,12,12,13,12, 5, 5, 5,
+	 8, 6,11, 9,12,12,13,12,12,12, 4, 5, 5, 6, 8, 9,
+	11,12,12,13,12,12,12, 7, 7, 8, 9, 9,11, 8,12, 9,
+	12,12,12,12, 7, 8, 8, 9, 9, 8,11, 9,12,12,12,11,
+	12,10,10,10,11,11,11,11,11,10,11,11,12,11,10,10,
+	10,11,11,11,11,10,11,11,11,11,12,11,11,11,12,11,
+	12,11,12,11,13,11,13,11,11,11,11,11,12,11,12,10,
+	13,11,12,11,13,12,12,12,13,12,13,13,13,12,14,12,
+	14,13,12,12,12,12,13,13,13,12,14,12,14,13,14,13,
+	14,14,14,14,14,14,14,14,15,14,15,14,13,14,13,14,
+	14,14,14,14,15,14,14,14,15,
+};
+
+static const static_codebook _44p6_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p6_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p6_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p6_l0_1[] = {
+	 4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+	 5, 5, 4, 5, 5, 5, 5, 5, 4,
+};
+
+static const static_codebook _44p6_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p6_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p6_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_l1_0[] = {
+	 1, 3, 2, 5, 5, 6, 6, 6, 6,
+};
+
+static const static_codebook _44p6_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44p6_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p6_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p6_lfe[] = {
+	 2, 3, 1, 3,
+};
+
+static const static_codebook _huff_book__44p6_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p6_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p6_long[] = {
+	 2, 7,13,15,16,17,19,20, 6, 3, 4, 7, 9,10,12,15,
+	13, 4, 3, 4, 7, 8,11,13,14, 7, 4, 4, 6, 7,10,11,
+	16, 9, 7, 6, 7, 8, 9,10,16, 9, 8, 7, 7, 6, 8, 8,
+	18,12,10,10, 9, 8, 8, 9,20,14,13,12,11, 8, 9, 9,
+};
+
+static const static_codebook _huff_book__44p6_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p6_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p6_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p1_0[] = {
+	 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
+	10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8, 9,10,
+	10,11,11, 9,11,11, 5, 8, 7, 8, 9, 9, 8,10, 9, 8,
+	10, 9, 9,11,11,10,11,11, 8,10, 9,10,11,11, 9,12,
+	10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9, 9, 9,10,11,
+	 9,11,11, 8,10,10,10,11,11,10,12,11, 7, 9, 9, 9,
+	10,11, 9,11,11, 9, 9,11,10,10,13,11,11,12, 9,11,
+	11,11,12,13,11,13,12, 7, 9, 9, 9,11,11, 9,12,10,
+	 9,11,10,10,11,12,11,13,12, 9,11,11,11,13,13,11,
+	13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8,10,10,10,11,
+	11,10,11,11, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	 9,10,12, 9,11,11, 9,11,11,11,11,13,11,13,13, 9,
+	10,11,11,12,13,10,12,11, 7, 9, 9, 9,11,11, 9,11,
+	10, 9,11,11,11,12,13,11,13,12, 9,11, 9,11,12,11,
+	10,13,10,
+};
+
+static const static_codebook _44p6_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p6_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p6_p2_0[] = {
+	 4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8,
+	10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 7, 8,
+	 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
+	14,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
+	10,10,11,11,13,14,10,11,10,13,12, 9,10,10,12,12,
+	10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
+	14,13,15,14, 9,10,10,13,12,10,11,11,13,13,10,11,
+	10,13,12,13,13,14,14,15,12,13,12,15,12, 6, 8, 8,
+	10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,12,13,
+	14,10,11,11,14,13, 8, 9, 9,11,12, 9,10,11,12,13,
+	 9,10,11,12,13,11,11,13,13,15,11,12,12,14,14, 8,
+	 9, 9,12,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
+	13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,
+	13,15,12,13,13,14,15,13,13,14,14,16,14,15,15,16,
+	16,11,12,11,14,13,12,13,13,14,14,11,13,12,14,13,
+	14,15,15,16,16,13,14,14,16,14, 6, 8, 8,11,10, 8,
+	 9, 9,12,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
+	11,14,13, 8, 9, 9,12,12, 9,10,10,12,13, 9,11,10,
+	13,12,11,12,12,14,14,11,13,12,15,14, 8, 9, 9,12,
+	11, 9,10,10,13,12, 9,11,10,13,12,12,12,12,14,14,
+	11,13,12,15,13,11,11,12,13,14,11,12,13,13,14,12,
+	13,13,14,15,13,13,14,14,16,14,15,15,16,16,11,12,
+	11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,
+	16,16,13,15,13,16,14, 9,10,11,12,13,11,11,12,13,
+	14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,16,
+	11,11,12,13,14,12,12,13,14,15,12,13,13,14,15,14,
+	14,15,15,17,14,15,15,16,17,11,12,12,14,14,12,13,
+	13,14,15,12,13,12,15,15,14,15,15,16,17,14,15,15,
+	16,16,13,14,14,15,16,14,14,15,15,17,15,15,15,16,
+	17,16,16,17,16,18,16,17,17,18,18,13,14,14,16,15,
+	14,15,15,17,16,14,15,15,16,16,16,17,17,18,18,16,
+	16,16,17,16, 9,11,10,13,12,11,12,12,14,13,11,12,
+	11,15,13,13,14,14,16,15,13,14,13,17,14,11,12,12,
+	14,14,12,12,13,15,15,12,13,13,15,14,14,14,15,16,
+	16,14,15,15,17,16,11,12,11,14,13,12,13,13,15,14,
+	12,13,12,15,13,14,15,15,16,16,14,15,14,17,15,13,
+	14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
+	16,17,17,16,17,17,18,18,13,15,14,16,15,15,15,15,
+	17,16,14,15,14,17,15,16,17,17,18,18,16,17,16,18,
+	16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
+	10,11,11,13,14,10,12,11,14,13, 7, 9, 9,11,12, 9,
+	10,10,12,13, 9,10,10,13,12,11,11,12,13,15,11,12,
+	12,15,14, 8, 9, 9,12,11, 9,10,10,13,13, 9,11,10,
+	13,12,12,12,12,14,15,11,13,12,15,13,10,11,11,13,
+	14,11,12,12,13,15,11,12,12,14,14,13,13,14,14,16,
+	14,15,14,16,16,11,12,11,14,13,12,13,13,15,14,11,
+	13,12,15,13,14,15,15,16,16,13,14,14,16,14, 8, 9,
+	 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,13,
+	14,15,11,12,12,15,14, 9, 9,11,11,13,10,10,12,12,
+	14,10,10,11,13,14,12,12,13,14,16,12,13,13,15,15,
+	 9,11,10,13,12,10,11,11,13,14,10,12,11,14,13,12,
+	13,13,15,16,12,13,13,15,15,11,11,13,13,15,12,12,
+	14,13,15,13,13,14,14,15,14,14,15,14,17,15,15,15,
+	16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,15,
+	14,15,15,15,17,17,14,15,14,17,15, 7, 9, 9,12,11,
+	 9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
+	13,12,15,14, 9,10,10,12,12,10,10,11,12,13,10,11,
+	11,14,13,12,12,13,14,15,12,13,13,16,15, 9,10,10,
+	13,12,10,11,11,13,13,10,11,10,14,12,13,13,13,15,
+	15,12,13,12,15,14,11,12,12,14,14,12,12,13,14,15,
+	13,14,13,15,15,14,13,15,14,16,15,16,15,17,16,12,
+	12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,
+	16,16,17,14,15,14,17,14,10,11,12,13,14,11,12,13,
+	14,15,11,12,13,14,15,13,14,15,15,17,14,15,15,16,
+	16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,
+	14,14,16,14,18,15,15,16,16,17,12,13,12,15,15,13,
+	14,14,15,16,13,14,13,16,15,15,15,16,17,18,15,15,
+	15,17,16,14,14,15,14,17,15,14,16,14,17,15,15,16,
+	15,18,16,16,17,16,19,17,17,17,17,18,14,15,15,17,
+	16,15,16,16,17,17,15,16,15,18,16,17,17,18,18,18,
+	16,17,16,18,17,10,11,11,14,13,11,12,12,15,14,11,
+	13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,12,
+	12,15,14,12,13,13,15,14,13,14,13,16,14,14,15,15,
+	16,16,15,16,15,18,16,11,13,12,15,15,13,14,14,15,
+	15,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,
+	14,15,14,16,16,14,15,15,16,16,15,16,15,17,16,16,
+	16,17,16,17,17,18,17,19,18,14,15,15,17,16,15,16,
+	16,17,17,15,15,15,18,16,17,18,18,18,18,16,17,16,
+	19,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
+	11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
+	 9,10,11,12,13, 9,10,10,13,13,11,12,13,13,15,11,
+	12,12,15,14, 7, 9, 9,12,11, 9,10,10,12,13, 9,10,
+	10,13,12,11,12,12,14,15,11,12,11,14,13,11,11,12,
+	13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,
+	16,14,15,15,16,16,10,11,11,14,13,11,12,12,14,14,
+	11,12,12,15,13,14,14,14,16,16,13,14,13,16,14, 7,
+	 9, 9,11,12, 9,10,10,12,13, 9,10,10,12,12,11,12,
+	13,14,15,11,12,12,14,14, 9,10,10,12,13,10,10,11,
+	12,14,10,11,11,13,13,12,12,13,14,15,13,13,13,15,
+	15, 9,10,10,12,12,10,11,11,13,14,10,11,10,13,12,
+	12,13,13,15,16,12,13,12,15,14,11,12,13,14,14,12,
+	12,13,14,15,13,14,13,15,15,14,14,15,14,17,15,16,
+	15,17,16,11,12,12,14,14,13,13,13,15,15,12,13,12,
+	15,14,15,15,15,16,17,14,15,14,16,14, 8, 9, 9,12,
+	11, 9,10,10,12,13, 9,11,10,13,12,11,12,12,14,15,
+	11,12,12,15,14, 9,10,11,13,13,10,11,12,13,14,10,
+	11,11,14,13,12,13,13,15,15,12,13,13,16,15, 9,11,
+	 9,13,11,10,11,10,14,13,10,12,10,14,12,12,13,13,
+	15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,
+	16,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,
+	11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,
+	15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,
+	13,14,15,11,12,12,14,15,14,14,15,16,17,14,15,15,
+	16,16,11,12,13,14,15,12,13,14,15,16,13,14,14,15,
+	16,15,15,16,16,18,15,16,16,17,17,11,12,12,14,15,
+	13,13,14,14,16,12,13,13,15,15,15,15,16,16,18,14,
+	15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,
+	16,17,17,16,16,17,16,19,17,18,17,18,18,14,14,15,
+	16,16,15,15,16,16,17,14,15,15,16,16,17,17,18,18,
+	19,16,17,16,17,16,10,12,11,14,13,11,13,12,15,14,
+	11,13,12,15,14,14,15,15,16,16,13,15,14,17,15,12,
+	13,13,15,15,13,13,14,15,16,13,14,14,16,16,14,15,
+	15,17,17,15,16,16,17,17,11,13,12,15,12,13,14,13,
+	16,13,12,14,12,16,13,15,16,15,17,16,14,16,14,18,
+	14,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,
+	16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,
+	16,15,18,15,15,16,15,18,14,17,17,17,18,17,16,17,
+	16,19,16, 9,11,11,13,13,10,12,12,14,14,11,12,12,
+	15,14,13,14,14,16,16,13,14,14,16,16,10,11,12,14,
+	14,11,12,13,14,15,12,13,13,15,15,13,14,15,16,16,
+	14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,
+	13,12,15,15,14,15,15,16,17,14,15,14,17,16,12,13,
+	14,15,16,13,13,14,15,16,13,14,15,16,16,14,15,16,
+	16,18,15,16,16,18,18,13,14,14,16,15,14,15,15,17,
+	16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,
+	10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,
+	14,15,16,17,14,15,15,17,16,11,11,13,14,15,12,12,
+	14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,
+	17,17,12,13,12,15,15,13,14,14,16,16,13,14,13,16,
+	15,15,16,15,17,17,15,16,15,18,16,13,12,15,14,17,
+	14,13,16,14,17,14,14,16,15,18,15,14,17,16,18,16,
+	16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
+	15,18,16,17,17,17,18,18,16,17,16,19,17,10,11,11,
+	14,14,11,12,12,15,15,11,13,12,15,15,14,15,14,16,
+	16,14,15,15,17,16,11,12,12,15,14,12,12,13,15,15,
+	13,14,13,16,15,14,15,15,16,16,15,16,15,18,17,11,
+	13,12,15,15,13,14,13,15,15,12,14,13,16,15,15,16,
+	15,17,17,15,16,15,18,16,13,14,13,16,16,14,15,14,
+	16,16,14,15,15,17,16,16,16,16,16,18,16,18,17,19,
+	18,14,15,15,17,16,15,16,16,17,17,15,15,15,17,16,
+	17,17,18,18,19,16,17,16,18,16,12,13,13,15,16,13,
+	14,14,16,17,13,14,14,16,16,15,15,16,17,18,15,16,
+	16,18,17,13,13,14,14,17,14,14,15,15,17,14,14,15,
+	16,17,15,15,17,16,18,16,17,17,18,18,13,14,14,17,
+	16,14,15,15,17,17,14,15,14,17,16,16,17,17,18,18,
+	16,17,16,18,17,15,14,16,13,18,16,15,17,14,19,16,
+	16,17,15,18,17,16,18,15,19,18,18,18,17,19,15,16,
+	16,18,17,16,17,17,18,18,16,17,16,19,17,18,19,18,
+	19,19,17,18,17,20,18,11,12,12,15,15,13,13,14,15,
+	16,13,14,13,16,15,15,16,16,17,17,15,16,16,18,17,
+	12,14,13,16,15,13,13,14,15,16,14,15,14,17,16,16,
+	16,16,16,17,16,17,17,19,17,12,13,14,16,16,14,15,
+	15,16,17,13,15,13,17,15,16,17,17,18,18,16,17,16,
+	18,16,15,16,15,17,16,15,15,15,17,17,16,17,16,18,
+	17,17,16,17,16,18,18,19,18,20,18,15,16,16,17,17,
+	16,17,17,18,18,15,16,15,18,17,18,18,19,19,19,17,
+	18,16,19,16, 9,11,11,13,13,11,12,12,14,15,10,12,
+	12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,
+	14,14,12,12,13,15,15,12,13,13,15,15,14,15,15,16,
+	17,14,15,15,16,16,10,12,11,14,14,12,13,13,15,15,
+	11,13,12,15,14,14,15,15,16,17,13,15,14,17,16,13,
+	14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
+	17,17,18,16,17,17,18,18,12,14,13,16,15,13,15,14,
+	17,16,13,14,13,17,15,15,16,16,18,18,15,16,15,18,
+	16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,15,
+	14,15,15,16,17,14,15,15,16,16,11,12,13,15,15,12,
+	13,14,15,16,13,14,14,15,16,15,15,16,16,18,15,15,
+	16,17,17,11,12,12,14,15,13,13,14,15,16,12,13,13,
+	15,15,15,15,16,17,18,14,15,15,17,16,14,15,15,16,
+	17,15,15,16,16,17,15,16,16,17,17,16,16,17,16,19,
+	17,17,18,19,18,13,13,14,16,16,14,15,16,17,17,14,
+	14,15,16,16,16,16,17,18,18,16,16,16,18,16,10,12,
+	12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,
+	16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,
+	16,13,14,14,16,16,15,15,16,17,18,15,15,16,17,17,
+	11,13,12,15,14,13,14,13,16,15,12,14,12,16,14,15,
+	16,15,17,17,14,16,14,17,16,14,15,15,16,17,15,15,
+	16,16,18,15,16,16,17,17,16,17,17,17,19,17,17,17,
+	18,18,13,15,12,17,14,14,16,14,17,15,14,15,13,17,
+	14,16,17,16,18,17,15,17,14,19,15,11,12,12,15,15,
+	13,13,14,15,16,13,14,13,16,15,15,16,16,17,18,15,
+	16,16,17,17,12,14,13,16,16,13,13,15,15,17,14,15,
+	15,17,16,16,16,17,16,19,16,17,17,18,18,12,13,14,
+	15,16,14,14,15,16,17,13,14,13,16,15,16,17,17,18,
+	19,15,16,16,17,16,15,16,16,18,17,15,15,16,17,18,
+	16,17,17,18,18,16,16,18,16,19,18,19,19,20,19,15,
+	15,16,16,17,16,16,17,17,18,15,15,15,17,16,18,18,
+	19,18,20,17,17,16,18,16,12,13,13,16,15,13,14,14,
+	16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,
+	17,13,14,14,16,16,14,15,15,16,17,14,15,15,17,17,
+	16,17,17,18,18,16,17,17,18,18,13,14,13,17,14,14,
+	15,14,17,16,14,15,14,17,15,16,17,17,18,18,15,17,
+	15,19,15,16,16,16,17,18,16,16,17,17,19,16,17,17,
+	18,19,17,17,18,18,20,18,18,18,19,19,15,16,14,18,
+	13,16,17,16,19,15,16,17,15,19,14,18,18,18,19,17,
+	17,18,16,20,15,
+};
+
+static const static_codebook _44p6_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p6_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p6_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p3_0[] = {
+	 1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 8, 8,10, 8,
+	10,10, 5, 8, 7, 8,10,10, 8,10, 8, 6, 8, 9, 8,10,
+	12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
+	11,13,13,11,13,12, 6, 9, 8, 9,11,11, 8,12,10, 9,
+	11,11,11,12,13,11,13,13, 9,11,10,11,13,13,11,13,
+	11, 5, 9, 9, 8,11,11, 9,12,11, 8,10,11,10,11,13,
+	11,13,13, 9,11,11,11,13,13,11,13,12, 8,10,11,10,
+	12,13,10,13,12,10,10,13,11,11,14,12,13,14,11,13,
+	12,13,14,14,12,14,12, 8,11,10,11,12,13,11,14,12,
+	10,13,12,12,12,13,13,15,14,11,12,13,13,14,15,12,
+	14,12, 5, 9, 9, 9,11,12, 8,11,11, 9,11,11,11,12,
+	13,11,13,13, 8,11,10,11,13,13,10,13,11, 8,10,11,
+	11,12,14,11,13,12,11,13,12,12,12,14,13,15,14,10,
+	12,13,13,14,15,12,13,12, 8,11,10,10,12,13,10,13,
+	12,11,12,13,12,12,14,13,14,14,10,13,10,12,14,13,
+	11,14,11,
+};
+
+static const static_codebook _44p6_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p6_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p3_1[] = {
+	 5, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 8, 8, 7,
+	 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 8, 7, 7, 8, 7, 8,
+	 8, 7, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
+	 8, 9, 9, 8, 9, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 8,
+	 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
+	 8, 6, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 9,
+	 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
+	 8, 9, 8, 9, 9, 8, 8, 9, 8, 9, 9, 9, 9, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8,
+	 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9, 9,
+	 9, 9, 6, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
+	 8, 8, 9, 8, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
+	 8, 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9,
+	 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p6_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p6_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p4_0[] = {
+	 2, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 7,
+	 9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
+	10, 8, 9, 9, 8, 9,10, 9, 9,11,10,11,11, 8, 9, 9,
+	10,11,11, 9,11,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
+	 9, 9, 9,10,11,10,11,10, 8,10, 9,10,11,11, 9,11,
+	 9, 6, 8, 8, 7, 9, 9, 8,10, 9, 7, 9, 9, 9, 9,10,
+	 9,10,10, 8, 9, 9, 9,10,10, 9,11,10, 7, 9, 9, 8,
+	10,10, 9,10,10, 9, 9,10,10,10,11,10,11,11, 9,10,
+	10,10,11,11,10,11,10, 7, 9, 9, 9, 9,10, 9,10, 9,
+	 8,10, 9, 9, 9,11,10,11,11, 9,10,10,10,11,11, 9,
+	11, 9, 6, 8, 8, 8, 9,10, 7, 9, 9, 8, 9, 9, 9,10,
+	10, 9,10,10, 7, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9,
+	 9, 9,10, 9,10, 9, 9,10,10, 9, 9,11,10,11,11, 8,
+	 9,10,10,11,11, 9,11, 9, 7, 9, 9, 9,10,10, 8,10,
+	10, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
+	10,11,10,
+};
+
+static const static_codebook _44p6_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p6_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p6_p4_1[] = {
+	 6, 8, 8,10,10, 8, 9, 9,10,11, 8,10, 9,11,10, 9,
+	10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9,
+	10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,
+	11,11, 8, 9, 9,11,10,10,10,10,11,11, 9,10, 9,11,
+	11,10,11,11,11,11,10,11,10,11,11,10,10,11,11,11,
+	10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11, 8, 9,10,
+	11,11,10,10,11,11,11,10,10,10,11,11,10,11,11,12,
+	12,10,11,11,12,12,10,10,11,11,11,10,10,11,11,12,
+	11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
+	10,10,11,11,11,11,11,12,12,10,11,11,12,12,11,12,
+	12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12, 8,10, 9,11,11,10,
+	10,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,
+	11,12,12,10,10,10,11,11,10,11,11,12,12,11,11,11,
+	12,12,11,11,12,12,12,11,12,12,12,12,10,11,10,11,
+	11,11,11,11,12,12,10,11,10,12,11,11,12,11,12,12,
+	11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+	11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,13,11,12,11,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,
+	12,12,13,12,10,11,11,12,11,11,11,12,12,12,11,12,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,
+	12, 8,10,10,11,11,10,10,11,11,11,10,11,10,11,11,
+	10,11,11,12,12,10,11,11,12,12, 9,10,11,11,11,10,
+	10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,
+	12,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,
+	12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,12,
+	12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
+	10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,12,
+	12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,12,
+	12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,
+	10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,
+	10,11,11,12,12,10,11,11,12,11,11,12,12,12,12,11,
+	12,12,12,12,10,11,11,12,12,11,11,11,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,
+	12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,12,12,12,12,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,12,12,12,13,12,13,13,
+	13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,
+	12,12,12,13,13,13,12,13,12,13,13,12,13,13,13,13,
+	12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,
+	12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,
+	13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,
+	12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,13,
+	13,13, 8,10,10,11,11,10,10,11,11,11, 9,11,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,
+	10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
+	12,12,12,12, 9,11,10,11,11,10,11,11,12,12,10,11,
+	10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 9,
+	10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,
+	12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,
+	11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,
+	12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,13,12,12,13,13,13,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,
+	12,12,13,12,12,12,12,12,12,12,12,13,13,13,12,12,
+	13,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,
+	12,12,12,12,13,13,13,12,12,12,13,12,12,13,13,13,
+	13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
+	13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,
+	13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
+	12,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,
+	12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,
+	13,12,13,12,12,13,12,13,12,13,13,13,13,13,12,13,
+	13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
+	12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,
+	12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,
+	12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,
+	12,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
+	11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,13,12,12,12,13,12,11,12,12,12,12,12,12,
+	12,12,13,12,12,12,12,13,12,12,13,13,13,12,12,13,
+	13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,
+	12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,13,
+	13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,
+	12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,
+	12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
+	12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,
+	12,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,
+	13,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,
+	12,13,13,13,13,12,13,12,13,13,11,12,12,12,12,11,
+	12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,12,13,12,12,12,13,13,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
+	12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
+	12,13,12,13,12,12,13,12,13,12,13,13,13,13,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,13,
+	13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,13,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,12,12,13,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,
+	13,12,13,12,10,11,11,12,12,11,12,12,12,12,11,12,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,
+	11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,
+	12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,13,
+	13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
+	13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,
+	12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,
+	13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,12,12,13,12,13,13,12,12,12,13,13,12,12,12,12,
+	12,12,12,13,13,13,12,12,13,13,13,12,12,13,13,13,
+	12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,
+	12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
+	12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,
+	11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,
+	13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
+	12,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,
+	13,13,12,12,12,12,12,12,13,12,13,13,12,13,12,13,
+	12,12,13,13,13,13,12,13,12,13,13,11,11,11,12,12,
+	11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,12,12,12,11,12,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,
+	12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,
+	12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
+	13,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,
+	12,13,12,13,12,
+};
+
+static const static_codebook _44p6_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p6_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p6_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p6_p5_0[] = {
+	 2, 6, 6,10,10, 5, 7, 8,11,12, 5, 8, 7,12,11, 9,
+	11,11,13,15, 9,11,11,15,13, 6, 7, 8,11,11, 7, 7,
+	 9,11,13, 8, 9, 9,13,12,11,11,12,12,15,11,12,12,
+	15,14, 6, 8, 7,11,11, 8, 9, 9,12,13, 7, 9, 7,13,
+	11,11,12,12,14,15,11,12,11,15,12,10,11,11,12,14,
+	10,11,12,12,15,12,13,13,14,15,13,12,14,12,16,15,
+	15,15,16,16,10,11,11,14,12,12,13,13,15,14,10,12,
+	11,15,12,15,15,15,16,17,13,14,12,17,12, 6, 8, 8,
+	12,12, 8, 9,10,13,13, 8, 9, 9,13,13,12,12,13,15,
+	16,12,13,13,16,15, 8, 9,10,12,13, 9, 9,11,13,14,
+	10,11,11,14,14,13,13,14,15,16,13,14,14,16,16, 8,
+	10, 9,13,13,10,11,11,14,14, 9,10,10,14,13,13,14,
+	14,16,17,13,13,13,16,15,12,13,13,14,16,13,13,14,
+	14,16,14,14,14,16,16,15,15,16,15,18,16,17,17,18,
+	18,12,13,13,15,15,14,14,14,16,16,13,14,13,16,15,
+	16,16,17,18,18,15,16,15,18,15, 6, 8, 8,12,12, 8,
+	 9, 9,13,13, 8,10, 9,13,13,12,13,13,15,16,12,13,
+	12,16,15, 8, 9,10,13,13, 9,10,10,13,14,10,11,11,
+	14,14,13,13,13,15,16,13,14,14,17,16, 8,10, 9,13,
+	13,10,11,11,14,14, 9,11, 9,14,13,13,14,14,16,16,
+	13,14,13,16,14,12,13,13,15,16,13,13,14,15,16,14,
+	14,14,16,16,15,15,16,15,18,17,17,17,18,18,12,13,
+	13,16,14,14,14,14,16,16,13,14,13,16,14,16,17,17,
+	18,18,15,16,15,18,15,11,12,13,14,16,13,13,14,15,
+	17,13,14,14,16,17,16,16,17,17,19,16,17,17,18,19,
+	13,13,14,16,16,14,14,15,16,17,14,15,15,17,17,17,
+	16,17,17,19,17,17,18,19,19,13,14,14,16,16,14,14,
+	15,17,18,14,15,14,17,17,17,17,18,18,19,17,17,17,
+	18,19,16,16,16,17,18,17,17,17,18,19,17,17,17,18,
+	19,18,18,19,18,20,19,20,19,21,20,16,17,17,18,18,
+	17,17,18,19,19,17,17,17,19,18,19,19,19,19,20,19,
+	19,19,20,19,11,13,12,16,14,13,14,14,17,16,13,14,
+	13,17,15,16,17,17,18,18,16,17,16,19,17,13,14,14,
+	16,16,14,14,14,17,17,14,15,15,17,16,17,17,17,19,
+	19,17,18,17,19,18,13,14,13,17,16,14,15,15,17,17,
+	14,15,14,18,16,17,17,17,19,19,17,17,16,19,17,16,
+	17,17,18,19,17,17,17,18,18,17,18,17,19,18,18,19,
+	18,19,19,19,20,19,20,20,16,17,16,18,17,17,17,17,
+	18,18,17,18,17,19,17,19,19,19,19,20,18,19,19,20,
+	18, 6, 8, 8,12,12, 8, 9, 9,13,13, 8,10, 9,13,13,
+	11,13,13,15,16,12,13,13,16,15, 8, 9, 9,13,13, 9,
+	 9,10,13,14,10,11,11,14,14,12,12,13,14,16,13,14,
+	14,17,16, 8,10, 9,13,13,10,11,11,14,14, 9,11,10,
+	14,13,13,14,14,16,16,13,14,13,16,15,12,13,13,14,
+	16,12,13,14,14,16,13,14,14,16,16,15,14,16,15,18,
+	16,17,17,18,17,12,13,13,16,15,14,14,14,16,16,13,
+	14,13,16,15,16,16,17,17,17,15,16,15,18,15, 7, 9,
+	 9,13,13, 9, 9,11,13,14, 9,10,10,14,13,12,13,14,
+	15,16,12,14,13,17,15, 9, 9,10,13,14,10, 9,11,13,
+	15,11,11,11,14,14,13,12,14,14,17,14,14,14,17,16,
+	 9,10,10,14,13,11,11,11,14,14,10,11,10,15,13,14,
+	14,14,16,17,13,14,13,17,14,13,13,14,14,16,13,13,
+	14,14,17,14,14,14,16,16,15,14,16,15,18,17,17,17,
+	18,18,13,14,13,16,15,14,14,15,17,16,13,14,13,17,
+	15,17,16,17,17,17,15,16,14,18,14, 7, 9, 9,13,13,
+	 9,10,10,13,14, 9,11,10,14,13,13,14,14,16,16,13,
+	14,14,17,15, 9,10,10,14,13, 9,10,11,13,14,11,12,
+	11,15,14,13,13,14,14,16,14,15,15,17,17, 9,10,10,
+	14,14,11,12,12,14,15,10,11,10,15,13,14,15,15,17,
+	17,14,15,13,17,14,13,14,13,16,16,13,13,14,15,16,
+	14,15,15,17,17,15,14,16,15,18,17,18,17,20,18,13,
+	14,14,16,16,15,15,15,17,17,13,14,13,17,15,17,17,
+	18,18,18,15,16,14,19,14,12,13,13,15,16,13,13,15,
+	16,17,13,14,14,16,16,15,15,17,17,19,16,17,17,19,
+	18,13,13,14,15,17,14,13,15,15,17,14,15,15,16,17,
+	16,15,18,16,19,17,17,17,18,19,13,14,14,17,16,14,
+	15,15,17,17,14,15,14,17,16,17,17,17,18,19,16,17,
+	16,19,17,16,16,17,16,18,16,16,17,16,19,17,17,18,
+	18,19,18,17,18,17,21,19,19,19,20,19,16,17,17,18,
+	18,17,17,18,18,19,16,17,16,18,18,19,19,19,19,20,
+	18,18,17,20,18,11,13,13,16,15,13,14,14,16,17,13,
+	15,14,17,16,16,17,17,18,18,17,17,17,19,18,13,14,
+	13,17,16,14,13,14,16,17,15,16,15,18,16,17,16,17,
+	17,19,18,18,18,20,18,13,14,14,16,17,15,15,15,17,
+	18,14,15,14,18,16,18,18,18,19,20,17,18,16,20,17,
+	16,17,16,18,18,16,16,17,18,18,17,18,18,19,18,18,
+	17,19,17,20,19,20,19,22,20,16,16,17,18,18,18,17,
+	17,19,19,16,17,16,18,17,19,20,19,22,21,18,19,18,
+	21,17, 6, 8, 8,12,12, 8, 9,10,13,13, 8, 9, 9,13,
+	13,12,13,13,15,16,11,13,13,16,15, 8, 9,10,13,13,
+	 9,10,11,13,14,10,11,11,14,14,13,13,14,15,16,13,
+	14,14,16,16, 8, 9, 9,13,13,10,11,11,14,14, 9,10,
+	 9,14,13,13,14,14,16,17,12,14,12,16,14,12,13,13,
+	15,16,13,13,14,15,16,13,14,14,15,17,15,15,16,15,
+	18,16,16,17,17,17,12,13,13,16,14,13,14,14,16,16,
+	12,14,13,16,14,16,17,17,18,18,15,15,14,18,14, 7,
+	 9, 9,13,13, 9,10,11,13,14, 9,10,10,14,13,13,14,
+	14,15,17,13,14,14,16,15, 9,10,10,14,14,10,10,11,
+	13,15,11,12,12,15,14,14,13,15,14,17,14,15,15,17,
+	17, 9,10,10,13,14,11,11,12,14,15, 9,11,10,14,13,
+	14,15,15,16,18,13,14,13,16,14,13,14,14,16,16,13,
+	13,14,15,17,15,15,15,16,17,15,14,16,15,18,17,17,
+	18,19,18,13,14,14,16,16,14,15,15,17,17,13,14,13,
+	16,15,17,17,18,18,18,15,16,14,18,15, 7, 9, 9,13,
+	13, 9,10,10,13,14, 9,11,10,14,13,12,13,14,15,16,
+	12,14,13,16,15, 9,10,10,13,14,10,10,11,13,14,11,
+	11,11,15,14,13,13,14,14,16,14,14,14,17,16, 9,10,
+	 9,14,13,11,11,11,14,14,10,11, 9,15,13,14,14,14,
+	16,16,13,14,12,17,14,13,13,14,15,16,13,13,14,15,
+	16,14,15,14,16,17,15,14,16,14,18,16,17,17,18,18,
+	13,14,13,16,14,14,14,14,16,16,13,14,13,17,14,17,
+	17,17,18,18,15,16,14,18,15,11,13,13,16,16,13,14,
+	15,16,17,13,14,14,17,16,16,17,17,18,19,17,17,17,
+	19,18,13,14,14,17,17,13,13,15,16,18,15,15,15,17,
+	17,17,16,18,17,20,18,17,18,19,19,13,14,14,16,17,
+	15,15,16,16,18,14,15,14,16,16,17,17,18,18,20,17,
+	18,16,18,17,16,17,16,19,18,16,16,17,18,19,18,18,
+	18,19,19,18,17,18,17,21,20,19,19,21,21,16,16,17,
+	18,18,17,17,18,19,19,16,17,16,19,18,20,20,20,19,
+	21,18,18,17,20,18,12,13,13,16,15,13,14,14,16,16,
+	13,14,13,17,16,16,17,17,18,18,15,17,15,19,17,13,
+	14,14,16,17,14,14,15,16,17,14,15,15,17,17,16,16,
+	17,17,18,17,17,17,19,19,13,14,13,17,15,14,15,15,
+	17,16,14,15,13,17,15,17,18,17,19,18,16,17,15,20,
+	16,16,17,17,18,18,16,16,17,18,18,17,18,17,19,18,
+	17,17,18,18,20,19,20,19,20,19,16,16,16,19,16,17,
+	17,17,19,18,16,17,16,19,16,19,19,19,19,19,18,19,
+	17,19,17,11,13,13,16,16,13,14,14,17,17,13,14,14,
+	17,17,15,17,17,19,19,16,18,17,20,19,12,14,14,17,
+	17,13,14,15,17,18,14,15,15,17,18,16,16,17,18,20,
+	17,18,18,20,18,13,14,14,17,17,14,15,15,17,18,14,
+	15,15,17,17,17,18,17,19,19,17,18,17,19,19,15,16,
+	16,18,18,15,16,17,18,19,16,17,17,19,19,17,17,18,
+	18,21,18,19,19,21,19,16,17,17,18,18,17,17,18,19,
+	19,17,18,17,19,19,19,19,19,20,20,18,19,18,21,19,
+	12,13,13,16,16,13,14,14,16,17,13,15,14,17,16,15,
+	16,17,17,19,16,17,17,19,18,13,13,14,16,17,14,13,
+	15,16,17,14,15,15,17,17,15,15,17,17,20,17,17,18,
+	19,18,13,14,14,17,16,15,15,15,17,18,14,15,14,17,
+	16,17,17,17,18,18,16,17,16,19,17,16,15,17,17,19,
+	16,15,17,16,19,17,16,17,18,19,17,16,19,16,20,19,
+	18,19,19,19,16,17,17,18,18,17,17,17,18,19,16,17,
+	16,19,18,20,19,19,20,19,18,18,17,20,17,11,13,13,
+	16,16,13,14,15,16,17,14,15,14,18,16,17,17,17,18,
+	21,17,18,17,20,19,13,14,14,17,16,13,14,15,16,18,
+	15,16,15,18,17,17,16,17,17,19,17,18,18,20,19,13,
+	14,14,16,17,15,15,16,17,18,14,15,14,18,17,17,18,
+	18,19,20,17,18,16,19,17,16,17,15,19,18,16,16,16,
+	18,18,17,18,17,20,19,18,17,18,17,20,20,20,19,22,
+	20,16,17,17,18,19,18,18,18,19,20,16,17,16,19,18,
+	20,19,19,20,20,18,19,17,20,17,13,14,14,16,17,14,
+	14,16,16,18,14,16,15,17,16,16,16,17,17,18,17,17,
+	16,19,18,14,14,15,16,17,14,14,16,16,18,16,16,16,
+	17,17,16,15,17,16,19,18,18,18,19,19,14,15,15,17,
+	17,15,16,16,17,18,14,16,14,18,16,17,17,18,18,19,
+	16,17,16,19,17,16,16,17,16,18,16,16,17,16,19,18,
+	18,18,17,18,17,16,18,16,20,19,19,19,19,19,16,17,
+	17,18,18,17,17,18,19,19,16,17,16,19,17,18,19,19,
+	19,20,17,18,16,20,16,11,14,13,17,17,14,14,16,16,
+	18,14,16,14,19,16,18,18,19,18,19,18,19,18,21,18,
+	13,15,14,18,16,14,14,16,16,18,16,17,16,19,17,18,
+	16,19,17,20,19,19,19,21,19,13,14,15,17,18,17,16,
+	17,17,19,14,16,14,18,16,20,19,19,20,21,18,19,16,
+	21,17,17,18,16,19,17,16,16,17,18,18,19,19,18,21,
+	18,17,17,18,17,20,20,20,20,22,20,17,17,18,18,20,
+	19,19,19,18,20,16,17,17,19,19,21,21,21,20,21,17,
+	19,17,23,17,11,13,13,16,16,13,14,14,17,17,13,14,
+	14,17,17,16,17,17,19,20,15,16,16,19,19,13,14,14,
+	16,17,14,15,15,17,18,14,15,15,17,17,17,17,18,19,
+	19,17,17,18,19,19,13,14,14,17,16,14,15,15,17,17,
+	13,15,14,18,17,17,18,18,19,20,16,17,16,19,18,16,
+	16,17,18,18,17,17,17,18,19,17,18,17,19,19,19,19,
+	19,19,20,19,20,19,20,20,15,16,16,18,17,16,17,17,
+	20,18,15,16,16,19,17,19,19,19,20,20,17,18,17,21,
+	17,11,13,13,16,16,13,14,15,16,17,13,15,14,17,16,
+	17,17,18,18,20,17,17,17,19,19,13,14,14,17,17,14,
+	14,15,17,18,15,15,15,18,17,17,17,18,17,20,18,18,
+	17,20,18,13,14,14,16,17,15,15,16,17,18,14,15,13,
+	17,17,17,18,18,19,20,17,17,16,19,17,16,17,17,18,
+	18,16,16,17,18,18,18,18,18,19,19,18,17,19,18,21,
+	19,20,20,20,20,16,15,17,18,18,17,17,18,18,20,16,
+	16,16,18,17,20,19,20,21,22,17,18,17,20,17,12,13,
+	13,16,16,13,14,15,16,17,13,14,14,17,16,16,17,18,
+	18,19,15,16,16,19,18,13,14,14,16,17,14,14,15,16,
+	17,14,15,15,17,17,16,16,17,17,19,17,17,17,19,18,
+	13,14,13,17,16,14,15,15,17,17,13,15,13,17,16,17,
+	17,17,19,19,15,17,15,19,17,16,17,17,18,18,16,16,
+	17,17,19,17,18,17,19,19,18,17,19,17,19,19,19,19,
+	20,19,15,17,15,19,16,17,17,16,19,18,16,17,15,18,
+	16,19,19,19,20,19,17,19,16,19,16,11,14,14,17,17,
+	15,14,16,16,18,15,16,14,18,16,18,18,19,18,21,18,
+	19,18,20,18,13,15,14,18,17,14,14,16,16,18,16,17,
+	16,19,17,17,17,19,17,22,19,19,19,21,19,13,14,15,
+	17,18,17,16,17,17,19,14,16,14,18,16,19,19,19,20,
+	21,18,18,16,20,17,17,18,16,19,18,15,17,17,19,19,
+	19,19,18,21,19,18,17,20,17,21,22,21,20,21,21,17,
+	16,19,18,20,19,18,19,18,20,16,17,16,19,18,21,20,
+	21,19,23,18,19,16,20,17,13,14,14,17,16,14,14,15,
+	16,18,14,16,14,17,16,16,16,17,17,19,16,17,16,19,
+	17,14,15,15,17,17,14,14,16,16,17,15,16,16,18,17,
+	16,16,17,17,19,17,18,17,19,18,14,15,14,17,16,16,
+	16,16,17,17,14,16,14,17,16,18,18,18,18,19,16,17,
+	15,19,16,17,17,17,18,18,16,15,17,17,18,18,18,18,
+	19,19,17,16,18,16,19,19,19,19,19,19,16,17,16,19,
+	16,18,18,17,19,18,16,17,16,19,16,19,19,20,19,19,
+	17,18,16,20,16,
+};
+
+static const static_codebook _44p6_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p6_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p6_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p6_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p6_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p6_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p6_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p6_0[] = {
+	 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
+	10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 9, 9, 9,10,
+	12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
+	12,13,13,11,13,11, 6, 9, 9, 9,11,11, 9,12,10, 9,
+	11,11,11,11,13,12,13,13, 9,11,10,12,13,13,11,13,
+	11, 6, 9, 9, 9,11,12, 9,12,11, 9,10,11,10,10,13,
+	12,13,13, 9,11,11,12,13,12,11,13,11, 7, 9,10, 9,
+	10,12,10,12,11,10,10,12,10,10,12,12,12,13,10,11,
+	11,12,12,13,10,12,10, 7,10,10,11,11,14,11,14,11,
+	10,12,11,11,11,14,14,14,14,10,11,12,14,14,14,11,
+	14,11, 6, 9, 9, 9,11,12, 9,12,11, 9,11,11,11,11,
+	13,12,12,13, 9,11,10,12,13,13,10,13,10, 7,10,10,
+	11,11,14,11,14,11,10,12,11,11,11,14,14,15,14,10,
+	11,12,13,14,15,11,14,11, 7,10, 9,10,11,12, 9,12,
+	10,10,11,11,10,10,12,12,13,12, 9,12,10,12,13,12,
+	10,12,10,
+};
+
+static const static_codebook _44p6_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p6_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p6_1[] = {
+	 2, 6, 6, 6, 7, 8, 6, 8, 7, 6, 7, 7, 7, 7, 8, 7,
+	 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9,
+	 9, 8, 9, 9, 8, 9, 9, 9, 9,10, 9,10,10, 8, 9, 9,
+	 9,10,10, 9,10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8,
+	 9, 9, 9, 9,10, 9,10,10, 8, 9, 9, 9,10, 9, 9,10,
+	 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,10,
+	 9, 9,10, 8, 9, 9, 9,10, 9, 9,10, 9, 7, 8, 8, 8,
+	 9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
+	 9, 9,10, 9, 9, 9, 9, 7, 9, 9, 9, 9,10, 9,10, 9,
+	 9, 9, 9, 9, 9,10,10,10,10, 9, 9, 9,10,10,10, 9,
+	10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,
+	10, 9,10,10, 8, 9, 9, 9,10, 9, 9,10, 9, 7, 9, 9,
+	 9, 9,10, 9,10, 9, 9, 9, 9, 9, 9,10,10,10,10, 9,
+	 9, 9,10,10,10, 9,10, 9, 7, 8, 8, 8, 9, 9, 8, 9,
+	 9, 8, 9, 9, 9, 9,10, 9, 9,10, 8, 9, 8, 9, 9, 9,
+	 9,10, 9,
+};
+
+static const static_codebook _44p6_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p6_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p6_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p6_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p6_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p6_p7_1[] = {
+	 1, 4, 5, 5,10,10, 5,10,10, 5,10,10,10,10,10,10,
+	10,10, 5,10,10,10,10,10,10,10,10, 7,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10, 6,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
+	11,11,11,
+};
+
+static const static_codebook _44p6_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p6_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p6_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p6_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p6_p7_2[] = {
+	 1, 2, 3, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p6_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p6_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p6_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p6_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p6_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p6_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p6_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p6_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p6_short[] = {
+	 2, 8,13,15,16,18,21,22, 5, 4, 6, 8,10,12,17,21,
+	 9, 5, 5, 6, 8,11,15,19,11, 6, 5, 5, 6, 7,12,14,
+	14, 8, 7, 5, 4, 4, 9,11,16,11, 9, 7, 4, 3, 7,10,
+	22,15,14,12, 8, 7, 9,11,21,16,15,12, 9, 5, 6, 8,
+};
+
+static const static_codebook _huff_book__44p6_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p6_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p7_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p7_l0_0[] = {
+	 2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5,
+	 7, 7, 9, 9,11, 9,12,11,12,12, 4, 5, 5, 7, 7, 9,
+	 9, 9,10,10,11,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5,
+	12, 6,12,10, 7, 7, 7, 8, 7, 8, 9, 5,11, 6,12,10,
+	12, 8, 9, 9, 9, 9,10,10,11, 7,11, 7,12, 9, 8, 9,
+	 8, 9, 9,10,10, 7,11, 7,11, 9,11,10,10,10,10,10,
+	10,10,11,10,11, 8,11, 9,10,10,10,10,10,10,10,10,
+	11, 8,10, 9,11,10,11,11,11,11,11,10,11,10,12,10,
+	12,11,10,11,11,11,11,10,11,10,11,10,12,11,12,11,
+	12,12,12,12,12,12,12,12,12,12,13,12,11,12,11,12,
+	12,12,12,12,11,12,11,12,13,
+};
+
+static const static_codebook _44p7_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p7_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p7_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p7_l0_1[] = {
+	 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p7_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p7_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p7_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_l1_0[] = {
+	54,
+	29,
+	79,
+	0,
+	108,
+};
+
+static const char _vq_lengthlist__44p7_l1_0[] = {
+	 1, 2, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static const static_codebook _44p7_l1_0 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p7_l1_0,
+	1, -514516992, 1620639744, 7, 0,
+	(long *)_vq_quantlist__44p7_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p7_lfe[] = {
+	 2, 3, 1, 3,
+};
+
+static const static_codebook _huff_book__44p7_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p7_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p7_long[] = {
+	 2, 7,14,16,17,17,18,20, 6, 3, 5, 8,10,11,13,15,
+	13, 5, 3, 5, 8, 9,11,12,15, 7, 4, 3, 5, 7, 9,11,
+	16,10, 7, 5, 6, 7, 9,10,17,11, 8, 7, 7, 6, 8, 8,
+	19,13,11, 9, 9, 8, 8, 9,20,14,13,11,10, 8, 9, 9,
+};
+
+static const static_codebook _huff_book__44p7_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p7_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p7_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p1_0[] = {
+	 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
+	10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10,
+	10,11,12,10,11,11, 6, 8, 7, 8,10, 9, 8,10, 9, 8,
+	10,10,10,11,11,10,12,11, 8,10, 9,10,11,11,10,12,
+	10, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
+	 9,11,11, 8,10,10,10,11,12,10,12,11, 7, 9, 9, 9,
+	10,11, 9,11,11, 9, 9,11,10,11,12,11,11,12, 9,11,
+	11,11,12,12,11,12,12, 7, 9, 9,10,11,11,10,12,11,
+	 9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,
+	13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
+	12,10,12,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	10,11,12,10,11,11,10,11,11,11,11,13,12,13,13, 9,
+	10,11,11,12,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
+	10, 9,11,11,11,12,12,11,12,12, 9,11, 9,11,12,11,
+	10,12,11,
+};
+
+static const static_codebook _44p7_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p7_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p7_p2_0[] = {
+	 4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8,
+	10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 8, 8,
+	 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
+	13,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 8, 9, 8,11,
+	10,10,11,11,13,13,10,11,10,13,12, 9,10,10,12,12,
+	10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
+	13,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
+	10,13,12,12,13,13,14,15,12,13,12,15,12, 6, 8, 8,
+	10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,12,13,
+	14,10,11,11,13,13, 8, 9, 9,11,12, 9,10,11,12,13,
+	 9,10,10,12,13,11,12,13,13,15,11,12,12,14,14, 8,
+	 9, 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
+	13,14,15,11,12,12,14,13,10,11,12,13,14,11,12,13,
+	13,15,12,13,13,14,14,13,13,14,14,16,14,15,14,16,
+	15,10,12,11,14,13,12,12,13,14,14,11,12,12,14,14,
+	14,14,15,15,16,13,14,14,16,14, 6, 8, 8,11,10, 8,
+	 9, 9,11,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
+	11,14,13, 8, 9, 9,12,11, 9,10,10,12,13, 9,11,10,
+	13,12,11,12,12,14,14,11,13,12,15,14, 8, 9, 9,12,
+	11, 9,10,10,13,12, 9,11,10,13,12,11,12,12,14,14,
+	11,13,12,15,13,10,11,12,13,14,11,12,13,13,14,12,
+	13,12,14,14,13,13,14,14,16,14,15,14,16,16,10,12,
+	11,14,13,12,13,13,14,14,11,13,12,15,13,14,14,15,
+	16,16,13,14,13,16,14, 9,10,11,12,13,11,11,12,13,
+	14,11,11,12,13,14,13,13,14,14,16,13,14,14,15,15,
+	11,11,12,13,14,12,12,13,13,15,12,13,13,14,15,14,
+	14,15,15,17,14,14,15,16,16,11,12,12,13,14,12,12,
+	13,14,15,12,13,12,14,15,14,14,15,15,17,14,15,14,
+	16,16,13,14,14,15,16,14,14,15,15,17,14,15,15,16,
+	16,15,16,17,16,18,16,17,16,17,17,13,14,14,16,15,
+	14,15,15,16,16,14,15,14,16,15,16,16,17,17,18,16,
+	16,16,17,16, 9,11,10,13,12,11,12,11,14,13,11,12,
+	11,14,13,13,14,14,16,15,13,14,13,16,14,11,12,12,
+	14,13,12,12,13,14,14,12,13,13,15,14,14,14,15,16,
+	16,14,15,14,17,15,11,12,11,14,13,12,13,13,15,14,
+	12,13,12,15,13,14,15,14,16,16,14,15,14,17,15,13,
+	14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,
+	16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
+	17,16,14,15,14,17,15,16,17,17,17,17,16,16,16,18,
+	16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
+	10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,12, 9,
+	10,10,12,13, 9,10,10,13,12,11,11,12,13,15,11,12,
+	12,15,14, 8, 9, 9,12,11, 9,10,11,12,13, 9,11,10,
+	13,12,11,12,12,14,15,11,13,12,15,14,10,11,11,13,
+	14,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,
+	13,14,14,16,15,11,12,11,14,13,12,13,13,14,14,11,
+	13,12,14,13,14,14,15,16,16,13,14,14,16,14, 8, 9,
+	 9,11,12, 9,10,10,12,13, 9,10,10,13,12,11,12,12,
+	14,15,11,12,12,14,14, 9, 9,10,11,13,10,10,12,12,
+	14,10,10,11,13,13,12,12,13,14,16,12,12,13,15,15,
+	 9,10,10,13,12,10,11,11,13,14,10,12,11,14,13,12,
+	13,13,15,15,12,13,13,15,15,11,11,12,13,15,12,12,
+	13,13,15,12,13,13,14,15,14,14,15,15,17,14,15,15,
+	16,16,11,13,12,15,14,13,13,13,15,15,12,14,13,15,
+	14,15,15,15,16,16,14,15,15,17,15, 7, 9, 9,12,11,
+	 9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
+	13,12,15,14, 9,10,10,12,12,10,10,11,12,13,10,11,
+	11,14,13,12,12,13,14,15,12,13,13,15,14, 9,10,10,
+	12,12,10,11,11,13,13,10,11,10,14,12,12,13,13,15,
+	15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,
+	12,13,13,15,15,14,13,14,13,16,14,15,15,16,16,11,
+	12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,
+	15,16,16,14,15,14,17,14,10,11,12,13,14,11,12,13,
+	14,15,11,12,12,14,15,13,14,15,15,17,14,14,14,16,
+	16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,
+	14,14,15,14,17,15,15,15,15,17,11,13,12,15,15,13,
+	13,14,15,16,12,14,13,16,15,15,15,15,17,17,15,15,
+	15,17,16,14,14,15,14,16,14,14,16,14,17,15,15,15,
+	14,17,16,16,17,15,18,17,17,17,16,18,14,15,15,17,
+	16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,
+	16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,
+	13,12,15,14,14,14,14,16,16,14,15,14,16,15,11,12,
+	12,15,13,12,13,13,15,14,13,14,13,16,14,14,15,15,
+	16,16,15,16,15,17,16,11,13,12,15,14,13,13,14,15,
+	15,12,14,13,16,14,15,15,15,17,17,14,16,15,17,16,
+	14,14,14,16,15,14,15,15,16,16,15,16,15,17,16,16,
+	16,16,16,17,16,17,17,18,17,14,15,15,16,16,15,15,
+	16,17,16,14,15,15,17,16,17,17,17,18,18,16,17,16,
+	18,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
+	11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
+	 9,10,11,12,13, 9,11,10,13,12,11,12,13,14,15,11,
+	12,12,15,14, 8, 9, 9,12,11, 9,10,10,12,13, 9,10,
+	10,13,12,11,12,12,14,15,11,12,12,14,13,11,11,12,
+	13,14,11,12,13,13,15,12,13,13,14,14,13,14,14,14,
+	16,14,15,14,16,16,10,11,11,14,13,11,12,12,14,14,
+	11,12,12,14,13,13,14,14,15,16,13,14,13,16,14, 7,
+	 9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
+	13,14,15,11,12,12,14,14, 9,10,10,12,12,10,10,11,
+	12,13,10,11,11,13,13,12,12,13,13,15,12,13,13,15,
+	15, 9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,
+	12,13,13,14,15,12,13,12,15,13,11,12,12,14,14,12,
+	12,13,14,15,13,14,13,15,15,14,13,15,13,16,15,15,
+	15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,
+	15,14,14,15,15,16,17,13,14,13,16,13, 8, 9, 9,12,
+	11, 9,10,10,12,13, 9,10,10,13,12,11,12,12,14,15,
+	11,12,12,15,14, 9,10,10,12,13,10,11,12,13,14,10,
+	11,11,14,13,12,13,13,15,15,12,13,13,15,15, 9,10,
+	 9,13,11,10,11,10,13,13,10,12,10,14,12,12,13,12,
+	15,15,12,13,12,15,14,11,12,13,14,15,12,13,14,14,
+	15,13,13,13,15,15,14,15,15,15,17,15,15,15,16,16,
+	11,12,11,15,13,12,13,13,15,14,12,13,12,16,13,14,
+	15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,
+	13,14,15,11,12,12,14,14,14,14,15,15,17,14,14,14,
+	15,16,11,12,13,14,15,12,13,14,14,16,13,14,13,15,
+	15,14,15,16,15,17,15,15,15,17,17,11,12,12,13,15,
+	13,13,14,14,16,12,13,13,14,15,15,15,15,16,17,14,
+	15,15,16,16,14,15,15,16,16,14,15,15,16,17,15,15,
+	16,16,17,16,16,17,16,18,17,17,17,18,18,14,14,15,
+	15,16,15,15,15,16,17,14,15,15,16,16,16,17,17,17,
+	18,16,16,16,17,16,10,11,11,14,13,11,13,12,15,14,
+	11,13,12,15,14,14,15,14,16,16,13,15,14,17,15,11,
+	12,13,15,15,12,13,14,15,16,13,14,13,16,15,15,15,
+	15,16,17,15,15,15,17,16,11,13,11,15,12,13,14,13,
+	16,13,12,14,12,16,13,15,15,15,17,15,14,16,14,17,
+	14,14,15,15,16,17,15,15,16,16,17,15,16,15,17,17,
+	16,16,17,17,18,16,17,17,18,18,14,15,14,17,13,15,
+	16,15,17,15,15,16,15,17,14,16,17,16,18,16,16,17,
+	16,18,15, 9,11,11,13,13,10,12,12,14,14,11,12,12,
+	14,14,13,14,14,15,16,13,14,14,16,16,10,11,12,14,
+	14,11,12,13,14,15,11,13,13,15,15,13,14,14,15,16,
+	14,15,15,16,16,11,12,12,14,14,12,13,13,15,15,12,
+	13,12,15,14,14,15,15,16,16,14,15,14,17,16,12,13,
+	13,15,16,13,13,14,15,16,13,14,14,16,16,14,15,16,
+	16,17,15,16,16,17,17,13,14,14,16,15,14,15,15,17,
+	16,14,15,14,17,15,16,16,17,17,17,16,16,16,18,16,
+	10,11,12,14,14,11,12,13,14,15,11,13,12,15,15,13,
+	14,15,16,16,14,15,15,17,16,11,11,13,14,15,12,12,
+	14,14,16,12,13,14,15,15,14,14,15,16,17,15,15,15,
+	17,17,12,13,12,15,15,13,14,14,16,15,13,14,13,16,
+	15,15,16,15,17,17,15,16,15,17,16,13,12,15,14,16,
+	14,13,15,14,17,14,13,15,15,17,15,14,17,15,18,16,
+	15,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
+	15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,
+	14,14,11,12,12,14,15,11,13,12,15,14,13,14,14,16,
+	16,14,15,14,16,16,11,12,12,14,14,12,12,13,15,15,
+	12,13,13,15,15,14,14,15,16,16,14,15,15,17,16,11,
+	12,12,15,15,13,13,13,15,15,12,13,13,15,15,15,15,
+	15,17,17,14,15,15,17,16,13,14,13,16,15,14,14,14,
+	16,16,14,15,14,17,16,15,15,16,16,17,16,17,16,18,
+	17,14,15,15,16,16,15,15,15,17,17,14,15,15,17,16,
+	16,17,17,18,18,16,17,16,18,16,12,13,13,15,15,13,
+	14,14,16,16,13,14,14,16,16,14,15,16,16,18,15,16,
+	16,17,17,13,13,14,14,16,14,14,15,15,17,14,14,15,
+	15,17,15,15,17,15,18,16,16,17,17,18,13,14,14,16,
+	16,14,15,15,16,17,14,15,15,17,16,16,17,16,17,18,
+	16,17,16,18,17,15,14,16,13,18,16,15,17,14,18,16,
+	15,17,14,18,17,16,18,15,19,17,17,18,16,19,15,16,
+	16,17,17,16,17,17,18,18,16,17,16,18,17,18,18,18,
+	19,18,17,18,17,19,17,11,12,12,15,15,13,13,14,15,
+	16,13,14,13,16,15,15,15,15,16,17,15,16,15,17,16,
+	12,13,13,15,15,13,13,14,15,16,14,15,14,16,15,15,
+	15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,
+	15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
+	18,16,15,15,15,17,15,14,15,15,16,16,16,17,16,17,
+	16,16,16,17,16,17,17,18,17,19,18,15,15,16,17,17,
+	16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,
+	17,16,18,16, 9,11,11,13,13,11,12,12,14,14,10,12,
+	12,14,14,13,14,14,15,16,13,14,14,16,15,11,12,12,
+	14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,16,
+	17,14,15,15,16,16,10,12,11,14,14,11,13,13,15,15,
+	11,13,12,15,14,14,14,15,16,16,13,14,14,16,15,13,
+	14,14,15,16,14,14,15,15,17,14,15,15,16,17,16,16,
+	16,16,18,16,16,17,17,17,12,13,13,16,15,13,14,14,
+	16,16,12,14,13,16,15,15,16,16,17,17,14,16,15,17,
+	16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,14,
+	14,14,15,16,16,13,14,14,16,16,11,12,12,14,15,12,
+	13,14,15,15,13,13,13,15,15,14,15,15,16,17,15,15,
+	15,16,17,11,12,12,14,14,12,13,13,15,15,12,13,12,
+	15,15,14,15,15,16,17,14,15,14,16,16,14,14,15,16,
+	16,14,15,15,16,17,15,16,15,17,17,16,16,17,16,18,
+	16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,14,
+	14,14,16,15,16,16,17,17,18,15,16,15,17,16,10,12,
+	11,14,14,11,13,13,15,15,11,13,12,15,15,14,15,15,
+	16,16,13,15,14,16,16,12,12,13,15,15,13,13,14,15,
+	16,13,14,14,16,15,15,15,16,16,17,15,15,15,17,17,
+	11,13,11,15,14,12,14,13,16,15,12,14,12,16,14,15,
+	15,15,17,17,14,15,14,17,15,14,15,15,16,17,15,15,
+	16,16,17,15,16,16,17,17,16,16,17,17,18,16,17,17,
+	18,18,13,14,12,16,14,14,15,13,17,15,14,15,13,17,
+	14,16,17,15,18,17,15,17,14,18,15,11,12,12,14,15,
+	13,13,14,15,16,13,14,13,16,15,15,15,16,16,17,15,
+	15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,
+	14,16,16,15,15,16,16,18,16,16,16,18,17,12,13,13,
+	15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,
+	18,15,16,15,17,16,15,16,15,17,16,15,15,16,16,17,
+	16,17,16,17,17,16,16,17,16,18,17,18,18,18,18,14,
+	15,15,15,17,16,15,17,16,17,14,15,15,16,16,17,17,
+	18,18,19,16,16,16,17,16,12,13,13,15,15,13,14,14,
+	16,16,13,14,14,16,16,15,16,16,17,17,15,16,15,18,
+	16,13,14,14,16,16,14,15,15,16,17,14,15,15,17,16,
+	16,16,17,17,18,16,17,16,18,18,13,14,13,16,14,14,
+	15,14,17,15,14,15,14,17,14,16,17,16,18,17,15,17,
+	15,18,15,15,16,16,17,18,16,16,17,17,18,16,17,17,
+	17,18,17,17,18,18,19,17,18,18,19,18,15,16,14,17,
+	13,16,17,15,18,14,16,17,15,18,14,18,18,17,19,16,
+	17,18,16,19,15,
+};
+
+static const static_codebook _44p7_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p7_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p7_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p3_0[] = {
+	 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 8, 7, 8,10, 8,
+	 9, 9, 5, 7, 7, 8, 9, 9, 7,10, 8, 5, 7, 8, 8, 9,
+	10, 8,10,10, 8, 9,10,10,10,12,10,12,12, 8,10,10,
+	10,12,12,10,12,11, 5, 8, 7, 8,10,10, 8,10, 9, 8,
+	10,10,10,11,12,10,12,12, 8,10, 9,10,12,12,10,12,
+	10, 5, 8, 8, 7,10,10, 8,10,10, 7, 9,10, 9,10,12,
+	10,12,12, 8,10,10,10,12,12,10,12,11, 7, 9,10, 9,
+	11,12,10,12,11, 9, 9,12,11,10,14,12,12,13,10,12,
+	11,12,13,13,11,14,12, 7,10, 9,10,11,11,10,12,11,
+	 9,11,11,11,11,13,12,14,13,10,12,12,12,14,14,11,
+	14,12, 5, 8, 8, 8,10,10, 7,10,10, 8,10,10,10,11,
+	12,10,12,12, 7,10, 9,10,12,12, 9,12,10, 7, 9,10,
+	10,11,12,10,11,11,10,12,12,11,12,14,12,14,14, 9,
+	11,11,12,13,14,11,13,11, 7,10, 9,10,11,12, 9,12,
+	11,10,11,12,11,12,14,12,13,13, 9,12, 9,12,13,12,
+	11,14,10,
+};
+
+static const static_codebook _44p7_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p7_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p3_1[] = {
+	 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7,
+	 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
+	 8, 8, 8, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9,
+	 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 7, 8, 8, 8,
+	 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
+	 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8,
+	 9, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 8, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
+	 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 9,
+	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9,
+	 8, 9, 8,
+};
+
+static const static_codebook _44p7_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p7_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p4_0[] = {
+	 1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8,
+	10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 9,10,
+	12, 9,11,11, 9,10,11,11,11,13,11,13,13, 9,11,11,
+	11,12,13,11,13,11, 6, 9, 8, 9,11,11, 9,12,10, 9,
+	11,11,11,11,13,11,13,13, 9,11,10,11,13,13,11,13,
+	11, 6, 9, 9, 8,10,11, 9,12,11, 8,10,11,10,11,13,
+	11,13,13, 9,11,11,11,13,12,11,13,11, 8,10,10, 9,
+	11,12,10,12,12,10,10,12,11,11,14,12,13,14,10,12,
+	12,12,13,13,11,14,11, 8,11,10,11,12,13,11,14,12,
+	10,12,11,11,12,14,13,15,14,10,12,12,13,14,15,12,
+	14,12, 5, 9, 9, 9,11,12, 8,11,10, 9,11,11,11,11,
+	13,11,12,13, 8,11,10,11,13,13,10,13,11, 8,10,11,
+	11,12,14,11,13,12,10,12,12,12,12,14,14,15,14,10,
+	11,12,13,14,15,11,14,12, 8,10,10,10,12,12, 9,12,
+	11,10,12,12,11,11,14,12,13,13,10,12,10,12,14,13,
+	11,13,11,
+};
+
+static const static_codebook _44p7_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p7_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p7_p4_1[] = {
+	 7, 8, 8,10,10, 8, 9, 9,10,11, 8, 9, 9,10,10, 9,
+	10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9,
+	10,11,11, 9,10,10,11,11,10,10,11,11,11,10,11,11,
+	11,11, 8, 9, 9,10,10, 9,10,10,11,11, 9,10, 9,11,
+	11,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,
+	10,11,11,11,11,10,11,11,11,11,11,11,11,11,12,11,
+	11,11,11,12,10,10,10,11,11,10,11,11,11,11,10,11,
+	11,11,11,11,11,11,12,11,11,11,11,12,11, 8, 9,10,
+	11,11, 9,10,11,11,11, 9,10,10,11,11,10,11,11,12,
+	12,10,11,11,12,12,10,10,10,11,11,10,10,11,11,12,
+	10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
+	10,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,
+	12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12, 8,10, 9,11,11, 9,
+	10,10,11,11, 9,10,10,11,11,10,11,11,12,12,10,11,
+	11,12,12,10,10,10,11,11,10,11,11,12,12,10,11,11,
+	12,12,11,11,12,12,12,11,12,12,12,12,10,10,10,11,
+	11,10,11,11,12,12,10,11,10,12,11,11,12,11,12,12,
+	11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+	11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
+	12,13,12,13,12,12,12,13,13,11,12,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,13,12,12,12,12,12,12,12,12,12,13,12,12,13,13,
+	13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,
+	12,12,13,13,13,12,12,12,13,12,12,13,13,13,13,12,
+	13,13,13,13,10,11,11,12,11,11,11,11,12,12,11,12,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,
+	11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,12,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,
+	13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
+	13,13,12,13,12,13,12,12,13,13,13,13,13,13,13,13,
+	13, 8,10,10,11,11, 9,10,10,11,11, 9,10,10,11,11,
+	10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,10,
+	10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,
+	12,12,12,10,10,10,11,11,10,11,11,12,12,10,11,10,
+	12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,
+	12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
+	10,11,11,10,11,11,11,12,10,11,11,12,12,11,11,11,
+	12,12,11,11,11,12,12,10,10,11,11,12,11,11,12,12,
+	12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
+	10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
+	12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12, 9,10,10,11,11,
+	10,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,
+	12,11,12,12,10,11,11,12,12,11,11,11,12,12,11,12,
+	11,12,12,11,12,12,12,12,12,12,12,12,12,10,11,11,
+	12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,13,
+	12,12,12,12,12,12,11,12,11,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,11,
+	12,12,12,12,12,12,12,13,12,11,12,12,12,12,12,12,
+	12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	13,11,11,12,12,12,12,12,12,12,13,12,12,12,12,12,
+	12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,12,13,12,13,12,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,
+	13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
+	12,12,12,12,12,12,12,13,12,12,12,13,12,12,12,13,
+	13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
+	12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,
+	13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13, 8,10,10,11,11, 9,10,10,11,11, 9,10,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,
+	10,11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,
+	11,12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,
+	10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,
+	12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 9,
+	10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,
+	12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,
+	12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,
+	12,13,12,11,12,12,12,12,12,12,12,12,12,11,12,12,
+	12,12,12,12,12,13,12,12,12,12,13,12, 9,10,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,
+	11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
+	11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
+	10,12,11,11,11,11,12,12,11,12,11,12,12,11,12,12,
+	12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
+	11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,
+	12,12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,
+	13,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
+	12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,
+	13,13,13,12,13,13,13,13,11,12,11,12,12,12,12,12,
+	13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
+	12,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,
+	13,13,13,13,12,13,12,13,12,13,13,13,13,13,13,13,
+	13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
+	12,11,11,12,12,12,11,12,12,12,12,12,12,12,13,13,
+	12,12,12,13,13,11,11,11,12,12,11,12,12,12,12,11,
+	12,11,13,12,12,12,12,13,13,12,12,12,13,13,11,12,
+	12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,
+	13,13,12,13,12,13,13,11,12,12,12,12,12,12,12,13,
+	12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,
+	10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,13,11,11,12,12,12,11,12,
+	12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,
+	13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
+	13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,
+	12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,12,
+	13,13,13,13,12,12,12,12,13,12,12,13,13,13,12,12,
+	12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,13,11,12,12,12,12,11,12,12,12,13,
+	12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
+	12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,
+	13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,
+	13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
+	13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,
+	12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,
+	13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,
+	12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,
+	12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
+	13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,
+	12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,
+	13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,
+	13,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,
+	11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,
+	12,13,13,13,12,13,13,13,13,11,12,12,12,13,12,12,
+	12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,
+	13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
+	12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
+	12,12,11,11,12,12,13,11,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,13,10,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,11,
+	12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,
+	13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,
+	13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
+	13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,
+	12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,
+	13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,
+	13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,
+	13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,12,12,12,13,12,12,12,13,13,13,12,
+	12,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
+	13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,
+	11,12,11,12,12,12,12,12,13,13,11,12,12,13,12,12,
+	13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
+	13,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,
+	13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
+	13,13,13,13,13,13,12,13,12,13,13,10,11,11,12,12,
+	11,12,12,12,12,11,12,12,13,12,12,12,12,13,13,12,
+	12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,
+	12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,
+	12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,
+	13,12,13,12,13,13,12,12,12,12,13,12,12,13,13,13,
+	12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
+	12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,
+	13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
+	13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
+	12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,
+	12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,
+	13,13,13,13,12,
+};
+
+static const static_codebook _44p7_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p7_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p7_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p7_p5_0[] = {
+	 2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8,
+	10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8,
+	10,10,12, 8, 9, 9,12,11,10,10,12,11,14,10,11,12,
+	14,13, 6, 8, 7,11,10, 8, 9, 9,11,12, 7,10, 8,12,
+	10,10,12,12,13,14,10,12,10,14,11, 9,10,11,11,12,
+	10,10,11,11,13,11,12,12,13,13,12,11,13,11,15,13,
+	14,13,14,14, 9,11,10,12,11,11,12,12,13,13,10,11,
+	10,13,11,13,13,14,14,14,12,13,11,14,11, 7, 8, 9,
+	11,12, 9, 9,11,12,13, 9,10,10,13,12,11,12,13,13,
+	15,11,12,12,14,14, 9,10,10,12,13,10,10,12,12,14,
+	11,11,11,13,13,12,12,13,13,15,12,13,13,15,14, 9,
+	10,10,12,13,10,11,11,13,14,10,12,11,14,13,12,13,
+	13,14,15,12,13,13,15,14,12,12,13,13,14,12,13,13,
+	13,15,13,14,14,14,15,14,14,15,14,16,14,15,15,16,
+	16,12,13,13,14,14,13,13,14,15,14,12,13,13,15,14,
+	14,15,15,15,16,14,15,14,16,14, 7, 9, 8,12,11, 9,
+	10,10,12,13, 9,11, 9,13,12,11,12,12,14,14,11,13,
+	12,15,13, 9,10,10,13,12,10,11,12,13,14,10,12,11,
+	14,13,12,13,13,14,15,13,13,13,15,14, 9,10,10,13,
+	12,11,11,11,13,13,10,12,10,14,12,13,13,13,14,15,
+	12,13,12,15,13,12,13,13,14,14,12,13,13,14,15,13,
+	14,13,15,15,14,14,15,14,16,14,15,15,16,15,12,13,
+	12,14,13,13,13,13,15,14,12,13,13,15,13,14,15,15,
+	16,15,14,15,14,16,14,11,12,12,13,14,12,13,14,14,
+	15,12,13,13,14,15,14,14,15,15,16,14,15,15,16,16,
+	12,13,13,14,15,13,13,14,14,16,13,14,14,15,15,15,
+	15,16,15,17,15,15,15,16,16,12,13,13,14,15,13,14,
+	14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,15,
+	17,16,14,15,15,16,16,15,15,16,15,16,15,16,16,16,
+	17,16,16,17,16,18,16,16,17,18,17,14,15,15,16,16,
+	15,16,16,16,17,15,16,15,17,16,16,17,17,17,18,16,
+	16,16,17,16,11,12,12,14,13,12,13,13,15,14,12,14,
+	13,15,14,14,15,15,16,16,14,15,14,16,15,12,13,13,
+	15,14,13,14,14,15,15,13,14,14,16,15,15,15,15,16,
+	16,15,16,15,17,16,12,13,13,15,14,13,14,14,15,15,
+	13,14,13,16,14,15,15,15,16,16,15,15,15,17,15,14,
+	15,15,16,16,15,15,15,16,16,15,16,16,17,17,16,16,
+	17,17,17,16,17,17,18,17,14,15,15,16,15,15,15,16,
+	16,16,15,15,15,17,15,17,17,17,18,17,16,17,16,18,
+	16, 6, 9, 9,12,12, 8,10,10,12,13, 9,11,10,13,12,
+	10,12,12,14,14,11,13,12,14,14, 8,10,10,12,12, 9,
+	10,11,12,14,10,11,11,13,13,12,12,13,13,15,12,13,
+	13,15,14, 9,10,10,13,13,10,11,11,13,13,10,12,10,
+	14,13,12,13,13,14,15,12,13,13,15,14,11,12,12,13,
+	14,12,12,13,13,15,12,13,13,14,14,13,13,14,13,16,
+	14,15,15,16,15,11,12,12,14,14,13,13,13,15,14,12,
+	13,13,15,14,14,15,15,16,15,14,14,14,16,14, 7, 9,
+	10,12,12, 9,10,11,13,13, 9,11,10,13,13,11,12,13,
+	14,15,12,13,13,15,14, 9,10,11,12,13,10,10,12,13,
+	14,11,11,12,14,14,12,12,14,14,15,13,13,13,15,15,
+	 9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,
+	14,13,15,15,12,14,13,15,14,12,12,13,13,15,12,12,
+	14,13,15,13,14,14,15,15,14,14,15,14,17,14,15,15,
+	16,16,12,13,13,15,14,13,14,14,15,15,12,14,13,15,
+	14,14,15,15,16,16,14,15,14,16,14, 7,10,10,12,12,
+	10,11,11,12,13,10,12,10,14,12,12,13,13,14,15,12,
+	13,13,15,14, 9,11,10,13,12,10,10,12,12,14,11,13,
+	12,14,13,13,13,14,13,15,13,14,14,15,14,10,11,11,
+	13,13,12,12,12,13,14,10,12,10,14,12,13,14,14,15,
+	15,13,14,13,15,13,12,13,13,14,14,12,12,13,14,15,
+	13,14,14,15,15,13,13,14,13,15,14,15,15,16,16,12,
+	13,13,14,14,13,14,14,15,15,12,13,13,15,13,15,15,
+	15,16,16,13,14,13,16,13,11,12,13,14,14,12,13,14,
+	14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,
+	16,12,13,14,14,15,13,13,14,14,16,13,14,14,15,16,
+	14,14,16,15,17,15,15,16,16,16,12,13,13,15,15,13,
+	14,14,15,16,13,14,14,15,16,15,15,16,17,17,15,16,
+	15,17,16,14,15,15,15,16,15,15,16,15,17,15,15,16,
+	16,17,16,16,16,16,18,16,16,17,17,17,14,15,15,16,
+	16,15,16,16,16,17,15,16,15,17,16,16,17,17,17,17,
+	16,17,16,18,17,11,12,12,14,14,13,13,14,14,15,13,
+	14,13,15,14,14,15,15,15,16,14,15,15,17,15,12,13,
+	13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,15,
+	15,16,15,16,15,17,16,12,13,13,15,15,14,14,14,15,
+	16,13,14,13,16,15,15,15,16,16,17,15,16,15,17,15,
+	14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,15,
+	15,16,15,17,16,17,17,18,17,14,15,15,16,16,15,16,
+	16,16,17,14,15,15,17,16,17,17,17,17,18,15,16,16,
+	18,15, 6, 9, 9,12,12, 9,10,11,12,13, 8,10,10,13,
+	12,11,12,13,14,14,10,12,12,14,13, 9,10,10,12,13,
+	10,10,12,13,14,10,11,11,13,13,12,13,13,14,15,12,
+	13,13,15,14, 8,10,10,12,12,10,11,11,13,13, 9,11,
+	10,13,13,12,13,13,14,15,12,13,12,15,13,11,12,12,
+	14,14,12,13,13,13,15,13,13,13,14,15,14,14,15,14,
+	16,14,15,15,15,15,11,12,12,14,13,12,13,13,15,14,
+	12,13,12,15,13,14,14,15,16,16,13,14,13,16,13, 7,
+	10,10,12,12,10,10,12,12,14,10,11,11,13,12,12,13,
+	13,13,15,12,13,13,15,14,10,11,11,13,13,10,10,12,
+	12,14,12,12,12,14,13,13,13,14,13,15,13,14,14,15,
+	14, 9,10,11,13,13,11,12,12,13,14,10,12,10,14,12,
+	13,13,14,14,15,13,13,12,15,13,12,13,13,14,14,12,
+	13,13,14,15,13,14,14,15,15,13,13,15,13,16,15,15,
+	15,16,16,12,13,13,14,14,13,14,14,15,15,12,13,12,
+	15,14,15,15,15,16,16,13,14,13,15,13, 7,10, 9,12,
+	12, 9,10,11,13,13, 9,11,10,13,13,11,13,13,14,15,
+	11,13,12,15,14, 9,11,11,13,13,10,10,12,13,14,11,
+	12,12,14,14,12,13,14,14,15,13,13,13,15,15, 9,11,
+	10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,
+	15,15,12,14,12,15,14,12,13,13,14,15,13,13,14,14,
+	15,13,14,14,15,15,14,14,15,14,17,14,15,15,16,16,
+	12,13,12,15,13,13,14,14,15,15,12,14,13,15,13,14,
+	15,15,16,16,14,15,14,16,14,11,12,12,14,14,13,13,
+	14,14,15,13,14,13,15,15,14,15,15,16,17,14,15,15,
+	16,15,12,13,13,15,15,13,13,14,15,16,14,14,14,16,
+	15,15,15,16,15,17,15,16,15,17,16,12,13,13,14,15,
+	14,14,15,15,16,13,14,13,15,15,15,15,16,16,17,15,
+	15,15,16,15,14,15,15,16,16,14,15,15,16,17,15,16,
+	16,17,17,16,15,16,15,17,16,17,17,17,17,14,15,15,
+	15,16,15,15,16,16,17,14,15,15,16,16,16,16,17,17,
+	18,15,16,15,17,15,11,13,12,14,14,12,13,13,15,15,
+	12,14,13,15,14,14,15,15,16,16,14,15,14,16,15,12,
+	13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,15,
+	16,16,17,15,16,15,17,16,12,13,13,15,14,13,14,14,
+	16,15,13,14,13,16,14,15,16,15,17,16,15,15,14,18,
+	15,14,15,15,16,16,15,15,16,16,17,15,16,15,17,16,
+	16,16,17,17,18,16,17,17,18,17,14,15,15,16,15,15,
+	16,15,17,16,15,15,15,17,15,16,17,17,18,17,16,17,
+	16,18,15,10,12,12,14,14,12,13,13,14,14,12,13,13,
+	14,14,13,14,14,15,15,13,14,14,16,15,11,12,13,14,
+	14,12,13,13,15,15,12,13,13,15,15,13,14,15,15,16,
+	14,15,15,16,16,12,13,13,14,14,13,13,14,15,15,13,
+	14,13,15,15,14,15,15,16,16,14,15,14,16,15,13,14,
+	14,15,15,13,14,14,15,16,14,14,15,16,16,14,15,15,
+	15,17,15,16,16,17,17,13,14,14,15,15,14,15,15,16,
+	16,14,15,15,16,16,15,16,16,16,17,15,16,15,17,16,
+	11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,13,
+	14,14,15,16,13,14,14,16,15,12,13,13,14,15,13,13,
+	14,15,15,13,14,14,15,15,14,14,15,15,17,14,15,15,
+	16,16,12,13,13,15,15,13,14,14,15,15,13,14,13,15,
+	15,14,15,15,16,17,14,15,15,16,16,13,13,14,15,16,
+	14,14,15,15,16,14,15,15,16,16,15,15,16,15,18,15,
+	16,16,17,17,14,15,15,16,16,15,15,15,16,16,14,15,
+	15,17,16,16,16,16,17,17,15,16,16,17,16,10,12,12,
+	14,14,12,13,13,14,15,12,13,13,15,14,14,14,15,15,
+	16,14,15,14,16,15,12,13,13,15,14,13,13,14,15,15,
+	13,14,14,15,15,14,14,15,15,16,14,15,15,16,16,12,
+	13,13,15,15,13,14,14,15,16,13,14,13,15,14,15,15,
+	15,16,16,14,15,15,16,15,13,14,14,16,15,14,14,14,
+	15,16,14,15,15,16,16,15,15,16,15,17,16,17,16,17,
+	17,14,14,15,15,16,15,15,16,16,16,14,15,14,16,15,
+	16,16,16,17,17,15,16,15,17,15,11,13,13,14,15,13,
+	13,14,15,15,13,14,13,15,15,14,15,15,15,16,14,15,
+	15,17,15,13,13,14,15,15,13,14,15,15,16,14,14,14,
+	16,16,15,14,16,15,17,15,16,16,17,16,13,14,14,15,
+	15,14,14,14,16,16,13,15,14,16,15,15,15,16,17,17,
+	15,16,15,17,16,14,15,15,15,16,15,15,16,15,17,15,
+	16,16,16,17,16,16,17,15,18,16,17,17,17,17,14,15,
+	15,16,16,15,16,16,17,17,15,16,15,17,16,16,17,17,
+	18,18,16,17,15,18,16,10,12,12,14,14,13,13,14,14,
+	15,13,14,13,15,14,14,15,15,15,16,15,15,15,16,15,
+	12,13,13,15,14,12,12,14,14,15,14,15,14,16,15,15,
+	14,15,14,17,15,16,16,17,16,12,13,13,14,15,14,14,
+	15,15,16,13,14,12,16,14,15,16,16,16,17,15,16,14,
+	17,15,14,15,14,16,15,14,14,15,15,15,15,16,15,17,
+	16,15,14,16,14,16,16,17,17,18,17,14,14,15,15,16,
+	15,16,16,16,17,14,15,14,16,15,16,16,17,17,17,15,
+	16,14,17,14,10,12,12,14,13,12,13,13,14,14,11,13,
+	12,14,14,13,14,14,15,16,13,14,14,16,15,12,13,13,
+	14,14,13,13,14,15,15,13,14,13,15,15,14,14,15,15,
+	16,14,15,15,16,16,11,13,12,14,14,12,13,13,15,15,
+	12,13,13,15,15,14,15,15,16,16,13,14,14,16,15,13,
+	14,14,15,15,14,15,15,15,16,14,15,15,16,16,15,16,
+	16,16,17,16,16,16,17,17,13,14,14,15,15,14,15,15,
+	16,16,13,14,14,16,15,15,16,16,17,17,15,15,15,17,
+	15,11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,
+	14,14,15,15,16,14,14,14,16,15,12,13,13,15,14,13,
+	13,14,15,15,13,14,14,16,15,14,15,15,15,16,15,15,
+	15,16,16,12,13,13,14,15,13,13,14,15,15,13,14,13,
+	15,15,15,15,15,16,16,14,15,14,16,15,14,14,15,16,
+	16,14,15,15,15,16,15,16,15,16,16,15,15,16,15,17,
+	16,16,16,17,17,13,14,14,15,16,14,15,15,16,16,14,
+	14,14,16,16,16,16,16,17,17,15,15,15,17,15,11,12,
+	12,14,14,12,13,13,14,15,12,13,13,15,14,14,14,14,
+	15,16,13,14,14,16,15,12,13,13,15,15,13,13,14,15,
+	16,13,14,14,15,15,14,15,15,16,17,14,15,15,17,16,
+	12,13,13,15,14,13,14,14,15,15,13,14,13,15,15,14,
+	15,15,16,16,14,15,14,17,15,14,15,15,16,16,14,15,
+	15,16,17,15,15,15,17,17,15,16,16,16,17,16,17,16,
+	17,17,13,15,14,16,15,14,15,15,16,16,14,15,14,16,
+	15,16,16,16,17,17,15,16,15,17,15,10,12,12,14,14,
+	13,13,14,14,15,13,14,13,15,14,14,15,15,15,17,14,
+	15,15,16,15,12,13,13,15,14,12,12,14,14,15,14,15,
+	14,16,15,15,14,16,15,17,15,16,16,17,16,12,13,13,
+	14,15,14,14,15,15,16,12,14,12,15,14,15,16,16,16,
+	17,15,16,14,17,14,14,15,14,16,16,14,14,15,15,16,
+	15,16,16,17,16,15,14,16,14,17,16,17,17,18,17,14,
+	14,15,15,16,15,15,16,16,17,14,15,14,16,15,16,17,
+	17,17,18,15,16,14,17,14,11,13,13,15,14,13,13,14,
+	15,15,12,14,13,15,15,14,15,15,15,17,14,15,14,16,
+	15,13,14,14,15,15,13,14,15,15,16,14,15,14,16,16,
+	15,15,16,16,17,15,16,16,17,17,13,14,13,15,15,14,
+	14,14,16,16,13,15,14,16,15,15,16,16,17,17,15,16,
+	14,17,15,15,15,15,16,17,15,15,16,16,17,15,16,16,
+	17,17,16,15,17,16,17,17,17,17,18,18,14,15,15,17,
+	15,15,16,16,17,16,15,16,15,17,15,16,17,17,17,17,
+	16,17,15,18,15,
+};
+
+static const static_codebook _44p7_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p7_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p7_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p7_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p7_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p7_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p7_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p6_0[] = {
+	 2, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 8,
+	 9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
+	10, 8, 9, 9, 8, 9,10, 9, 9,11,10,10,11, 8,10, 9,
+	10,10,11, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
+	 9,10, 9,10,10,10,11,10, 8,10, 9,10,11,10, 9,11,
+	 9, 6, 8, 8, 7, 9, 9, 8, 9, 9, 7, 9, 9, 9, 9,10,
+	 9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9, 9,
+	10,10, 9,10,10, 9, 9,10,10, 9,11,10,11,11, 9,10,
+	10,10,11,11,10,11,10, 6, 9, 8, 9,10,10, 9,10, 9,
+	 8,10,10, 9, 9,10,10,11,11, 9,10,10,10,11,11, 9,
+	11, 9, 6, 8, 8, 8, 9, 9, 7, 9, 9, 8, 9, 9, 9, 9,
+	10, 9,10,10, 7, 9, 9, 9,10,10, 9,10, 9, 6, 8, 9,
+	 9, 9,10, 9,10,10, 9,10,10, 9, 9,11,10,11,11, 8,
+	10,10,10,11,11, 9,10, 9, 7, 9, 9, 9,10,10, 9,10,
+	10, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
+	10,11, 9,
+};
+
+static const static_codebook _44p7_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p7_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p6_1[] = {
+	 4, 7, 7, 6, 7, 8, 6, 8, 7, 7, 7, 8, 7, 7, 8, 8,
+	 8, 8, 7, 7, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
+	 8, 9, 9, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
+	 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
+	 8, 9, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
+	 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8,
+	 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
+	 8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 9, 9, 9,
+	 8, 9, 8,
+};
+
+static const static_codebook _44p7_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p7_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p7_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p7_0,
+	1, -513979392, 1633504256, 2, 0,
+	(long *)_vq_quantlist__44p7_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p7_p7_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p7_p7_1[] = {
+	 1, 5, 5, 4,10,10, 5,10,10, 5,10,10,10,10,10,10,
+	10,10, 5,10,10,10,10,10, 9,10,10, 6,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10, 7,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,11,11,
+};
+
+static const static_codebook _44p7_p7_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p7_p7_1,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44p7_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p7_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p7_p7_2[] = {
+	 1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p7_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p7_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p7_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p7_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p7_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p7_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p7_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p7_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p7_short[] = {
+	 3, 9,14,16,17,19,22,22, 5, 4, 6, 9,11,13,17,20,
+	 9, 5, 5, 6, 9,11,15,19,11, 7, 5, 5, 7, 9,13,17,
+	14, 9, 7, 6, 6, 7,11,14,16,11, 9, 7, 6, 4, 4, 8,
+	19,15,13,11, 9, 4, 3, 4,21,16,16,15,12, 6, 4, 4,
+};
+
+static const static_codebook _huff_book__44p7_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p7_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p8_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p8_l0_0[] = {
+	 2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5,
+	 7, 7, 9, 9,10, 9,12,10,12,12, 4, 5, 5, 7, 7, 9,
+	 9, 9,10,10,12,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5,
+	12, 6,12,10, 7, 7, 7, 8, 7, 8, 9, 5,11, 6,12,10,
+	12, 8, 9, 9, 9, 9, 9, 9,11, 7,11, 7,11, 9, 8, 9,
+	 9, 9, 9, 9, 9, 7,10, 7,11, 9,11,10,10,10,10,10,
+	10,10,11,10,11, 8,12, 9,10,10,10,10,10,10,10,10,
+	11, 8,11, 9,12,10,11,11,11,11,11,11,11,11,12,10,
+	12,11,10,11,11,11,11,11,11,11,11,10,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,
+	12,12,12,12,12,12,11,12,12,
+};
+
+static const static_codebook _44p8_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p8_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p8_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p8_l0_1[] = {
+	 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p8_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p8_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p8_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_l1_0[] = {
+	54,
+	29,
+	79,
+	0,
+	108,
+};
+
+static const char _vq_lengthlist__44p8_l1_0[] = {
+	 1, 2, 3, 6, 7, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static const static_codebook _44p8_l1_0 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p8_l1_0,
+	1, -514516992, 1620639744, 7, 0,
+	(long *)_vq_quantlist__44p8_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p8_lfe[] = {
+	 2, 3, 1, 3,
+};
+
+static const static_codebook _huff_book__44p8_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44p8_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p8_long[] = {
+	 2, 7,14,16,17,18,20,21, 7, 4, 6, 8,11,12,14,16,
+	13, 5, 4, 4, 8, 9,11,13,15, 8, 4, 3, 5, 7, 9,10,
+	17,11, 8, 4, 4, 6, 9, 9,17,11, 9, 7, 6, 5, 7, 8,
+	19,13,11, 9, 9, 7, 8, 8,21,15,13,11,10, 8, 8, 7,
+};
+
+static const static_codebook _huff_book__44p8_long = {
+	2, 64,
+	(char *)_huff_lengthlist__44p8_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p8_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p1_0[] = {
+	 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
+	10, 8, 9,10, 8, 9,10,10,10,12,10,11,12, 8,10,10,
+	10,11,12,10,11,11, 6, 8, 7, 8,10, 9, 8,10, 9, 8,
+	10,10,10,11,11,10,12,11, 8,10, 9,10,12,11,10,12,
+	10, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
+	 9,11,11, 8,10,10,10,12,12,10,12,11, 7, 9, 9, 9,
+	10,11, 9,11,11, 9, 9,11,10,11,12,10,11,12, 9,11,
+	11,11,12,12,11,12,12, 7, 9, 9,10,11,11,10,12,11,
+	 9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,
+	13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
+	12,10,12,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	10,11,12,10,11,11,10,11,11,11,11,13,12,13,13, 9,
+	10,11,12,12,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
+	10, 9,11,11,11,12,12,11,12,12, 9,11, 9,10,12,11,
+	10,12,11,
+};
+
+static const static_codebook _44p8_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p8_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p8_p2_0[] = {
+	 4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8,
+	 9,10,12,12, 8,10, 9,12,12, 6, 8, 8,10,10, 8, 8,
+	 9,10,11, 8, 9, 9,11,11, 9,10,11,12,13,10,11,11,
+	13,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 8, 9, 8,11,
+	10,10,11,11,13,13, 9,11,10,13,12, 9,10,10,12,12,
+	10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,12,
+	13,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
+	10,13,12,12,13,13,14,15,12,13,12,15,12, 7, 8, 8,
+	10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,11,13,
+	14,10,11,11,13,13, 8, 9, 9,11,12, 9,10,11,11,13,
+	 9,10,10,12,12,11,11,12,13,15,11,12,12,14,14, 8,
+	 9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
+	12,14,15,11,12,12,14,14,10,11,12,13,13,11,12,12,
+	13,14,12,12,12,14,14,13,13,14,14,16,14,14,14,16,
+	15,10,11,11,13,13,12,12,12,14,14,11,12,12,14,13,
+	14,14,14,15,16,13,14,13,16,14, 7, 8, 8,11,10, 8,
+	 9, 9,11,11, 8,10, 9,12,11,10,11,11,13,13,10,11,
+	11,14,13, 8, 9, 9,12,11, 9,10,10,12,12, 9,11,10,
+	13,12,11,12,12,13,14,11,12,12,15,14, 8, 9, 9,12,
+	11, 9,10,10,12,12, 9,11,10,13,11,11,12,12,14,14,
+	11,12,12,14,13,10,11,11,13,13,11,12,12,13,14,12,
+	13,12,14,14,13,13,14,14,16,13,14,14,16,15,10,11,
+	11,13,13,12,12,12,14,14,11,12,12,14,13,13,14,14,
+	15,15,13,14,13,16,14, 9,10,11,12,13,11,11,12,12,
+	14,11,11,12,13,14,13,13,14,14,16,13,13,14,15,15,
+	11,11,12,12,14,12,12,13,13,15,12,12,13,13,15,14,
+	14,15,15,16,14,14,14,15,16,11,12,12,13,14,12,12,
+	13,14,15,12,13,12,14,14,14,14,15,15,16,14,14,14,
+	16,16,13,13,14,15,16,14,14,15,15,16,14,15,15,16,
+	16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,
+	14,14,15,16,16,14,15,14,16,16,16,16,16,17,18,15,
+	16,16,17,16, 9,11,10,13,12,11,12,11,14,13,11,12,
+	11,14,12,13,14,13,15,14,13,14,13,16,14,11,12,12,
+	14,13,12,12,13,14,14,12,13,12,15,14,14,14,14,16,
+	16,14,15,14,17,15,11,12,11,14,12,12,13,12,15,13,
+	12,13,12,15,13,14,14,14,16,15,14,15,14,16,15,13,
+	14,14,15,15,14,14,15,16,16,14,15,14,16,16,15,15,
+	16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
+	16,16,14,15,14,17,15,16,16,16,17,17,15,16,15,18,
+	16, 7, 8, 8,10,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
+	10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,11, 9,
+	10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,12,
+	12,14,14, 8, 9, 9,12,11, 9,10,11,12,13, 9,11,10,
+	13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,
+	13,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,
+	13,14,14,16,15,10,12,11,13,13,12,12,12,14,14,11,
+	12,12,14,13,14,14,14,15,16,13,14,14,16,14, 8, 9,
+	 9,11,11, 9,10,10,12,12, 9,10,10,12,12,11,11,12,
+	13,14,11,12,12,14,14, 9, 9,10,11,12,10,10,11,12,
+	13,10,10,11,12,13,12,12,13,14,15,12,12,13,14,15,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+	13,13,15,15,12,13,13,15,14,11,11,12,13,14,12,12,
+	13,13,15,12,12,13,14,15,14,14,15,14,16,14,14,15,
+	15,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,
+	14,14,15,15,16,16,14,15,14,17,15, 8, 9, 9,11,11,
+	 9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
+	13,12,15,13, 9,10,10,12,12,10,10,11,12,13,10,12,
+	11,13,13,12,12,13,13,15,12,13,13,15,14, 9,10,10,
+	12,12,11,11,12,13,13,10,12,10,13,12,12,13,13,15,
+	15,12,13,13,15,13,11,12,12,14,14,12,12,13,14,14,
+	12,13,13,15,14,13,13,14,13,16,14,15,14,16,16,11,
+	12,12,14,14,13,13,13,15,15,12,13,12,15,14,14,15,
+	15,16,17,14,15,13,16,13,10,11,11,13,14,11,12,12,
+	13,15,11,12,12,14,14,13,14,14,15,16,13,14,14,16,
+	16,11,11,12,12,14,12,12,13,13,15,12,13,13,13,15,
+	14,14,15,14,17,14,14,15,15,16,11,12,12,14,14,12,
+	13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,
+	15,16,16,13,14,14,14,16,14,14,15,14,17,14,15,15,
+	14,17,16,16,17,15,18,16,16,17,16,18,13,14,14,16,
+	16,14,15,15,17,16,14,15,15,17,16,16,17,17,18,18,
+	16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,
+	13,12,15,14,14,14,14,16,15,14,15,14,16,15,11,12,
+	12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,
+	16,16,14,15,15,17,15,11,12,12,14,14,13,13,13,15,
+	15,12,13,13,15,14,15,15,15,17,17,14,15,15,17,15,
+	13,14,14,16,15,14,15,15,16,16,15,15,15,17,16,16,
+	16,16,16,17,16,17,16,18,17,14,14,14,16,16,15,15,
+	15,16,16,14,15,14,17,16,16,17,17,17,18,16,17,16,
+	18,16, 7, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
+	11,10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,12,
+	 9,10,11,12,13, 9,11,10,13,12,11,12,12,13,14,11,
+	12,12,14,14, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,13,12,11,12,12,14,14,11,12,11,14,13,10,11,12,
+	13,13,11,12,12,13,14,12,13,12,14,14,13,13,14,14,
+	16,13,14,14,16,15,10,11,11,13,13,11,12,12,14,14,
+	11,12,12,14,13,13,14,14,15,16,13,14,13,16,14, 8,
+	 9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
+	13,13,14,11,12,12,14,14, 9,10,10,12,12,10,10,11,
+	12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,
+	15, 9,10,10,12,12,10,11,12,13,14,10,11,10,13,12,
+	12,13,13,14,15,12,13,12,15,13,12,12,12,14,14,12,
+	12,13,14,15,13,13,13,15,15,14,14,15,13,16,14,15,
+	15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,
+	14,14,14,14,15,16,16,13,14,13,16,14, 8, 9, 9,11,
+	11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,
+	11,12,11,14,14, 9,10,10,12,12,10,11,11,13,13,10,
+	11,11,13,13,12,13,13,14,15,12,13,13,15,14, 9,10,
+	 9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,
+	15,14,12,13,12,15,14,11,12,12,14,14,12,13,13,14,
+	15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,16,
+	11,12,11,14,13,12,13,12,15,14,12,13,12,15,13,14,
+	15,14,16,15,13,15,14,17,14,10,11,11,13,14,11,12,
+	13,13,15,11,12,12,14,14,14,14,15,15,17,13,14,14,
+	15,16,11,12,12,14,14,12,12,13,14,15,13,13,13,15,
+	15,14,15,15,15,17,15,15,15,16,16,11,12,12,13,14,
+	13,13,14,14,15,12,13,13,14,15,14,15,15,16,17,14,
+	15,15,16,16,14,14,14,16,16,14,14,15,15,17,15,15,
+	15,17,16,16,16,17,16,18,16,17,17,18,17,13,14,14,
+	15,16,14,15,15,16,17,14,15,15,16,16,16,17,17,17,
+	18,16,16,16,17,16,10,11,11,14,13,11,12,12,14,14,
+	11,12,12,15,13,13,14,14,16,15,13,14,14,16,15,11,
+	12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,
+	15,16,17,14,15,15,17,16,11,12,11,14,12,12,13,13,
+	15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,17,
+	14,13,14,14,16,16,14,15,15,16,17,14,15,15,16,17,
+	16,16,17,17,18,16,17,17,18,18,13,14,14,16,13,14,
+	15,15,17,14,14,15,14,17,14,16,17,16,17,16,16,17,
+	16,18,15, 8,11,11,13,13,10,12,12,14,14,11,12,12,
+	14,14,13,13,14,15,16,13,14,14,16,15,10,11,11,14,
+	14,11,12,12,14,15,11,12,12,15,14,13,14,14,15,16,
+	13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,
+	13,12,15,14,14,14,15,16,16,14,15,14,16,16,12,13,
+	13,15,15,12,13,14,15,16,13,14,14,16,16,14,15,15,
+	16,17,15,15,16,17,17,13,14,14,16,15,14,15,15,16,
+	16,14,15,14,16,16,16,16,16,17,17,15,16,16,18,16,
+	10,11,11,13,14,11,12,12,14,15,11,12,12,15,14,13,
+	14,14,16,16,13,14,14,16,16,11,11,12,14,14,12,12,
+	13,14,15,12,13,13,15,15,14,14,15,15,17,14,14,15,
+	16,16,11,12,12,15,14,12,13,13,15,15,12,13,13,15,
+	15,14,15,15,17,17,14,15,15,17,16,13,12,14,14,16,
+	13,13,15,14,17,14,13,15,15,17,15,14,16,15,18,16,
+	15,16,16,18,13,14,14,16,16,14,15,15,17,17,14,15,
+	15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,
+	14,13,11,12,12,14,14,11,13,12,15,14,13,14,14,15,
+	16,13,14,14,16,16,11,12,12,14,14,12,13,13,14,15,
+	12,13,13,15,15,14,14,15,15,16,14,15,15,17,16,11,
+	12,12,14,14,13,13,13,15,15,12,13,13,15,14,14,15,
+	15,16,17,14,15,14,17,15,13,14,13,16,15,14,14,14,
+	15,16,14,15,14,16,16,15,15,16,16,17,16,16,16,18,
+	17,14,14,14,16,16,15,15,15,17,16,14,15,14,17,16,
+	16,16,17,17,18,16,17,16,18,16,11,13,13,15,15,12,
+	13,14,15,16,12,14,14,15,15,14,15,15,16,17,14,15,
+	15,17,17,12,13,14,14,16,13,14,14,14,16,14,14,14,
+	15,16,15,15,16,15,18,15,16,16,17,17,13,14,14,16,
+	16,14,14,15,16,16,14,15,14,16,16,15,16,16,17,18,
+	15,16,16,18,17,14,14,16,13,17,15,15,16,14,18,15,
+	15,16,14,18,16,16,18,15,19,17,17,18,16,18,15,16,
+	15,17,17,15,16,17,18,18,16,16,16,18,17,17,18,18,
+	19,19,17,18,17,19,18,11,12,12,15,14,13,13,14,15,
+	16,13,14,13,16,14,15,15,15,16,17,15,16,15,17,16,
+	12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,
+	15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,
+	15,16,16,13,14,13,16,15,16,16,16,17,18,15,16,15,
+	17,16,14,15,14,17,15,14,15,15,16,16,15,16,15,17,
+	16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,17,
+	16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,
+	17,16,18,15, 8,11,11,13,13,11,12,12,14,14,10,12,
+	12,14,14,13,14,14,15,16,13,14,13,16,15,11,12,12,
+	14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,15,
+	16,14,14,14,16,16,10,11,11,14,14,11,12,12,14,15,
+	11,12,12,15,14,13,14,14,16,16,13,14,14,16,15,13,
+	14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,
+	16,16,18,16,16,16,17,17,12,13,13,15,15,13,14,14,
+	16,16,12,14,13,16,15,15,16,15,17,17,14,16,15,17,
+	16,10,11,11,13,14,11,12,13,14,15,11,13,12,14,14,
+	14,14,15,16,16,13,14,14,16,16,11,12,12,14,14,12,
+	13,13,14,15,13,14,13,15,15,14,15,15,16,17,14,15,
+	15,17,16,11,12,12,14,14,12,13,13,15,15,12,13,12,
+	15,14,14,15,15,16,17,14,15,15,16,16,14,14,14,16,
+	16,14,14,15,16,16,15,15,15,16,16,16,16,17,16,18,
+	16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,13,
+	14,14,16,16,16,16,17,17,18,15,16,15,17,16,10,11,
+	11,14,13,11,12,12,14,14,11,12,12,15,14,13,14,14,
+	16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,
+	15,12,13,13,15,15,14,15,15,16,17,14,15,15,17,16,
+	11,12,11,14,14,12,13,13,15,15,12,13,12,15,14,14,
+	15,14,16,16,14,15,14,17,16,14,14,14,16,16,14,15,
+	15,16,17,14,15,15,17,17,16,16,17,17,18,16,17,17,
+	18,18,13,14,12,16,14,14,15,13,17,15,13,15,13,17,
+	14,16,16,15,18,16,15,17,14,18,15,11,12,12,14,15,
+	13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,
+	16,15,17,16,12,13,13,15,15,13,13,14,15,16,14,15,
+	14,16,16,15,15,16,15,18,16,16,16,18,17,12,13,13,
+	15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,16,
+	18,15,16,15,17,16,15,15,15,17,16,15,15,16,16,17,
+	16,16,16,18,17,16,16,17,15,18,17,18,17,19,18,14,
+	14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,
+	18,17,19,16,17,15,17,15,11,13,12,15,15,12,14,14,
+	15,15,12,14,13,16,15,15,15,15,17,17,14,15,15,17,
+	16,12,14,14,16,16,14,14,15,16,16,14,14,14,16,16,
+	15,16,17,17,18,15,16,16,18,17,12,14,13,16,14,13,
+	14,14,16,15,13,15,14,16,14,15,16,16,17,17,15,16,
+	15,18,15,15,15,16,17,17,15,16,16,17,18,16,16,16,
+	18,18,17,17,18,18,19,17,17,18,19,19,14,15,14,17,
+	13,15,16,15,18,14,15,16,15,18,14,17,18,17,18,16,
+	16,18,16,19,15,
+};
+
+static const static_codebook _44p8_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p8_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p8_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p3_0[] = {
+	 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 7, 9,
+	10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8,10, 9,
+	10,11,12, 9,11,10, 5, 8, 7, 8,10, 9, 7,10, 9, 8,
+	 9,10, 9,10,11,10,12,11, 8,10, 9,10,11,11, 9,12,
+	10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9,10, 9,10,11,
+	 9,11,11, 8,10, 9,10,11,11,10,12,10, 7, 9,10, 9,
+	10,12, 9,11,11, 9, 9,12,11,10,13,11,11,13,10,12,
+	11,11,13,13,11,13,12, 7, 9, 9, 9,11,11, 9,12,11,
+	 9,11,10,10,11,12,11,13,12, 9,11,11,12,13,13,11,
+	13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10,10,10,
+	12,10,11,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	 9,11,12, 9,11,11, 9,11,11,11,11,13,12,13,13, 9,
+	10,11,11,12,13,10,12,11, 7,10, 9, 9,11,11, 9,12,
+	10,10,11,12,11,12,13,12,13,13, 9,12, 9,11,13,11,
+	10,13,10,
+};
+
+static const static_codebook _44p8_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p8_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p3_1[] = {
+	 6, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8,
+	 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8,
+	 8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
+	 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
+	 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 8,
+	 8, 9, 8,
+};
+
+static const static_codebook _44p8_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p8_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p4_0[] = {
+	 2, 5, 5, 4, 7, 8, 4, 8, 7, 5, 7, 8, 7, 7,10, 8,
+	 9, 9, 5, 7, 7, 8, 9, 9, 7,10, 7, 5, 7, 8, 8, 9,
+	11, 8,10,10, 8, 9,10,10,10,12,11,12,12, 8,10,10,
+	10,12,12,10,12,11, 5, 8, 7, 8,10,10, 8,11, 9, 8,
+	10,10,10,11,12,10,12,12, 8,10, 9,11,12,12,10,12,
+	10, 5, 8, 8, 7,10,10, 8,11,10, 7, 9,10, 9,10,12,
+	10,12,12, 8,10,10,10,12,12,10,12,11, 7, 9,10, 9,
+	11,12,10,12,11, 9, 9,12,10,10,13,12,12,13,10,12,
+	11,12,13,13,11,13,11, 7,10, 9,10,11,12,10,13,11,
+	 9,11,11,11,11,13,12,14,13,10,11,11,12,14,14,11,
+	14,11, 5, 8, 8, 8,10,11, 7,10,10, 8,10,10,10,11,
+	12,10,12,12, 7,10, 9,10,12,12, 9,12,10, 7, 9,10,
+	10,11,13,10,12,11,10,11,11,11,11,14,12,14,14, 9,
+	11,11,12,13,14,11,13,11, 7,10, 9,10,11,12, 9,12,
+	10,10,11,12,11,11,13,12,13,13, 9,12, 9,12,13,12,
+	10,13,10,
+};
+
+static const static_codebook _44p8_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p8_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p8_p4_1[] = {
+	 7, 9, 9,10,10, 9,10,10,10,11, 9,10,10,11,10, 9,
+	10,10,11,11, 9,10,10,11,11, 9,10,10,11,11,10,10,
+	10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,
+	11,11, 9,10,10,11,11,10,10,10,11,11, 9,10,10,11,
+	11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,
+	10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,12,10,11,11,11,11,11,11,11,11,11,10,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11, 9,10,10,
+	11,11,10,10,11,11,11,10,10,11,11,11,10,11,11,11,
+	12,10,11,11,12,12,10,10,11,11,11,10,11,11,11,12,
+	11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
+	11,11,11,11,11,11,11,12,12,10,11,11,12,12,11,12,
+	11,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,10,
+	11,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,
+	11,12,11,10,11,11,11,11,10,11,11,11,12,11,11,11,
+	12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,
+	11,11,11,11,12,12,10,11,11,12,11,11,12,11,12,12,
+	11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+	11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,10,11,11,11,11,11,11,11,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,10,11,11,11,11,11,11,11,12,12,11,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,12,13,12,13,
+	12, 9,10,10,11,11,10,10,11,11,11,10,11,10,11,11,
+	10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,10,
+	11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,
+	11,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,
+	12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,11,
+	12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
+	11,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,10,
+	11,11,11,10,11,11,12,12,10,11,11,12,12,11,11,11,
+	12,12,11,11,12,12,12,10,11,11,11,12,11,11,12,12,
+	12,11,11,12,12,12,11,11,12,12,12,11,12,12,12,12,
+	11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,
+	10,11,11,11,12,10,11,11,12,11,11,12,11,12,12,11,
+	12,11,12,12,10,11,11,12,11,11,11,11,12,12,11,12,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,
+	12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,12,
+	12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,
+	12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,
+	12,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,
+	12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,13,13,12,12,12,13,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,
+	13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,
+	12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,
+	13,13, 9,10,10,11,11,10,10,11,11,11,10,11,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,10,11,11,11,11,
+	10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
+	11,12,12,12,10,11,10,11,11,10,11,11,12,12,10,11,
+	11,12,11,11,12,11,12,12,11,11,11,12,12,11,11,11,
+	11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,11,12,12,12,12, 9,
+	10,10,11,11,10,11,11,11,12,10,11,11,12,11,11,11,
+	12,12,12,11,11,12,12,12,10,11,11,12,12,11,11,12,
+	12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,
+	11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,11,11,12,12,12,12,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,
+	11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,
+	11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
+	11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
+	11,12,11,11,12,11,12,12,11,12,11,12,12,11,12,12,
+	12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,11,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,
+	12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,
+	12,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,
+	13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,13,13,12,12,12,13,13,11,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
+	12,12,12,12,12,12,12,12,12,13,13,12,12,12,12,13,
+	12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,
+	12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,
+	13,13,12,10,11,11,12,12,11,11,11,12,12,11,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
+	12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,
+	11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
+	13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,
+	12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,
+	12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,
+	12,12,12,12,12,12,11,11,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,
+	12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
+	12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,13,12,12,12,12,12,13,12,13,12,13,
+	13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,
+	12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,12,13,12,12,13,13,13,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,
+	12,12,12,13,12,12,12,12,12,12,12,12,13,12,13,12,
+	12,12,12,13,12,12,13,12,13,12,13,13,12,13,12,12,
+	12,12,12,12,13,13,13,12,12,12,12,13,12,12,13,13,
+	13,13,12,13,13,13,12,11,11,11,12,12,11,12,12,12,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,12,13,13,13,11,12,12,12,12,12,12,
+	12,12,13,12,12,12,13,12,12,13,12,13,13,12,13,12,
+	13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,13,12,13,12,13,13,13,12,12,12,12,12,12,
+	12,13,12,13,12,12,12,12,13,12,12,13,13,13,12,12,
+	13,12,13,12,10,11,11,12,12,11,11,11,12,12,11,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
+	12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
+	11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
+	12,13,13,11,11,11,12,12,12,12,12,12,12,11,12,12,
+	12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,
+	12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,
+	12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,
+	12,12,12,12,12,12,13,13,13,12,12,12,13,12,11,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
+	11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,
+	12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,
+	13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
+	12,12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,
+	11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,
+	12,13,13,12,12,13,12,13,12,12,13,13,13,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,
+	12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,12,
+	12,12,12,12,12,12,13,12,13,12,12,12,12,12,12,13,
+	13,12,12,12,13,12,12,12,11,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
+	12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,13,
+	12,13,12,12,12,12,12,12,12,12,12,12,13,12,13,12,
+	13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,
+	12,12,12,12,13,12,12,13,12,13,12,12,13,12,13,12,
+	12,13,12,13,12,
+};
+
+static const static_codebook _44p8_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p8_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p8_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p8_p5_0[] = {
+	 2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8,
+	10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8,
+	10,10,12, 8, 9, 9,12,12,10,10,12,12,14,10,12,12,
+	14,13, 6, 8, 7,11,10, 8, 9, 9,12,12, 7,10, 8,12,
+	11,10,12,12,13,14,10,12,10,14,12, 9,10,11,11,13,
+	10,10,11,11,13,11,12,12,13,14,12,12,13,11,15,13,
+	14,14,15,14, 9,11,10,13,11,11,12,12,13,13,10,11,
+	10,13,11,13,14,14,15,15,12,13,12,15,11, 6, 8, 9,
+	11,12, 8, 9,11,12,13, 8,10,10,13,13,11,12,13,14,
+	15,11,12,13,14,14, 9, 9,10,12,13,10,10,12,12,14,
+	10,11,11,13,14,12,12,14,14,15,13,13,14,15,15, 9,
+	10,10,13,13,10,11,11,13,14,10,11,10,14,13,13,13,
+	14,15,15,12,14,13,15,14,12,12,13,13,14,12,13,14,
+	13,15,13,14,14,15,15,14,14,15,14,16,15,15,15,16,
+	16,12,13,13,14,14,13,14,14,15,15,12,14,13,15,14,
+	14,15,15,16,16,14,15,14,16,14, 6, 9, 8,12,11, 8,
+	10,10,13,13, 8,11, 9,13,12,11,12,12,14,14,11,13,
+	12,15,14, 9,10,10,13,13,10,10,11,13,14,10,12,11,
+	14,13,12,13,14,14,15,13,13,13,15,14, 9,10, 9,13,
+	12,10,11,11,14,13,10,12,10,14,12,13,14,13,15,15,
+	12,14,12,15,14,12,13,13,14,14,13,13,13,14,15,13,
+	14,14,15,15,14,14,15,14,16,14,15,15,16,16,12,13,
+	12,14,13,13,14,14,15,15,12,14,13,15,13,15,15,15,
+	16,16,14,15,14,16,14,11,12,12,13,14,12,13,14,14,
+	16,12,13,13,15,15,14,14,16,15,17,14,15,15,16,16,
+	12,13,14,14,15,13,13,15,15,16,14,14,14,15,16,15,
+	15,16,16,17,15,15,16,16,17,13,13,13,15,15,14,14,
+	15,15,16,13,14,14,15,16,15,15,16,16,17,15,16,15,
+	17,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,
+	17,16,16,17,16,18,16,17,17,17,17,15,15,15,16,16,
+	15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,16,
+	17,16,17,16,11,12,12,15,13,13,13,13,15,15,12,14,
+	13,16,14,14,15,15,16,16,14,15,14,17,15,13,13,13,
+	15,14,13,14,14,16,15,14,14,14,16,15,15,15,16,16,
+	17,15,16,15,17,16,12,14,13,15,14,14,14,14,16,15,
+	13,14,13,16,15,15,16,16,17,16,15,16,15,17,16,15,
+	15,15,16,16,15,15,16,16,17,15,16,16,17,17,16,16,
+	17,17,17,17,17,17,18,17,14,15,15,16,16,15,16,16,
+	17,16,15,16,15,17,16,17,17,17,18,17,16,17,16,18,
+	16, 6, 9, 9,12,12, 8,10,10,12,13, 8,10,10,13,12,
+	10,12,12,14,15,11,13,12,15,14, 8, 9,10,12,13, 9,
+	10,11,13,14,10,11,11,14,13,12,12,13,14,15,12,13,
+	13,15,15, 8,10,10,13,13,10,11,11,13,14,10,12,10,
+	14,13,12,13,13,15,15,12,14,13,15,14,11,12,12,13,
+	14,12,12,13,13,15,12,13,13,15,15,14,13,15,14,16,
+	14,15,15,16,16,12,13,13,14,14,13,13,14,15,14,12,
+	14,13,15,14,14,15,15,16,15,14,15,14,16,14, 7, 9,
+	10,12,12, 9,10,11,13,14, 9,11,10,13,13,11,12,13,
+	14,15,12,13,13,15,14, 9,10,11,12,13,10,10,12,13,
+	14,11,11,12,14,14,12,12,14,14,15,13,13,14,15,15,
+	 9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,
+	14,14,15,15,13,14,13,16,14,12,12,13,14,15,13,13,
+	14,14,16,13,14,14,15,15,14,14,15,14,17,14,15,15,
+	16,16,12,13,13,15,14,13,14,14,15,15,13,14,13,16,
+	14,15,15,15,16,16,14,15,14,16,14, 7,10, 9,13,12,
+	10,11,12,12,14,10,12,11,14,12,12,13,13,14,15,12,
+	14,13,15,14, 9,11,10,13,13,10,11,12,13,14,12,13,
+	12,15,13,13,13,14,13,15,13,14,14,16,15,10,11,11,
+	13,13,12,12,13,14,14,11,12,11,14,13,14,14,14,15,
+	16,13,14,13,16,13,12,13,13,14,14,12,13,13,14,15,
+	14,14,14,15,15,14,13,15,13,16,15,15,15,17,16,13,
+	13,13,14,14,14,14,14,15,15,12,13,13,15,14,15,16,
+	16,16,16,14,15,14,16,13,11,12,13,14,15,12,13,14,
+	15,16,13,14,14,15,15,14,14,15,15,17,14,15,15,16,
+	16,13,13,14,14,15,13,13,15,14,16,14,14,15,15,16,
+	15,14,16,15,17,15,16,16,16,17,13,14,14,15,15,14,
+	14,15,16,16,13,15,14,16,16,15,16,16,17,17,15,16,
+	15,17,16,14,15,15,15,17,15,15,16,15,17,15,16,16,
+	16,17,16,16,17,16,18,17,17,17,17,18,15,15,15,17,
+	16,15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,
+	16,17,16,18,17,11,13,12,15,14,13,13,14,15,15,13,
+	14,13,16,14,15,15,15,16,16,15,16,15,17,16,13,14,
+	13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,16,
+	16,16,15,16,15,18,16,13,14,14,15,15,14,15,15,15,
+	16,13,15,13,16,15,15,16,16,17,17,15,16,15,17,16,
+	15,15,15,16,16,15,15,15,16,17,16,16,16,17,16,16,
+	16,17,16,17,17,17,17,18,17,15,15,15,16,16,16,16,
+	16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,
+	17,15, 6, 9, 9,12,12, 8,10,10,12,13, 8,10,10,13,
+	12,11,12,13,14,15,10,12,12,14,14, 9,10,10,13,13,
+	10,10,12,13,14,10,11,11,14,13,12,13,14,14,15,12,
+	13,13,15,15, 8,10, 9,13,12,10,11,11,13,14, 9,11,
+	10,14,13,12,13,13,15,15,12,13,12,15,14,12,13,13,
+	14,14,12,13,13,14,15,13,14,14,14,15,14,14,15,14,
+	16,14,15,15,16,16,11,12,12,14,13,13,13,13,15,15,
+	12,13,12,15,13,14,15,15,16,16,14,15,14,16,14, 7,
+	 9,10,12,13,10,10,12,12,14,10,12,11,14,13,12,13,
+	14,14,15,12,13,13,15,14,10,11,11,13,13,11,11,12,
+	13,14,12,13,12,14,14,13,13,14,13,16,14,14,14,15,
+	15, 9,10,11,13,14,12,12,13,13,15,10,12,10,14,13,
+	13,14,14,15,16,13,14,13,15,13,13,14,13,14,15,12,
+	13,13,14,15,14,14,14,15,15,14,13,15,13,16,15,16,
+	16,16,16,12,13,13,14,14,14,14,14,15,15,12,13,13,
+	15,14,15,15,16,16,16,14,15,13,16,13, 7,10, 9,12,
+	12, 9,10,11,13,13, 9,11,10,14,13,12,13,13,14,15,
+	11,13,12,15,14, 9,11,11,13,13,10,10,12,13,14,11,
+	12,12,14,14,13,13,14,14,16,13,14,14,16,15, 9,11,
+	10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,
+	15,15,12,14,12,16,14,12,13,13,14,15,13,13,14,14,
+	16,13,14,14,15,15,14,14,15,14,16,15,15,15,16,16,
+	12,13,12,15,14,13,14,14,15,15,12,14,13,16,14,14,
+	15,15,16,16,14,15,14,17,14,11,12,13,14,15,13,13,
+	14,14,16,13,14,13,15,15,15,15,16,16,17,15,15,15,
+	16,16,13,14,13,15,15,13,13,15,15,16,14,15,15,16,
+	16,15,15,16,15,17,16,16,16,17,17,13,13,14,14,15,
+	14,14,15,15,16,13,14,13,15,15,15,16,16,16,17,15,
+	16,15,16,16,15,15,15,16,16,15,15,16,16,17,16,16,
+	16,17,17,16,16,17,16,18,17,17,17,18,18,15,15,15,
+	16,16,16,16,16,17,17,15,15,15,16,16,17,17,17,17,
+	18,16,16,16,17,15,11,13,12,15,14,13,13,14,15,15,
+	12,14,13,16,14,14,15,15,16,16,14,15,14,16,15,13,
+	14,14,15,15,13,14,14,16,16,14,15,14,16,16,15,15,
+	16,17,17,15,16,16,17,17,13,14,13,15,14,14,14,14,
+	16,15,13,15,13,16,14,15,16,15,17,16,15,16,14,17,
+	15,14,16,15,16,17,15,16,16,16,17,15,16,16,17,17,
+	16,16,17,17,18,16,17,17,18,17,14,15,15,17,15,15,
+	16,16,17,16,15,16,15,17,15,16,17,17,18,17,16,17,
+	16,18,15,10,12,12,14,14,12,13,13,15,15,12,13,13,
+	15,15,13,14,14,15,16,14,15,14,16,16,12,13,13,15,
+	15,12,13,14,15,15,13,14,14,15,15,14,14,15,16,17,
+	14,15,15,17,16,12,13,13,15,15,13,14,14,15,16,13,
+	14,14,16,15,14,15,15,16,17,14,15,15,17,16,13,14,
+	14,15,16,14,14,15,15,16,14,15,15,16,16,15,15,16,
+	16,17,15,16,16,17,17,14,15,15,16,16,15,15,15,16,
+	16,15,15,15,16,16,16,17,16,17,17,16,16,16,18,16,
+	11,12,12,14,14,12,13,14,15,15,12,13,13,15,15,13,
+	14,15,16,16,14,15,15,16,16,12,13,13,15,15,13,13,
+	14,15,16,13,14,14,15,16,14,14,15,16,17,15,15,15,
+	16,17,12,13,13,15,15,13,14,14,15,16,13,14,14,16,
+	15,15,15,15,16,17,15,16,15,17,16,14,14,15,15,16,
+	14,14,15,15,17,15,15,16,16,17,15,15,16,15,18,16,
+	16,16,17,17,14,15,15,16,16,15,16,16,17,17,15,15,
+	15,17,16,16,17,16,17,17,16,16,16,18,16,11,12,12,
+	14,14,13,13,14,15,15,13,14,13,15,15,14,15,15,16,
+	16,14,15,15,16,16,12,13,13,15,15,13,13,14,15,15,
+	14,14,14,16,15,15,15,15,15,16,15,16,15,17,16,12,
+	13,13,15,15,14,14,15,15,16,13,14,13,16,15,15,15,
+	16,16,17,15,16,15,17,15,14,15,14,16,16,14,15,15,
+	16,16,15,16,15,17,16,15,15,16,15,17,16,17,16,17,
+	17,14,15,15,16,16,15,16,16,16,17,14,15,15,16,16,
+	16,17,17,17,18,16,16,16,17,16,12,13,13,15,15,13,
+	13,14,15,16,13,14,14,16,15,14,15,15,16,17,14,15,
+	15,17,16,13,14,14,15,16,14,14,15,15,17,14,15,15,
+	16,16,15,14,16,15,17,15,16,16,17,17,13,14,14,16,
+	16,14,15,15,16,16,14,15,14,16,16,15,16,16,17,17,
+	15,16,15,17,16,15,15,16,15,17,15,15,16,15,17,15,
+	16,16,16,17,16,15,17,15,18,17,17,17,17,17,15,15,
+	15,17,17,16,16,16,17,17,15,16,15,17,17,16,17,17,
+	18,18,16,17,15,18,15,11,12,12,15,15,13,13,15,14,
+	16,13,14,13,16,14,15,15,16,16,17,15,16,15,17,15,
+	12,14,13,16,14,13,13,14,14,16,14,15,14,16,15,15,
+	15,16,15,17,16,16,16,17,16,12,13,14,15,16,15,15,
+	15,15,16,13,15,13,16,14,16,16,16,17,17,15,16,15,
+	17,15,15,16,15,16,15,14,14,15,16,16,16,16,16,17,
+	16,15,15,16,15,17,17,17,17,18,17,15,15,15,16,16,
+	16,16,16,16,17,14,15,15,17,16,17,17,17,17,18,15,
+	16,15,18,14,10,12,12,14,14,12,13,13,15,15,12,13,
+	13,15,15,14,14,15,15,16,13,15,14,16,16,12,13,13,
+	15,15,13,14,14,15,16,13,14,14,15,15,14,15,15,16,
+	17,14,15,15,17,16,12,13,13,15,15,13,14,14,15,15,
+	12,14,13,15,15,14,15,15,16,17,14,15,14,17,15,14,
+	15,15,16,16,14,15,15,16,17,15,15,15,17,16,16,16,
+	16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
+	16,16,14,15,14,16,16,15,16,16,17,17,15,16,15,17,
+	16,11,12,12,14,15,13,13,14,14,15,13,14,13,15,15,
+	14,15,15,16,16,14,15,15,16,16,12,14,13,15,15,13,
+	13,14,15,16,14,15,14,16,15,15,15,16,15,17,15,16,
+	16,17,16,12,13,13,15,15,14,14,15,15,16,13,14,13,
+	16,15,15,15,16,16,17,15,15,15,16,16,14,15,15,16,
+	16,14,15,15,16,16,15,16,16,17,17,16,16,16,16,17,
+	16,17,17,18,17,14,14,15,15,16,15,15,16,16,17,14,
+	15,15,16,16,16,16,16,17,17,15,16,15,17,15,11,12,
+	12,14,14,12,13,14,15,15,12,13,13,15,15,14,15,15,
+	16,16,13,15,14,16,16,12,13,13,15,15,13,14,14,15,
+	16,13,14,14,16,16,15,15,15,16,17,15,15,15,17,16,
+	12,13,13,15,15,13,14,14,16,15,13,14,13,16,15,15,
+	16,15,17,17,14,15,14,17,16,14,15,15,16,16,15,15,
+	16,16,17,15,16,16,17,17,16,16,16,16,18,16,17,16,
+	18,17,14,15,14,16,15,15,15,15,17,16,14,15,14,17,
+	15,16,17,16,17,17,15,16,15,17,15,11,12,12,15,15,
+	13,13,15,14,16,13,15,13,16,14,15,15,16,15,17,15,
+	16,15,17,16,12,14,13,15,15,13,13,15,15,16,15,15,
+	15,16,15,15,15,16,15,17,16,16,16,17,16,12,13,14,
+	15,16,14,14,15,15,16,13,14,13,16,14,16,16,16,16,
+	17,15,16,15,17,15,15,16,15,16,16,14,15,15,16,16,
+	16,16,16,17,16,15,15,16,15,17,17,17,17,18,17,15,
+	15,15,15,16,16,16,16,16,17,14,15,14,16,15,17,17,
+	17,17,18,15,16,15,17,15,12,13,13,15,15,13,14,14,
+	15,16,13,14,14,16,15,14,15,15,16,17,14,15,15,17,
+	16,13,14,14,16,15,13,14,15,16,16,14,15,15,16,16,
+	15,15,16,16,17,15,16,16,17,17,13,14,13,16,15,14,
+	15,15,16,16,13,15,14,16,15,15,16,16,17,17,15,16,
+	14,17,15,15,15,16,17,17,15,15,16,16,17,16,16,16,
+	17,17,16,15,17,16,18,17,17,17,18,18,15,15,15,17,
+	14,16,16,16,17,16,15,16,15,17,15,16,17,17,18,17,
+	16,17,15,18,15,
+};
+
+static const static_codebook _44p8_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p8_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p8_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p8_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p8_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p8_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p8_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p6_0[] = {
+	 2, 6, 6, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 7, 9, 7,
+	 9, 9, 6, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
+	10, 8, 9, 9, 8, 9,10, 9, 9,10,10,10,10, 8, 9, 9,
+	10,10,11, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
+	 9, 9, 9,10,10,10,11,10, 8,10, 9,10,11,10, 9,11,
+	 9, 6, 8, 8, 7, 9, 9, 7, 9, 9, 7, 9, 9, 8, 9,10,
+	 9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9, 9,
+	 9,10, 9,10,10, 9, 9,10,10, 9,11,10,11,11, 9,10,
+	10,10,11,11,10,11,10, 6, 9, 8, 9, 9,10, 9,10, 9,
+	 8,10,10, 9, 9,10,10,11,11, 9,10,10,10,11,11, 9,
+	11, 9, 6, 8, 8, 7, 9, 9, 7, 9, 9, 8, 9, 9, 9, 9,
+	10, 9,10,10, 7, 9, 9, 9,10,10, 8,10, 9, 6, 8, 9,
+	 9, 9,10, 9,10, 9, 9,10,10, 9, 9,11,10,11,11, 8,
+	 9,10,10,11,11, 9,10, 9, 7, 9, 9, 9,10,10, 9,10,
+	 9, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
+	10,11, 9,
+};
+
+static const static_codebook _44p8_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p8_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p6_1[] = {
+	 4, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8,
+	 8, 8, 7, 8, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
+	 8, 9, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9,
+	 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 8, 8, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
+	 8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
+	 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 9, 9, 8, 8, 8, 8, 9, 8, 8, 9, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
+	 8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9,
+	 8, 9, 8,
+};
+
+static const static_codebook _44p8_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p8_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p8_p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p8_p7_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p8_p7_0,
+	1, -512202240, 1635281408, 2, 0,
+	(long *)_vq_quantlist__44p8_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p8_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p8_p7_1[] = {
+	 1, 7, 7,12,12, 5,11,12,12,12, 5,12,11,12,12,12,
+	12,12,12,12,12,13,13,13,13, 7,11,11,13,13,13,12,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13, 7,13,10,13,13,13,13,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13, 7,13,12,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13, 8,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13, 8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,10,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13, 8,13,12,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,
+};
+
+static const static_codebook _44p8_p7_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p8_p7_1,
+	1, -514619392, 1630767104, 3, 0,
+	(long *)_vq_quantlist__44p8_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p8_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p8_p7_2[] = {
+	 1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44p8_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p8_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p8_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p8_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p8_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p8_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p8_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p8_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p8_short[] = {
+	 3, 9,15,17,20,21,22,23, 5, 5, 7, 9,11,13,17,20,
+	 9, 5, 5, 6, 8,10,15,18,11, 7, 5, 4, 6, 9,13,17,
+	14, 9, 7, 5, 6, 7,10,14,17,10, 8, 6, 6, 4, 5, 8,
+	20,14,13,10, 8, 4, 3, 4,23,17,16,14,12, 6, 4, 4,
+};
+
+static const static_codebook _huff_book__44p8_short = {
+	2, 64,
+	(char *)_huff_lengthlist__44p8_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p9_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44p9_l0_0[] = {
+	 2, 5, 5, 7, 6, 8, 8, 9, 9,10,10,11,11, 4, 5, 5,
+	 6, 7, 8, 8, 9, 9,10,10,11,10, 4, 5, 5, 7, 6, 8,
+	 8, 9, 9,10,10,10,10, 6, 6, 7, 6, 7, 8, 8, 9, 9,
+	10, 9,11, 9, 6, 6, 6, 7, 6, 8, 8, 9, 9, 9,10, 9,
+	11, 7, 7, 8, 8, 8, 8, 9, 9, 9,10, 9,11, 9, 7, 8,
+	 8, 8, 8, 9, 8, 9, 9, 9,10, 9,11, 8, 9, 9, 9, 9,
+	 9, 9,10,10,11,10,12,10, 8, 9, 9, 9, 9, 9, 9,10,
+	 9,10,11,11,12, 9,10,10,10,10,10,10,10,11,11,11,
+	11,12, 9,10,10,10,10,11,10,11,10,11,11,12,11,11,
+	11,11,11,11,11,11,11,12,11,12,11,12,11,11,11,11,
+	11,11,11,12,11,12,11,12,11,
+};
+
+static const static_codebook _44p9_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44p9_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44p9_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_l0_1[] = {
+	 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p9_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p9_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p9_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_l1_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_l1_0[] = {
+	 1, 2, 3, 5, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,
+};
+
+static const static_codebook _44p9_l1_0 = {
+	2, 25,
+	(char *)_vq_lengthlist__44p9_l1_0,
+	1, -514619392, 1630767104, 3, 0,
+	(long *)_vq_quantlist__44p9_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44p9_lfe[] = {
+	 1, 1,
+};
+
+static const static_codebook _huff_book__44p9_lfe = {
+	1, 2,
+	(char *)_huff_lengthlist__44p9_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44p9_long[] = {
+	 3, 3, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _huff_book__44p9_long = {
+	1, 8,
+	(char *)_huff_lengthlist__44p9_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44p9_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p1_0[] = {
+	 1, 5, 5, 4, 8, 8, 4, 8, 8, 5, 7, 8, 8, 9,10, 8,
+	10,10, 5, 8, 7, 8,10,10, 8,10, 9, 7, 9, 9, 9,11,
+	11, 9,11,11, 9,11,11,11,12,13,11,13,13, 9,11,11,
+	11,13,13,11,13,13, 7, 9, 9, 9,11,11, 9,11,11, 9,
+	11,11,11,13,13,11,13,13, 9,11,11,11,13,13,11,13,
+	12, 5, 9, 9, 9,11,11, 9,11,11, 9,11,11,11,12,13,
+	11,13,13, 9,11,11,11,13,13,11,13,13, 9,11,12,11,
+	13,13,12,13,13,11,12,13,13,14,15,13,14,14,12,13,
+	13,13,15,15,13,15,14, 8,10,10,11,13,13,12,14,13,
+	11,12,12,13,14,15,13,15,15,11,12,12,13,15,15,13,
+	15,14, 5, 9, 9, 9,11,11, 9,11,11, 9,11,11,11,13,
+	13,11,13,13, 9,11,10,11,13,13,11,13,12, 8,10,10,
+	11,13,13,12,13,13,11,12,12,13,14,15,14,15,15,10,
+	12,12,13,14,15,13,15,14, 9,12,11,12,13,13,11,13,
+	13,12,13,13,13,15,15,13,14,15,11,13,12,13,15,14,
+	13,15,14,
+};
+
+static const static_codebook _44p9_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p9_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_p2_0[] = {
+	 4, 6, 6, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 6,
+	 8, 8,11,11, 6, 8, 8,11,11, 6, 7, 7, 9, 9, 7, 8,
+	 9,10,11, 7, 9, 9,11,10, 8, 9,10,12,12, 8,10,10,
+	12,12, 6, 7, 7, 9, 9, 7, 9, 9,10,10, 7, 9, 8,11,
+	10, 8,10,10,12,12, 8,10, 9,12,12, 8, 9, 9,11,11,
+	 9,10,10,12,12, 9,11,11,12,13,11,12,12,13,14,11,
+	12,12,14,14, 8, 9, 9,11,11, 9,11,10,13,12, 9,10,
+	10,13,12,11,12,12,14,14,11,12,12,14,13, 7, 8, 9,
+	10,10, 8,10,10,11,11, 8,10,10,11,11,10,11,11,13,
+	13,10,11,11,13,13, 8, 9,10,10,11,10,11,11,12,13,
+	10,11,11,12,12,11,11,12,13,14,11,12,12,14,14, 8,
+	10,10,11,11,10,11,11,12,13,10,11,11,12,12,11,12,
+	12,14,14,11,12,12,14,14,10,11,11,12,13,11,12,12,
+	13,14,12,13,13,14,14,13,13,14,14,16,13,14,14,15,
+	16,10,11,11,13,13,12,12,12,14,14,11,12,12,14,14,
+	13,14,14,15,16,13,14,14,16,15, 7, 8, 8,10,10, 8,
+	10,10,11,11, 8,10,10,12,11,10,11,11,13,13,10,11,
+	11,13,13, 8,10,10,11,11,10,11,11,12,12,10,11,11,
+	12,12,11,12,12,14,14,11,12,12,14,14, 8,10, 9,11,
+	10,10,11,11,13,12,10,11,10,13,12,11,12,12,14,14,
+	11,12,11,14,13,10,11,11,13,13,11,12,12,14,14,12,
+	12,12,14,14,13,14,14,15,16,13,14,14,15,15,10,11,
+	11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,
+	16,15,13,14,13,16,14,10,11,11,13,13,12,12,13,14,
+	15,12,13,13,14,15,13,14,15,15,16,13,14,14,16,16,
+	11,12,13,14,14,13,13,14,15,16,13,14,14,15,16,14,
+	15,15,16,17,14,15,16,17,17,11,12,12,14,14,13,14,
+	14,15,16,13,14,14,15,15,14,15,15,16,18,14,15,15,
+	17,16,13,14,15,15,16,15,15,16,16,18,15,15,15,17,
+	17,16,16,17,17,18,16,16,16,18,18,14,14,14,16,16,
+	15,15,15,16,17,15,15,15,16,17,16,17,17,18,18,16,
+	16,17,18,17,10,11,11,14,13,12,13,13,15,14,11,13,
+	13,15,14,13,15,15,16,16,13,14,14,16,16,11,12,12,
+	14,14,13,13,13,15,15,13,14,13,15,15,15,15,15,17,
+	16,14,15,15,17,16,11,13,12,14,14,13,14,13,15,15,
+	13,14,13,15,15,14,15,15,17,17,14,15,15,17,16,14,
+	14,14,16,16,14,15,15,17,17,15,15,16,17,16,17,16,
+	17,18,18,16,17,17,18,18,13,14,14,16,15,15,15,15,
+	17,17,14,16,15,16,16,17,17,17,18,18,16,17,16,20,
+	19, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,12,11,
+	10,11,11,13,13,10,11,11,13,13, 8, 9,10,11,11,10,
+	11,11,12,12,10,11,11,13,12,11,12,12,14,14,11,12,
+	12,14,14, 9,10,10,11,11,10,11,11,12,12,10,11,11,
+	13,12,11,12,12,14,14,11,12,12,14,14,10,10,11,12,
+	13,11,12,12,14,14,11,12,12,14,14,13,14,14,15,16,
+	13,14,14,15,16,10,11,11,13,13,12,12,12,14,14,12,
+	13,12,14,14,13,14,14,16,16,13,14,14,15,15, 9,10,
+	10,11,12,10,11,11,12,13,10,11,11,13,12,11,12,12,
+	14,14,11,12,12,14,14,10,10,11,12,13,11,12,12,13,
+	14,11,12,12,13,14,12,13,14,14,15,12,13,13,15,15,
+	10,11,11,13,13,11,12,12,13,14,11,12,12,14,13,12,
+	13,13,15,15,12,13,13,15,15,12,11,13,12,14,13,13,
+	14,14,15,13,13,14,14,15,14,15,15,16,17,14,15,15,
+	16,17,12,13,12,14,14,13,14,14,15,15,13,14,14,15,
+	15,14,15,15,16,17,14,15,15,16,17, 8, 9, 9,11,11,
+	10,11,11,12,13,10,11,11,13,12,12,13,13,14,15,11,
+	13,12,15,14, 9,11,10,12,12,11,12,12,13,14,11,12,
+	12,14,13,13,13,14,15,15,13,14,13,15,15, 9,11,11,
+	12,12,11,12,12,14,14,11,12,12,14,13,13,14,14,15,
+	16,13,14,13,15,14,11,12,12,14,13,12,13,13,14,15,
+	13,14,14,16,15,15,15,15,15,16,15,16,15,17,17,11,
+	12,12,14,14,13,14,14,15,15,12,13,13,15,14,15,15,
+	15,17,17,14,15,15,17,15,11,12,12,14,14,12,13,13,
+	15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,16,
+	16,12,13,13,14,15,13,14,14,16,16,14,14,14,15,16,
+	15,16,16,17,17,15,16,16,17,17,12,13,13,15,15,14,
+	14,14,16,16,14,14,15,16,16,15,16,16,17,17,15,16,
+	16,17,17,14,15,15,15,16,15,15,16,16,18,15,16,16,
+	17,17,17,17,17,18,18,16,17,17,19,18,14,15,15,16,
+	17,15,16,16,17,17,15,16,16,18,17,16,17,17,19,18,
+	17,17,17,19,18,10,12,12,14,14,13,13,14,15,15,12,
+	14,13,16,15,15,15,15,17,17,14,15,15,17,16,12,13,
+	13,15,14,13,14,14,16,16,14,14,15,17,16,15,16,16,
+	17,17,15,16,16,18,17,12,13,13,15,14,14,15,15,16,
+	16,13,15,14,16,15,16,17,16,19,17,15,16,16,17,17,
+	14,15,15,17,15,15,16,15,17,17,16,17,16,18,17,17,
+	17,18,18,18,17,17,18,19,18,14,15,15,16,16,15,16,
+	16,17,18,15,16,16,18,16,17,18,18,19,19,17,18,17,
+	18,19, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,12,
+	11,10,11,11,13,13, 9,11,11,13,13, 9,10,10,11,11,
+	10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,11,
+	12,12,14,14, 8,10, 9,11,11,10,11,11,12,12,10,11,
+	11,12,12,11,12,12,14,14,11,12,12,14,14,10,11,11,
+	13,13,11,12,13,14,14,12,12,12,14,14,13,14,14,15,
+	16,13,14,14,16,16,10,11,10,13,12,11,12,12,14,14,
+	11,12,12,14,14,13,14,14,15,16,13,14,14,16,15, 8,
+	 9, 9,11,11,10,11,11,12,13,10,11,11,13,12,12,13,
+	13,14,15,12,13,13,15,14,10,11,11,12,12,11,11,12,
+	13,14,11,12,12,14,14,13,13,14,15,16,13,14,14,15,
+	15, 9,10,11,12,12,11,12,12,13,14,11,12,12,14,13,
+	13,14,14,15,16,12,14,13,15,15,11,12,12,14,14,12,
+	13,13,14,15,13,14,14,16,15,14,15,15,15,17,15,15,
+	16,16,17,11,12,12,13,14,13,14,14,15,15,12,13,13,
+	15,14,15,16,15,16,17,14,16,15,17,15, 9,10,10,12,
+	11,10,11,11,13,13,10,11,11,13,12,11,12,12,14,14,
+	11,12,12,14,14,10,11,11,12,13,11,12,12,13,14,11,
+	12,12,14,14,12,13,13,15,15,12,13,13,15,15,10,11,
+	10,13,12,11,12,12,13,13,11,12,12,14,13,12,13,13,
+	15,15,12,13,13,15,14,12,13,12,14,14,13,14,14,15,
+	15,13,14,14,15,15,14,15,15,16,16,14,15,15,16,16,
+	11,13,11,14,12,13,13,13,15,14,12,14,13,15,14,15,
+	15,15,17,16,14,15,14,17,15,10,12,12,14,14,13,13,
+	14,15,16,12,14,13,15,15,14,15,16,17,17,14,15,16,
+	17,17,12,13,13,14,15,13,14,14,16,16,14,14,15,16,
+	16,16,16,16,17,17,16,16,16,18,18,12,13,13,14,15,
+	14,14,15,16,16,13,14,14,16,15,16,16,16,17,18,15,
+	16,16,17,17,14,15,15,16,16,15,15,16,17,17,15,16,
+	16,17,18,17,18,18,18,19,17,18,18,19,19,14,15,15,
+	16,16,15,16,16,17,17,15,16,16,17,17,17,17,18,20,
+	18,17,18,17,18,18,11,12,12,14,14,12,13,14,15,15,
+	12,13,13,15,15,14,15,15,16,17,14,15,15,16,17,12,
+	13,13,15,15,14,14,14,16,16,14,14,14,16,16,15,16,
+	16,17,17,15,16,16,17,17,12,13,13,15,14,13,14,14,
+	16,15,14,15,14,16,15,15,16,16,17,17,15,16,16,17,
+	16,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,
+	17,17,17,19,18,17,17,17,18,19,14,15,14,17,15,15,
+	16,16,17,17,15,16,15,17,17,16,17,17,18,18,16,17,
+	17,18,17, 6,11,11,13,13,11,12,12,14,14,11,12,12,
+	14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,
+	14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,
+	14,15,15,17,18,11,12,12,14,14,12,13,13,15,15,12,
+	13,13,15,15,14,15,15,17,17,14,15,15,16,16,13,14,
+	14,15,16,14,15,15,16,17,14,15,15,17,16,15,16,17,
+	18,17,16,16,16,18,17,14,14,15,16,16,14,15,15,18,
+	16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,
+	11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,
+	15,15,17,17,14,15,15,16,16,12,13,13,15,15,13,14,
+	14,15,16,13,14,14,16,16,15,16,16,17,17,15,15,16,
+	17,17,12,13,13,15,15,14,14,14,16,16,13,14,14,16,
+	16,15,16,16,17,17,15,16,16,17,17,14,14,15,15,16,
+	15,15,16,16,17,15,15,16,16,17,16,17,17,17,18,16,
+	17,17,18,18,14,15,15,16,16,15,16,16,17,17,15,16,
+	16,17,17,17,17,17,18,19,17,17,17,18,18,10,12,12,
+	14,14,12,13,14,15,16,13,14,13,15,15,14,15,15,17,
+	17,14,15,16,17,17,12,13,13,15,15,13,14,14,15,15,
+	14,15,14,16,16,15,16,16,17,18,15,17,16,18,17,12,
+	13,13,15,15,14,14,14,16,16,13,14,14,16,15,15,16,
+	16,17,18,15,16,16,17,17,14,14,14,16,16,15,15,16,
+	17,17,15,16,16,17,17,17,17,17,18,20,17,17,17,19,
+	19,14,15,15,16,16,15,17,16,18,18,15,16,15,17,16,
+	17,18,19,19,19,17,17,17,18,17,13,14,14,16,16,14,
+	15,15,17,17,14,15,15,16,17,15,17,17,18,18,16,16,
+	17,18,17,14,15,15,16,17,15,16,16,17,17,15,16,16,
+	17,17,16,17,17,18,18,17,17,17,18,19,14,15,15,16,
+	17,15,16,16,17,17,15,16,16,17,17,16,17,17,18,18,
+	17,17,17,19,19,16,16,16,16,18,16,17,17,17,18,17,
+	17,17,17,19,18,18,18,19,19,18,18,18,19,20,16,16,
+	17,18,18,16,18,17,18,18,17,17,17,20,19,18,18,19,
+	21,20,18,20,18,18,19,10,12,12,14,14,14,14,15,15,
+	17,14,15,14,17,15,16,16,17,18,18,16,18,17,19,18,
+	12,14,13,16,15,14,14,15,15,17,15,16,16,18,17,16,
+	17,18,17,19,17,19,18,20,19,12,13,13,15,15,15,16,
+	17,17,18,14,16,14,17,16,17,18,18,19,19,17,17,17,
+	18,18,15,15,15,17,16,15,16,16,17,17,17,19,17,18,
+	18,18,18,18,18,21,19,20,19,20,19,15,15,16,16,17,
+	17,17,18,20,20,15,16,16,18,17,18,19,19,19,20,18,
+	19,18,19,17, 6,11,11,13,13,11,12,12,14,14,11,12,
+	12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,
+	14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,
+	17,14,15,15,17,16,11,12,12,14,14,12,13,13,15,15,
+	12,13,13,15,15,14,15,15,16,16,14,15,15,16,16,13,
+	14,14,16,16,15,15,15,16,16,14,15,15,17,16,16,17,
+	17,19,18,16,17,17,18,18,13,14,14,15,15,14,15,15,
+	17,16,14,15,15,17,16,16,17,16,17,18,15,16,16,18,
+	18,10,12,12,14,14,12,13,14,15,15,12,13,13,15,15,
+	14,15,15,17,17,14,15,15,17,16,12,13,13,15,15,14,
+	14,14,15,16,14,15,15,16,16,15,16,16,17,18,16,16,
+	16,18,18,12,13,13,14,14,14,14,15,16,16,13,14,14,
+	16,16,15,16,16,18,18,15,16,16,19,17,14,15,15,16,
+	17,15,15,16,17,17,16,17,16,17,18,17,17,18,17,19,
+	17,17,18,18,19,14,14,14,16,16,15,16,16,17,17,15,
+	16,15,17,17,17,17,17,19,20,16,17,17,18,18,11,12,
+	12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,
+	16,16,14,15,14,16,16,12,13,13,15,15,14,14,14,16,
+	16,13,14,14,16,16,15,16,16,18,17,15,16,16,17,17,
+	12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,15,
+	16,15,18,18,15,16,15,17,16,14,15,15,16,16,15,16,
+	16,17,17,15,16,16,18,17,16,17,17,18,18,16,17,17,
+	18,18,14,15,14,16,15,15,16,15,17,17,15,16,15,17,
+	16,16,17,17,18,18,17,17,16,19,17,10,12,12,14,15,
+	14,14,15,15,17,14,15,14,17,15,16,17,17,17,18,16,
+	17,17,18,18,12,14,13,16,15,14,14,16,15,17,15,17,
+	16,18,17,17,17,18,17,19,18,18,18,19,18,12,13,14,
+	15,15,15,16,16,16,17,14,15,14,18,16,18,17,18,19,
+	19,17,18,17,20,18,15,15,15,17,17,15,16,16,17,18,
+	18,18,18,19,18,18,18,19,18,20,18,19,19,21,21,15,
+	15,16,16,17,17,18,18,18,18,15,16,16,17,17,17,19,
+	20,19,20,17,18,18,19,17,13,14,14,16,16,14,15,15,
+	16,17,14,15,15,17,17,16,16,17,17,18,15,17,16,17,
+	17,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,
+	17,17,18,17,18,17,17,17,18,20,14,15,15,17,16,15,
+	16,16,17,17,15,16,16,17,17,17,17,17,18,18,16,17,
+	17,19,18,16,16,17,17,17,17,18,17,19,18,17,17,17,
+	18,19,17,20,18,19,21,17,19,18,19,20,15,17,15,17,
+	16,16,17,17,18,18,17,17,17,18,17,18,19,18,19,21,
+	18,18,17,19,19,
+};
+
+static const static_codebook _44p9_p2_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p9_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p9_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p3_0[] = {
+	 2, 5, 4, 4, 7, 7, 4, 7, 6, 5, 6, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 6, 7, 9, 9, 7, 9, 8, 6, 8, 8, 8,10,
+	10, 8,10,10, 8, 9,10,10,11,12,10,12,12, 8,10,10,
+	10,12,12,10,12,11, 6, 8, 8, 8,10,10, 8,10,10, 8,
+	10,10,10,11,12,10,12,12, 8,10, 9,10,12,11,10,12,
+	11, 5, 8, 8, 8,10,10, 8,10,10, 8, 9,10,10,11,11,
+	10,11,11, 8,10,10,10,11,12,10,12,11, 8,10,10,10,
+	11,11,10,11,11,10,11,11,11,12,13,11,12,13,10,11,
+	11,11,13,13,11,13,13, 7, 9, 9,10,11,12,10,12,11,
+	 9,11,11,11,12,13,12,14,13, 9,11,11,12,13,14,11,
+	13,12, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
+	12,10,12,12, 8,10, 9,10,12,11, 9,11,11, 7, 9, 9,
+	10,11,12,10,12,11, 9,11,11,11,12,13,12,14,13, 9,
+	11,11,12,13,14,11,13,12, 8,10,10,10,11,11,10,11,
+	11,10,11,11,11,13,13,11,13,13,10,11,10,11,13,12,
+	11,13,12,
+};
+
+static const static_codebook _44p9_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p3_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44p9_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p3_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p3_1[] = {
+	 4, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7,
+	 7, 8, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8,
+	 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
+	 9, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
+	 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8,
+	 9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 9,
+	 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 9, 7, 8, 8,
+	 8, 9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
+	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
+	 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44p9_p3_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p3_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44p9_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_p4_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p4_0[] = {
+	 2, 5, 5, 4, 7, 7, 4, 7, 6, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
+	10, 8,10,10, 8, 9,10,10,11,12,10,11,12, 8,10,10,
+	10,11,12,10,12,11, 6, 8, 7, 8,10,10, 8,10, 9, 8,
+	10,10,10,11,12,10,12,12, 8,10, 9,10,12,11,10,12,
+	11, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
+	10,11,11, 8,10,10,10,12,12,10,12,11, 7, 9, 9, 9,
+	11,11, 9,11,11, 9,10,11,11,11,12,11,12,12, 9,11,
+	11,11,12,12,11,12,12, 7, 9, 9,10,11,12,10,12,11,
+	 9,11,10,11,11,12,12,13,13, 9,11,11,12,13,13,11,
+	13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
+	12,10,12,12, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	10,11,12,10,12,11, 9,11,11,11,11,13,12,13,13, 9,
+	10,11,12,13,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
+	11, 9,11,11,11,12,12,11,12,12, 9,11,10,11,12,12,
+	10,12,11,
+};
+
+static const static_codebook _44p9_p4_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p4_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44p9_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p4_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_p4_1[] = {
+	 6, 8, 8,10, 9, 8, 9, 9,10,10, 8, 9, 9,10,10, 8,
+	10,10,10,10, 8,10,10,10,10, 9, 9, 9,10,10, 9,10,
+	10,10,11, 9,10,10,11,11,10,10,10,11,11,10,10,10,
+	11,11, 9, 9, 9,10,10, 9,10,10,11,11, 9,10,10,11,
+	10,10,10,10,11,11,10,10,10,11,11,10,10,10,10,11,
+	10,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,10,10,10,11,10,10,11,11,11,11,10,11,
+	10,11,11,11,11,11,11,11,10,11,11,11,11, 9,10,10,
+	10,11,10,10,11,11,11,10,11,11,11,11,10,11,11,11,
+	11,10,11,11,11,11,10,10,11,11,11,11,11,11,11,11,
+	11,11,11,11,12,11,11,12,12,12,11,11,11,12,12,10,
+	11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,
+	11,12,12,11,11,11,12,12,11,11,11,11,11,11,12,12,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,
+	11,12,12,12,12,12,12,12,12,12, 9,10,10,11,10,10,
+	11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,
+	11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
+	12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,
+	11,11,11,12,12,11,11,11,11,11,11,12,12,12,12,11,
+	12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,
+	11,11,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
+	12,12,11,12,12,12,12,11,11,11,11,11,11,12,12,12,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,
+	12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,
+	13,13,13,13,11,11,11,11,11,11,12,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,
+	13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
+	13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,
+	13, 7,10,10,11,11,10,10,11,11,11,10,11,11,11,11,
+	10,11,11,11,11,10,11,11,11,11,10,10,10,11,11,10,
+	11,11,11,11,11,11,11,11,12,11,11,11,12,12,11,11,
+	11,12,12,10,11,11,11,11,11,11,11,12,11,11,11,11,
+	12,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,
+	11,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
+	11,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,
+	11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
+	11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,
+	12,12,11,11,11,12,12,11,11,11,11,11,11,11,12,12,
+	12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
+	11,11,11,11,11,11,12,11,12,12,11,11,11,12,12,11,
+	12,12,12,12,11,12,12,12,12,11,11,11,11,12,11,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,11,
+	11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
+	12,12,12,12,10,11,11,12,11,11,11,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,
+	12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,12,12,13,12,11,11,11,12,12,12,12,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,
+	12,12,12,13,12,12,12,12,12,12,12,13,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,
+	12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,
+	12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,
+	13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,
+	13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,
+	12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,
+	13,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,
+	13,13, 7,10,10,11,11,10,11,11,11,11,10,11,11,11,
+	11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,
+	11,11,11,11,11,11,11,11,12,11,11,11,12,12,12,11,
+	11,11,12,12,10,10,10,11,11,11,11,11,12,11,10,11,
+	11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,
+	11,11,11,11,12,12,12,11,12,11,12,12,11,12,12,12,
+	12,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,
+	11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,10,
+	10,10,11,11,11,11,11,12,12,11,11,11,12,12,11,12,
+	12,12,12,11,12,12,12,12,11,11,11,11,11,11,11,12,
+	12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
+	12,13,12,11,11,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,
+	11,11,11,12,12,11,11,11,11,11,11,11,12,12,12,11,
+	12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,
+	11,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,
+	12,12,11,12,12,12,12,11,11,11,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
+	13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,
+	12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,
+	13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,13,
+	12,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
+	12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
+	12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,
+	13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
+	13,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,
+	13,12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,
+	13,13,13, 8,11,11,12,12,11,12,12,12,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,
+	12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
+	12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
+	12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,
+	13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,
+	12,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
+	11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
+	13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,
+	12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,
+	13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,
+	12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,
+	12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,
+	12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,
+	12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,11,
+	12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,
+	13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
+	13,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,
+	13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,
+	12,13,13,13,13,13,13,13,13,13,11,11,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,13,13,13,12,13,13,13,13,11,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,
+	12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,
+	12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,
+	12,12,12,12,13,12,13,13,12,12,12,13,13,13,13,13,
+	13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,
+	12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,
+	12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,13,
+	13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,
+	13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,
+	12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13, 8,11,11,11,11,11,12,12,12,12,11,12,
+	12,12,12,12,12,12,12,12,11,12,12,12,12,11,11,11,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,
+	13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,
+	12,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
+	13,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,
+	12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,13,12,12,13,13,13,12,13,
+	13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,
+	12,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,
+	12,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,
+	12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,
+	12,12,13,13,13,13,13,13,13,12,13,13,13,13,11,11,
+	11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,
+	11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,
+	12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
+	12,13,12,12,12,12,13,13,12,13,13,13,13,12,13,13,
+	13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,
+	12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,
+	12,12,12,12,13,13,13,13,12,13,13,13,13,11,12,12,
+	12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,
+	13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,
+	12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
+	12,12,12,12,12,13,13,13,13,12,12,12,13,12,13,13,
+	13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	13,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,
+	12,12,12,13,13,12,13,13,13,13,11,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,
+	12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,
+	13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,
+	12,12,12,12,12,13,12,12,12,13,13,13,13,13,13,13,
+	12,13,13,13,13,
+};
+
+static const static_codebook _44p9_p4_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p9_p4_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p9_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_p5_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_p5_0[] = {
+	 4, 6, 6, 9, 9, 6, 7, 8,10,11, 6, 8, 7,10,10, 8,
+	10,10,12,12, 8,10,10,12,12, 6, 7, 8,10,10, 7, 8,
+	 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
+	13,13, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
+	10,10,11,11,13,13,10,11,10,13,12, 9,10,10,11,12,
+	10,10,11,12,13,10,11,11,12,13,12,12,13,12,14,12,
+	13,13,14,14, 9,10,10,12,11,10,11,11,13,12,10,11,
+	10,13,12,12,13,13,14,14,12,13,12,14,12, 7, 8, 8,
+	10,11, 8, 9,10,11,12, 8, 9, 9,11,12,10,11,12,13,
+	14,10,11,11,13,13, 8, 9,10,11,12, 9,10,11,12,13,
+	10,10,11,12,12,11,12,12,13,14,11,12,12,14,14, 8,
+	 9, 9,11,12,10,10,11,12,13, 9,10,10,12,12,11,12,
+	12,14,14,11,12,12,14,13,11,11,12,12,13,11,12,12,
+	13,14,12,12,13,14,14,13,13,14,14,16,13,14,14,15,
+	15,11,12,11,13,13,12,12,12,14,14,11,12,12,14,13,
+	13,14,14,15,15,13,14,13,15,14, 7, 8, 8,11,10, 8,
+	10, 9,12,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
+	11,14,13, 8, 9, 9,12,11, 9,10,10,12,12,10,11,10,
+	13,12,11,12,12,13,14,11,12,12,14,14, 8,10, 9,12,
+	11,10,11,10,12,12, 9,11,10,13,11,11,12,12,14,14,
+	11,12,12,14,13,11,11,12,13,13,11,12,12,13,14,12,
+	12,12,14,14,13,13,14,14,15,13,14,14,15,15,11,12,
+	11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,
+	15,15,13,14,13,15,14,10,11,11,12,13,11,12,12,13,
+	14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,15,
+	11,12,12,12,14,12,12,13,13,15,12,13,13,13,15,14,
+	14,15,15,16,14,14,15,15,16,11,12,12,13,14,12,13,
+	13,14,15,12,13,13,14,14,14,14,15,15,16,14,14,14,
+	15,15,13,14,14,14,15,14,14,15,15,16,14,15,15,15,
+	16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,
+	14,14,15,16,16,14,14,14,16,15,16,16,16,17,17,15,
+	16,16,17,16,10,11,11,13,12,11,12,12,14,13,11,12,
+	12,14,13,13,14,14,15,15,13,14,13,16,14,11,12,12,
+	14,13,12,13,13,14,14,12,13,13,15,14,14,14,14,15,
+	15,14,15,14,16,15,11,12,12,14,12,12,13,13,15,14,
+	12,13,12,15,13,14,15,14,16,15,14,15,14,16,15,13,
+	14,14,15,15,14,14,14,15,16,14,15,14,16,16,15,16,
+	16,16,17,16,16,16,17,17,13,14,14,15,14,14,15,15,
+	16,15,14,15,14,16,15,16,16,16,17,17,15,16,15,18,
+	16, 6, 8, 8,11,11, 8, 9,10,11,12, 8,10, 9,12,12,
+	10,11,11,13,13,10,12,11,14,13, 8, 9, 9,11,12, 9,
+	10,10,12,12, 9,10,10,12,12,11,11,12,13,14,11,12,
+	12,14,14, 8,10, 9,12,11,10,11,11,12,12, 9,11,10,
+	13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,
+	13,11,12,12,13,14,11,12,12,14,14,13,13,14,13,15,
+	13,14,14,15,15,11,12,11,13,13,12,12,12,14,14,11,
+	12,12,14,13,13,14,14,15,15,13,14,13,15,14, 8, 9,
+	 9,11,11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,
+	13,14,11,12,12,14,14, 9, 9,10,11,12,10,10,11,12,
+	13,10,10,11,12,13,12,12,13,13,15,12,12,13,14,14,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+	13,13,14,15,12,13,12,14,14,11,11,12,12,14,12,12,
+	13,13,14,12,12,13,13,14,13,13,14,14,16,14,14,14,
+	15,15,11,12,12,14,13,12,13,13,14,14,12,13,13,15,
+	14,14,14,14,16,16,13,14,14,16,14, 7, 9, 9,12,11,
+	 9,10,10,12,12, 9,11,10,13,12,11,12,12,13,14,11,
+	13,12,14,13, 9,10,10,12,12,10,10,11,12,13,10,12,
+	11,13,13,12,12,13,13,14,12,13,13,15,14, 9,10,10,
+	12,12,11,11,11,13,13,10,12,10,13,12,12,13,13,14,
+	15,12,13,12,15,13,11,12,12,14,13,12,12,13,13,14,
+	12,13,13,15,14,13,13,14,13,16,14,15,14,16,15,12,
+	12,12,14,14,13,13,13,14,14,12,13,12,14,13,14,15,
+	15,16,16,13,14,13,16,13,10,11,12,13,14,11,12,13,
+	13,15,12,12,13,14,14,13,14,14,15,16,13,14,14,16,
+	15,12,12,13,12,14,12,12,13,13,15,13,13,13,13,15,
+	14,14,15,14,16,14,15,15,15,16,12,13,12,14,14,13,
+	13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,
+	15,16,16,13,14,14,13,16,14,14,15,14,16,14,14,15,
+	14,16,15,15,16,15,18,16,16,16,16,17,14,14,14,16,
+	15,14,15,15,16,16,14,15,15,16,16,16,16,16,17,17,
+	15,16,16,17,16,10,12,11,14,13,12,13,13,14,14,12,
+	13,12,15,14,14,14,14,15,15,14,15,14,16,15,12,13,
+	12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,
+	16,16,14,15,15,17,15,12,13,12,14,14,13,14,14,15,
+	15,13,14,13,15,14,15,15,15,16,16,14,15,15,17,15,
+	14,14,14,16,15,14,15,15,16,16,14,15,15,16,15,16,
+	16,16,16,17,16,17,16,18,17,14,14,14,16,15,15,15,
+	15,16,16,14,15,14,16,15,16,16,17,17,17,15,16,15,
+	17,16, 6, 8, 8,11,11, 8, 9,10,12,12, 8,10, 9,12,
+	11,10,11,12,13,13,10,11,11,13,13, 8, 9,10,11,12,
+	 9,10,11,12,13,10,11,11,12,12,11,12,12,13,14,11,
+	12,12,14,14, 8, 9, 9,12,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,12,14,14,11,12,11,14,13,11,11,12,
+	13,13,11,12,12,13,14,12,12,12,14,14,13,13,14,14,
+	15,13,14,14,15,15,10,11,11,13,13,11,12,12,14,14,
+	11,12,12,14,13,13,14,14,15,15,13,14,13,15,13, 7,
+	 9, 9,11,12, 9,10,11,12,13, 9,10,10,12,12,11,12,
+	13,13,14,11,12,12,14,14, 9,10,10,12,12,10,10,11,
+	12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,
+	14, 9,10,10,12,12,10,11,12,13,13,10,11,10,13,12,
+	12,13,13,14,15,12,13,12,14,13,12,12,12,14,14,12,
+	12,13,13,14,13,13,13,15,14,14,13,14,13,16,14,15,
+	15,16,16,11,12,12,13,14,12,13,13,14,15,12,13,12,
+	14,13,14,14,15,15,16,13,14,13,15,13, 8, 9, 9,11,
+	11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,
+	11,12,11,14,13, 9,10,10,12,12,10,11,11,13,13,10,
+	11,11,13,13,12,12,13,14,15,12,13,13,15,14, 9,10,
+	 9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,
+	14,14,12,13,12,15,13,11,12,12,13,14,12,13,13,14,
+	14,12,13,13,14,14,14,14,14,14,16,14,14,14,16,15,
+	11,12,11,14,12,12,13,12,15,13,12,13,12,15,13,14,
+	14,14,16,15,13,14,13,16,14,10,11,12,13,14,12,12,
+	13,13,15,12,13,13,14,14,14,14,15,15,16,14,14,14,
+	15,16,12,12,13,14,14,12,13,14,14,15,13,14,14,15,
+	15,14,15,15,15,17,15,15,15,16,16,12,12,13,13,14,
+	13,13,14,14,15,12,13,13,14,15,15,15,15,15,17,14,
+	15,15,15,15,14,14,14,16,16,14,15,15,15,16,15,15,
+	15,16,16,16,15,16,16,18,16,16,17,17,17,14,14,14,
+	15,16,15,15,15,16,17,14,15,14,16,16,16,16,17,17,
+	18,16,16,15,17,16,10,12,11,14,13,12,12,12,14,14,
+	11,13,12,14,13,13,14,14,15,15,13,14,13,16,15,12,
+	12,13,14,14,12,13,13,15,15,13,13,13,15,15,14,15,
+	15,16,16,14,15,15,17,16,12,13,12,14,12,13,13,13,
+	15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,16,
+	14,14,14,14,16,16,14,15,15,16,16,14,15,15,16,16,
+	15,16,16,16,17,16,17,16,18,17,13,14,14,16,13,14,
+	15,15,16,14,14,15,14,16,14,16,16,16,17,16,15,16,
+	15,18,15, 9,11,11,13,13,11,12,12,14,14,11,12,12,
+	14,14,13,14,14,15,15,13,14,14,15,15,11,12,12,14,
+	14,11,12,13,14,15,12,13,13,15,14,13,14,14,15,16,
+	13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,
+	13,13,15,14,14,14,14,16,16,14,15,14,16,15,12,13,
+	13,14,15,12,13,14,15,16,13,14,14,16,16,14,14,15,
+	16,17,15,15,15,17,17,13,14,14,15,15,14,15,14,16,
+	16,14,15,14,16,15,15,16,16,17,17,15,16,15,17,16,
+	10,12,12,13,14,11,12,13,14,14,12,13,12,14,14,13,
+	14,14,15,16,13,14,14,16,15,11,12,12,14,14,12,12,
+	13,14,15,12,13,13,15,15,13,13,15,15,17,14,14,15,
+	16,16,12,13,12,14,14,12,13,13,15,15,12,13,13,15,
+	14,14,15,15,16,16,14,15,14,16,16,13,12,14,13,16,
+	13,13,15,14,16,14,13,15,15,16,14,14,16,15,17,15,
+	15,16,16,17,13,14,14,16,15,14,15,15,16,16,14,15,
+	14,16,15,16,16,16,17,17,15,16,16,18,16,10,12,12,
+	14,14,12,12,13,14,14,12,13,12,15,14,13,14,14,15,
+	16,14,15,14,16,15,11,12,12,14,14,12,13,13,14,15,
+	13,14,13,15,15,14,14,15,15,16,14,15,15,17,16,12,
+	13,13,14,14,13,13,14,15,15,12,14,13,15,15,14,15,
+	15,16,16,14,15,15,17,15,13,14,13,15,15,13,14,14,
+	15,16,14,15,14,17,16,15,15,15,15,17,16,16,16,18,
+	17,14,14,14,16,16,15,15,15,16,16,14,15,14,16,16,
+	16,16,17,17,17,16,16,16,17,16,11,12,13,14,14,12,
+	13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,
+	15,17,16,12,13,13,14,15,13,13,14,14,16,13,14,14,
+	15,16,15,14,16,15,17,15,15,16,16,17,12,13,13,15,
+	15,13,14,14,16,16,13,14,14,16,15,15,15,16,17,17,
+	15,16,15,17,16,14,14,15,13,16,15,14,16,14,17,15,
+	15,16,14,17,16,15,17,15,18,16,16,17,16,18,14,15,
+	15,17,16,15,16,16,17,17,15,16,15,17,16,16,17,17,
+	18,18,16,17,15,18,16,11,12,12,14,14,13,13,14,14,
+	15,13,14,13,16,14,15,15,15,16,16,15,16,15,17,16,
+	12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,
+	15,16,15,16,16,16,16,18,16,12,13,13,15,15,14,14,
+	15,15,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
+	17,15,14,15,14,16,15,14,15,15,16,16,15,16,15,17,
+	16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,16,
+	16,16,16,17,17,14,15,15,17,16,17,17,18,18,18,16,
+	17,15,18,15, 9,11,11,13,13,11,12,12,14,14,11,12,
+	12,14,14,13,14,14,15,16,13,14,14,15,15,11,12,12,
+	14,14,12,13,13,14,15,12,13,13,14,14,14,14,15,15,
+	16,14,14,14,16,16,11,12,12,14,14,12,13,13,14,15,
+	11,13,12,14,14,13,14,14,16,16,13,14,14,16,15,13,
+	14,14,15,15,14,14,15,15,16,14,15,14,16,16,15,15,
+	16,16,17,15,16,16,17,17,12,13,13,15,15,13,14,14,
+	16,15,12,14,13,16,15,15,16,15,17,17,14,15,15,17,
+	15,10,12,12,14,14,12,12,13,14,15,12,13,12,14,14,
+	14,14,15,15,16,13,14,14,16,16,12,13,13,14,14,13,
+	13,14,14,15,13,14,13,15,15,14,15,15,15,17,14,15,
+	15,16,16,11,12,12,14,14,13,13,14,15,15,12,13,13,
+	15,14,14,15,15,16,17,14,15,14,16,15,14,14,14,16,
+	16,14,15,15,16,16,15,15,15,16,16,15,16,16,16,18,
+	16,17,16,18,17,13,13,14,15,15,14,14,15,16,16,13,
+	14,14,16,15,16,16,17,17,17,15,15,15,17,15,10,12,
+	12,14,13,12,12,13,14,14,11,13,12,14,14,13,14,14,
+	16,16,13,14,14,16,15,12,12,13,14,14,12,13,13,14,
+	15,13,13,13,15,15,14,14,15,16,16,14,15,15,16,16,
+	11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,
+	15,14,16,16,13,15,13,16,15,13,14,14,15,16,14,15,
+	15,15,17,14,15,15,16,16,16,15,16,16,17,16,16,16,
+	17,17,13,14,12,16,13,14,15,13,16,15,13,15,13,16,
+	14,15,16,15,17,16,15,16,14,17,15,11,12,12,14,15,
+	13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,
+	15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,
+	14,16,15,15,15,16,15,17,16,16,16,17,17,12,13,13,
+	14,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,
+	17,15,16,15,16,15,15,15,15,16,16,14,15,15,16,17,
+	16,16,16,17,17,16,15,17,15,18,17,18,17,18,18,14,
+	14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,
+	17,17,18,16,16,15,17,15,11,12,12,14,14,12,13,13,
+	15,15,12,13,13,15,15,14,15,15,16,16,14,15,14,17,
+	16,13,13,13,15,15,13,14,14,15,16,13,14,14,16,16,
+	15,15,16,16,17,15,16,16,17,17,12,13,13,15,14,13,
+	14,14,16,15,13,14,13,16,14,15,16,16,17,16,15,16,
+	14,17,15,14,15,15,16,17,15,15,16,16,17,15,16,16,
+	17,17,16,15,17,16,18,16,17,17,18,18,14,15,14,16,
+	13,15,16,15,17,14,15,16,14,17,14,16,17,16,18,16,
+	16,17,15,18,15,
+};
+
+static const static_codebook _44p9_p5_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p9_p5_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44p9_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p5_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44p9_p5_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44p9_p5_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44p9_p5_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44p9_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p6_0[] = {
+	 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
+	10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10,
+	10,11,12,10,11,10, 5, 8, 7, 8,10,10, 8,10, 9, 8,
+	10,10,10,10,11,10,12,11, 8,10, 9,10,11,11,10,12,
+	10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9,10, 9,10,11,
+	 9,11,11, 8,10, 9,10,11,11, 9,11,10, 7, 9, 9, 9,
+	10,11, 9,11,11, 9, 9,11,10,10,13,11,12,12, 9,11,
+	11,11,12,13,11,13,11, 7, 9, 9, 9,10,11, 9,11,10,
+	 9,11,10,10,10,12,11,13,12, 9,11,11,11,12,12,10,
+	12,10, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10, 9,10,
+	11,10,11,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
+	 9,10,11, 9,11,10, 9,11,11,10,10,12,11,12,12, 9,
+	10,11,11,12,13,10,12,10, 7, 9, 9, 9,11,11, 9,11,
+	10, 9,11,11,11,11,13,11,13,12, 9,11, 9,11,12,12,
+	10,13,10,
+};
+
+static const static_codebook _44p9_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p6_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44p9_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p6_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44p9_p6_1[] = {
+	 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7,
+	 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
+	 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8,
+	 8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
+	 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
+	 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 8,
+	 8, 9, 8,
+};
+
+static const static_codebook _44p9_p6_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44p9_p6_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44p9_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_p7_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_p7_0[] = {
+	 1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,
+};
+
+static const static_codebook _44p9_p7_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p9_p7_0,
+	1, -510105088, 1635281408, 3, 0,
+	(long *)_vq_quantlist__44p9_p7_0,
+	0
+};
+
+static const long _vq_quantlist__44p9_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44p9_p7_1[] = {
+	 1, 4, 4,16,16, 4, 9,11,15,16, 4,12, 8,16,16,12,
+	16,16,16,16,13,16,16,16,16, 5, 8,10,16,16, 9, 9,
+	14,15,16,12,14,14,16,16,16,16,16,16,16,16,16,16,
+	16,16, 5,11, 8,16,15,12,14,16,16,16, 9,15, 9,16,
+	16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16, 6,11,11,
+	16,16,12,13,16,16,16,12,16,14,16,16,16,16,16,16,
+	16,16,16,16,16,16,11,15,15,16,16,14,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,
+	15,16,16,16,16,16,16,16,16,14,16,15,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16, 5,11,11,16,16,12,
+	15,16,16,16,12,16,14,16,16,16,16,16,16,16,16,16,
+	16,16,16,12,15,15,16,16,14,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,11,15,15,16,
+	16,16,16,16,16,16,15,16,14,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16, 6,11,12,16,16,11,15,16,16,16,13,16,14,16,16,
+	16,16,16,16,16,16,16,16,16,16,11,16,14,16,16,14,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,12,14,14,16,16,16,16,16,16,16,15,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16, 8,13,
+	15,16,16,15,15,16,16,16,14,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16, 7,12,12,16,16,
+	13,12,16,16,16,14,16,14,16,16,16,16,16,16,16,16,
+	16,16,16,16,13,16,16,16,16,14,14,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,12,14,16,
+	16,16,16,16,16,16,16,14,16,14,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16, 6,11,11,16,16,13,15,16,16,16,11,15,14,16,
+	16,16,16,16,16,16,14,16,16,16,16,11,16,16,16,16,
+	16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,11,16,14,16,16,14,16,16,16,16,13,15,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, 7,
+	11,11,16,16,13,13,16,16,16,13,16,13,16,16,16,16,
+	16,16,16,16,16,16,16,16,12,16,15,16,16,14,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,12,14,16,16,16,16,16,16,16,16,14,16,13,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16, 8,13,14,16,
+	16,15,16,16,16,16,14,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,
+	15,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,
+};
+
+static const static_codebook _44p9_p7_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44p9_p7_1,
+	1, -514619392, 1630767104, 3, 0,
+	(long *)_vq_quantlist__44p9_p7_1,
+	0
+};
+
+static const long _vq_quantlist__44p9_p7_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p9_p7_2[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9,10,10,10,11,11,11,
+	12,12,12,13,13,13,13,13,13,
+};
+
+static const static_codebook _44p9_p7_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p9_p7_2,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44p9_p7_2,
+	0
+};
+
+static const long _vq_quantlist__44p9_p7_3[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44p9_p7_3[] = {
+	 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44p9_p7_3 = {
+	1, 25,
+	(char *)_vq_lengthlist__44p9_p7_3,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44p9_p7_3,
+	0
+};
+
+static const char _huff_lengthlist__44p9_short[] = {
+	 3, 3, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _huff_book__44p9_short = {
+	1, 8,
+	(char *)_huff_lengthlist__44p9_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44pn1_l0_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static const char _vq_lengthlist__44pn1_l0_0[] = {
+	 1, 3, 3, 8, 8,10,10,10,10,10,10,10,10, 5, 7, 5,
+	 9, 8,10,10,10,10,11,10,11,10, 5, 5, 7, 8, 9,10,
+	10,11,10,10,11,10,11,10,10,10,11,11,11,11,11,11,
+	11,10,11,11,10,10,10,10,11,11,11,11,11,10,11,11,
+	11,11,11,11,11,11,12,11,10,11,11,11,11,11,11,11,
+	11,11,11,11,11,10,10,11,11,12,11,11,11,11,11,11,
+	12,11,11,11,10,11,11,11,11,11,11,11,11,10,11,11,
+	10,11,10,11,11,11,11,11,11,11,11,11,11,12,11,11,
+	12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,
+	10,11,11,11,11,11,11,11,12,11,13,11,11,11,11,11,
+	11,11,11,11,11,11,12,11,13,
+};
+
+static const static_codebook _44pn1_l0_0 = {
+	2, 169,
+	(char *)_vq_lengthlist__44pn1_l0_0,
+	1, -526516224, 1616117760, 4, 0,
+	(long *)_vq_quantlist__44pn1_l0_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_l0_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44pn1_l0_1[] = {
+	 1, 4, 4, 7, 7, 4, 5, 6, 7, 7, 4, 6, 5, 7, 7, 7,
+	 6, 7, 6, 7, 7, 7, 6, 7, 6,
+};
+
+static const static_codebook _44pn1_l0_1 = {
+	2, 25,
+	(char *)_vq_lengthlist__44pn1_l0_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44pn1_l0_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_l1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_l1_0[] = {
+	 1, 4, 4, 4, 4, 4, 4, 4, 4,
+};
+
+static const static_codebook _44pn1_l1_0 = {
+	2, 9,
+	(char *)_vq_lengthlist__44pn1_l1_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44pn1_l1_0,
+	0
+};
+
+static const char _huff_lengthlist__44pn1_lfe[] = {
+	 1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book__44pn1_lfe = {
+	2, 4,
+	(char *)_huff_lengthlist__44pn1_lfe,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const char _huff_lengthlist__44pn1_long[] = {
+	 2, 3, 6, 7, 9,13,17, 3, 2, 5, 7, 9,13,17, 6, 5,
+	 5, 6, 9,12,16, 7, 7, 6, 6, 7,10,13,10,10, 9, 7,
+	 6,10,13,13,13,12,10,10,11,15,17,17,17,14,14,15,
+	17,
+};
+
+static const static_codebook _huff_book__44pn1_long = {
+	2, 49,
+	(char *)_huff_lengthlist__44pn1_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p1_0[] = {
+	 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44pn1_p1_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44pn1_p1_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p2_0[] = {
+	 1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
+	 8, 8, 0, 9, 9, 0,13,13, 0, 8, 8, 0, 6, 6, 0,11,
+	11, 0,12,12, 0,12,12, 0,14,14, 0,11,12, 0,12,12,
+	 0,15,15, 0,12,12, 0, 5, 5, 0, 5, 5, 0, 6, 6, 0,
+	 7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,11,11, 0, 6,
+	 6, 0, 7, 7, 0,11,11, 0,12,11, 0,11,11, 0,14,14,
+	 0,10,10, 0,12,12, 0,15,15, 0,12,12, 0, 6, 6, 0,
+	12,12, 0,12,12, 0,12,12, 0,14,14, 0,11,11, 0,12,
+	12, 0,16,16, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 8, 8, 0,12,12, 0,12,12, 0,12,12, 0,15,
+	15, 0,12,12, 0,11,11, 0,16,16, 0,11,11, 0, 6, 6,
+	 0,12,12, 0,12,12, 0,13,13, 0,15,15, 0,12,12, 0,
+	13,13, 0,15,15, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44pn1_p2_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p2_0,
+	1, -533200896, 1614282752, 2, 0,
+	(long *)_vq_quantlist__44pn1_p2_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p2_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p2_1[] = {
+	 1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,
+	10,10, 0,10,10, 0,10,10, 0,10,10, 0, 7, 7, 0, 7,
+	 7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8,
+	 0, 7, 7, 0, 8, 8, 0, 7, 7, 0, 9, 9, 0, 8, 9, 0,
+	10,10, 0, 9, 9, 0,10,10, 0,10,11, 0, 9, 9, 0,10,
+	10, 0, 9, 9, 0,11,11, 0,12,12, 0,12,12, 0,11,11,
+	 0,12,12, 0,13,13, 0,12,12, 0,13,13, 0, 8, 8, 0,
+	12,12, 0,12,12, 0,13,13, 0,13,13, 0,13,13, 0,13,
+	13, 0,13,13, 0,13,13, 0, 7, 7, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 9, 9, 0,11,11, 0,12,12, 0,13,13, 0,12,
+	12, 0,13,13, 0,13,13, 0,12,12, 0,12,12, 0, 9, 9,
+	 0,12,12, 0,13,13, 0,14,14, 0,13,13, 0,14,14, 0,
+	14,14, 0,13,13, 0,14,14, 0, 7, 7, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,
+};
+
+static const static_codebook _44pn1_p2_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p2_1,
+	1, -535822336, 1611661312, 2, 0,
+	(long *)_vq_quantlist__44pn1_p2_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p3_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p3_0[] = {
+	 1, 6, 6, 6, 8, 8, 6, 8, 8, 7, 9, 9,10,11,11, 8,
+	 8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11,
+	11,10,11,11,10,11,11,13,13,13,12,12,12,10,12,11,
+	14,14,14,12,12,12, 6, 5, 5, 9, 6, 6, 9, 6, 6, 9,
+	 7, 7,12,10,10,11, 7, 6, 9, 7, 7,13,11,11,12, 7,
+	 7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
+	13, 9, 9,12,11,11,15,14,14,15,11,11, 8, 7, 7,12,
+	11,11,12,11,11,11,11,11,14,13,14,14,12,12,12,11,
+	11,16,15,15,14,12,12, 0,10,10, 0,12,12, 0,12,12,
+	 0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
+	11,11, 7, 8, 8,13,11,11,12,10,10,12,11,11,15,13,
+	13,14,11,11,12,10,10,16,14,14,15,10,10, 9, 7, 7,
+	13,11,12,13,12,11,12,11,11,15,14,14,14,12,12,13,
+	12,12,16,15,15,15,12,12, 0,11,11, 0,12,12, 0,12,
+	13, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,16,15,
+	 0,12,12,
+};
+
+static const static_codebook _44pn1_p3_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p3_0,
+	1, -531365888, 1616117760, 2, 0,
+	(long *)_vq_quantlist__44pn1_p3_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p3_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44pn1_p3_1[] = {
+	 2, 3, 4, 9, 9,10,12,12,12,11,10,12,12,13,12,11,
+	13,12,11,11,11,12,12,12,11,11,13,13,13,13,11,12,
+	12,14,14,12,13,13,13,13,11,13,13,13,13,11,13,13,
+	13,13,11,13,13,13,13,11,12,12,14,14,12,13,13,12,
+	12,11,13,13,13,13,11,13,13,12,12,11,13,13,13,13,
+	12,12,13,14,14,12,13,13,12,12,11,13,13,13,13,11,
+	13,13,12,12,11,13,13,13,13,12,13,13,14,14,12,13,
+	13,12,12,11,13,13,13,13,11,13,13,12,12,11,10,10,
+	10,10,12,10,10,11,11,12, 9, 9,11,11,13,11,11,10,
+	10,13,10,10,10,10,13,11,11,12,12,13,10,10,12,12,
+	14,12,11,12,12,13,11,11,11,12,13,12,12,12,12,13,
+	11,11,12,12,13,10,10,12,12,14,11,11,12,12,13,11,
+	11,12,12,13,11,11,12,12,14,12,12,12,12,14,10,10,
+	11,11,14,12,11,11,11,13,11,11,11,11,13,12,12,11,
+	11,14,12,12,12,11,14,10,10,11,11,14,12,11,11,11,
+	13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,12,
+	10,11, 9, 9,12,12,12,11,11,13,12,12, 9, 9,13,13,
+	13,10,10,13,13,13,12,12,13,13,13,14,14,13,12,12,
+	11,11,14,13,13,12,12,14,13,13,11,11,13,13,13,12,
+	11,13,13,13,14,14,13,12,12,10,10,14,13,13,11,11,
+	13,13,13,10,10,13,13,13,11,11,14,13,13,14,14,14,
+	12,12,10,10,13,13,13,11,11,13,13,13,10,10,13,13,
+	13,11,11,14,13,13,14,14,14,13,13,10,10,13,13,13,
+	11,11,13,13,13,10,10,14,12,12, 8, 8,14,12,12, 9,
+	 9,14,11,11, 9, 9,14,12,12, 8, 8,14,12,12, 7, 7,
+	15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
+	12,13, 9, 9,15,13,13,10,10,15,13,13,10,10,15,12,
+	12,10,10,15,13,13,10,10,15,13,13, 9, 9,15,13,13,
+	10,10,15,13,13,10,10,15,12,12,10,10,15,13,13, 9,
+	 9,14,13,12, 9, 9,14,13,13, 9, 9,15,13,13,10,10,
+	15,12,12,10,10,15,13,13, 9, 9,15,13,13, 9, 9,14,
+	13,13, 9, 9,14,12,12, 8, 8,13,13,13, 8, 8,14,14,
+	13, 9, 9,14,14,13, 7, 7,14,14,14, 8, 8,14,14,14,
+	10,10,15,14,14,12,12,14,14,14, 9, 9,15,14,14,10,
+	10,14,14,14, 9, 9,14,14,14,10, 9,15,14,14,12,12,
+	14,14,14, 9, 9,15,14,14,10,10,14,14,14, 9, 9,15,
+	14,15, 9, 9,15,14,14,11,11,14,14,14, 8, 8,14,14,
+	14, 9, 9,14,14,14, 8, 8,14,15,14,10,10,15,14,14,
+	11,11,14,14,14, 8, 8,15,14,14, 9, 9,14,14,14, 8,
+	 8,12,12,12,13,13,16,16,15,12,12,17,16,16,13,13,
+	17,16,16,11,11,17,16,16,12,12,17,16,17,13,13,17,
+	16,16,14,14,17,17,16,12,12,18,16,16,13,13,17,16,
+	17,12,12,17,17,17,13,13,18,16,16,14,14,18,17,17,
+	12,12,17,17,17,13,13,18,17,17,13,13,17,17,17,13,
+	13,17,16,16,14,14,17,17,17,12,12,16,16,17,13,13,
+	17,17,16,12,12,18,17,17,13,13,18,16,16,14,14,18,
+	17,17,12,12,19,16,17,13,13,17,16,17,12,12,13,14,
+	14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,
+	13,13,16,14,14,13,13,17,16,15,14,14,16,16,16,15,
+	15,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,
+	17,16,15,14,14,16,16,16,15,15,18,15,15,13,13,16,
+	16,15,14,14,17,15,15,14,13,17,15,15,14,14,16,16,
+	16,15,15,18,15,14,13,13,17,15,15,14,14,18,14,15,
+	13,13,18,15,15,14,14,16,16,16,15,15,17,15,15,13,
+	13,17,15,15,14,14,17,15,15,13,13,13,11,11,10,10,
+	16,14,14,13,13,17,14,15,14,14,17,15,15,12,12,17,
+	14,14,12,12,16,15,15,14,14,16,14,14,14,14,16,15,
+	15,14,14,16,15,15,14,14,16,15,15,14,14,16,15,15,
+	14,14,16,15,14,15,15,17,15,15,14,14,17,15,15,14,
+	14,17,15,15,14,14,17,15,16,14,14,16,14,14,14,14,
+	17,15,15,13,13,17,15,15,13,13,16,15,15,13,13,17,
+	16,16,14,14,17,15,14,15,14,17,15,15,13,13,17,15,
+	15,13,13,17,15,15,13,13,14,14,14, 9, 9,14,14,14,
+	18,19,14,15,15,19,18,14,14,14,19,19,15,14,14,19,
+	19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,19,
+	15,16,16,19,20,15,15,15,19,19,15,15,15,19,19,15,
+	16,16,20,20,15,15,15,18,19,15,15,16,19,20,15,15,
+	15,19,18,15,15,15,18,18,15,16,16,21,20,15,15,15,
+	19,19,15,15,15,19,19,15,15,14,19,20,15,15,15,20,
+	19,15,16,16,19,20,15,15,15,19,19,15,15,15,20,21,
+	15,14,15,19,19,14,12,12, 9, 9,14,14,15,21,19,14,
+	14,14,18,19,14,15,15,19,20,14,14,14,19,19,15,15,
+	15,19,20,15,15,14,21,19,15,15,15,20,19,15,14,15,
+	20,21,15,15,15,18,18,15,15,15,20,21,16,14,14,18,
+	19,15,15,15,20,19,15,15,15,18,21,15,15,15,19,19,
+	15,15,15,19,20,16,15,14,20,19,15,16,15,19,19,15,
+	15,15,19, 0,14,15,15,19,19,15,15,15,19,19,15,15,
+	14,20,19,15,15,15,20,19,15,15,15,19,19,15,15,15,
+	20,19,12,12,12,13,13,16,15,16,11,11,16,16,16,12,
+	12,17,16,16,11,11,17,16,16,12,11,17,17,17,13,13,
+	18,16,16,14,14,18,18,17,13,13,17,16,16,13,13,17,
+	17,17,13,13,17,16,17,12,12,17,15,16,13,13,17,16,
+	17,12,12,17,16,16,13,12,17,16,16,12,12,18,17,17,
+	13,13,18,16,16,13,14,18,17,17,12,12,17,16,16,12,
+	12,17,17,17,12,12,18,17,17,13,13,17,16,16,14,14,
+	17,17,17,12,12,17,16,16,12,12,18,17,17,12,12,13,
+	14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,16,14,
+	14,13,13,16,14,14,13,13,17,16,15,15,15,16,15,16,
+	16,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,
+	14,17,15,15,14,14,16,15,16,16,16,17,15,15,14,14,
+	16,15,15,14,15,16,15,15,14,14,17,15,15,15,15,16,
+	16,16,15,16,18,15,14,13,14,17,15,15,14,14,17,14,
+	14,13,13,17,15,15,14,14,16,15,15,15,15,17,15,14,
+	14,14,17,15,15,14,14,17,14,14,13,13,13,11,11,11,
+	11,16,14,14,12,12,16,14,14,13,13,16,14,14,12,12,
+	16,14,14,12,12,16,15,15,13,13,17,14,14,14,14,17,
+	15,15,13,13,16,15,15,14,13,16,15,15,13,13,16,15,
+	15,13,13,16,14,14,14,14,16,15,15,13,13,16,14,15,
+	13,13,17,15,15,13,13,17,15,15,13,13,16,14,14,14,
+	14,17,15,15,12,12,17,14,15,13,13,17,15,15,12,12,
+	16,15,15,13,13,17,14,14,14,14,17,15,15,12,12,17,
+	15,15,13,13,16,15,15,12,12,14,15,15, 8, 8,14,14,
+	14,19,18,14,15,15,19,20,14,14,14,19,19,14,14,15,
+	19,20,15,16,15,19,21,15,16,16,21,19,15,15,15,20,
+	19,15,16,16,19,20,15,15,15,19,18,15,16,15,20,19,
+	15,16,16,19,20,15,15,15,19,19,15,16,15,20,20,14,
+	15,15,19,19,15,15,15,21,19,15,17,16,19,20,15,14,
+	15, 0,21,15,15,15,19,20,14,14,14,19,19,15,15,15,
+	20,19,15,16,16,19,19,15,15,15,19,18,15,15,15,20,
+	19,14,14,15,18,18,14,12,12, 9, 9,14,14,14,18,18,
+	14,14,14,18,18,14,15,14,19,18,14,14,14,19,18,15,
+	15,15,19,20,15,14,14,18,18,15,15,15,20,19,15,15,
+	15,18,20,15,15,15,19,18,15,15,15,19,19,15,14,14,
+	19,21,15,15,15,20,20,15,15,15,18,19,14,15,15,19,
+	20,15,15,15,20,19,15,14,14,19,21,15,15,15,18,19,
+	15,14,15,20,19,14,15,15,21,21,14,15,15,19,20,15,
+	14,14,19,20,15,15,15,19,20,15,15,14,20,20,14,15,
+	15,20,19,13,12,12,13,13,17,16,16,11,11,17,16,16,
+	12,12,18,17,16,11,11,18,16,16,11,11,17,17,17,13,
+	13,18,16,16,13,13,18,17,17,12,12,18,16,16,13,13,
+	18,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,
+	16,17,12,12,18,17,17,13,13,17,17,17,12,12,17,17,
+	17,12,12,17,16,15,13,13,18,16,16,11,11,17,16,16,
+	12,12,17,16,17,11,11,18,17,17,13,12,17,16,16,13,
+	13,17,17,17,12,12,17,16,17,12,12,18,17,17,11,11,
+	14,14,14, 9, 9,16,14,14,13,13,17,15,15,14,14,17,
+	14,14,13,13,16,14,14,13,13,17,15,15,14,14,16,16,
+	16,16,15,18,15,15,14,14,17,16,15,15,15,17,15,15,
+	14,14,17,15,15,14,15,16,16,16,15,16,18,15,15,14,
+	14,17,15,15,14,15,17,15,15,14,14,17,15,15,14,14,
+	16,16,16,15,16,17,14,14,13,13,17,15,15,14,14,18,
+	15,15,13,13,17,15,15,14,14,16,16,16,15,15,17,14,
+	14,13,13,17,15,15,14,14,17,14,14,13,13,13,11,11,
+	11,11,16,14,14,12,12,16,14,14,12,13,17,15,14,11,
+	11,17,14,14,11,11,17,15,15,13,14,17,14,14,14,14,
+	17,15,15,13,13,17,14,14,13,13,17,15,15,13,13,17,
+	15,15,13,13,17,14,14,14,14,17,15,15,13,13,18,14,
+	15,13,13,17,15,15,13,13,16,15,15,13,13,17,14,14,
+	13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,
+	12,17,16,15,13,13,17,14,14,13,13,17,15,15,12,12,
+	16,15,15,12,12,16,15,15,12,12,13,15,15, 8, 8,14,
+	14,14,18,19,14,15,15,19,20,14,14,14,18,18,14,15,
+	15,18,18,15,16,16,19,19,15,16,17,20,20,15,15,15,
+	19,19,15,16,16,18,20,15,15,15,19,19,15,15,16,18,
+	18,15,17,16,19,19,15,15,15,18,21,15,16,16,21,20,
+	15,15,15,19,21,15,16,15,20,19,15,16,17,20,20,15,
+	15,15,19,19,15,16,16,21,20,15,15,15,19,20,15,15,
+	15,19,19,15,16,16,20,19,15,15,15,19,19,15,16,15,
+	20,21,15,15,15,21,19,14,12,12, 8, 8,14,14,14,20,
+	18,14,13,13,19,19,14,14,14,19,18,15,14,14,19,20,
+	14,15,15,20,20,15,14,14,21,20,15,15,15,20,20,15,
+	15,14,21,19,15,15,15,19,19,15,15,15,19,20,15,14,
+	14,20,20,15,15,15,19,20,15,14,14,19,20,15,15,15,
+	20,20,15,15,15,20,19,15,14,14,20,21,15,15,15,20,
+	21,15,14,14,20, 0,15,16,15,20,21,15,15,15,19,20,
+	15,14,14,19,19,15,15,15,19,20,15,15,15,19,19,15,
+	15,15,18,20,13,12,12,13,13,18,16,17,12,12,17,16,
+	16,12,12,17,17,16,11,11,18,16,16,11,11,17,17,18,
+	13,13,18,16,16,14,14,18,17,17,13,13,18,16,16,13,
+	13,18,17,17,12,12,17,17,16,13,13,17,16,16,13,14,
+	18,17,17,12,12,18,16,16,12,13,17,16,17,12,12,17,
+	18,17,13,13,18,16,16,13,13,18,17,17,12,12,17,16,
+	16,12,12,17,17,17,11,11,17,16,17,12,12,17,16,16,
+	13,13,17,16,16,11,11,17,16,16,12,12,18,16,17,11,
+	11,14,14,14, 9, 9,16,14,15,13,13,17,15,15,14,14,
+	17,14,14,12,12,16,14,14,13,13,18,15,15,15,15,17,
+	15,16,15,16,18,15,15,14,14,17,15,16,15,15,17,15,
+	15,14,14,18,15,15,14,14,16,16,16,16,15,17,15,15,
+	14,14,16,15,15,14,14,17,15,15,14,14,17,15,15,14,
+	14,17,16,16,15,15,17,15,14,13,13,17,15,15,14,14,
+	17,15,15,13,13,17,15,15,14,14,16,16,16,15,15,18,
+	15,14,14,14,17,15,15,14,14,18,15,15,13,13,13,12,
+	12,11,11,16,14,14,12,12,16,14,14,13,13,17,15,15,
+	12,12,17,14,14,12,12,17,15,15,14,14,17,14,14,14,
+	14,17,15,15,13,13,17,15,14,13,13,17,15,15,13,13,
+	17,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,
+	14,14,13,13,16,15,15,13,13,17,15,16,13,13,17,14,
+	14,14,13,17,15,15,12,12,16,15,14,12,12,17,15,15,
+	12,12,16,15,16,13,13,16,14,14,14,13,17,15,15,12,
+	12,16,14,14,12,12,17,15,15,12,12,14,15,15, 8, 8,
+	14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,
+	15,15,19,20,15,16,15,21,18,15,16,16,18, 0,15,15,
+	15,19,20,15,16,16,20, 0,15,16,15,19,18,15,15,15,
+	19,19,15,16,16,21,19,15,15,15,19,19,15,16,16,20,
+	20,15,15,15,19,19,15,15,15,19,18,15,16,16,20,20,
+	15,14,15,20,19,15,15,15,19,20,15,15,15,19,19,15,
+	16,15,19,20,15,16,16,19,20,15,15,15,19,19,15,16,
+	15,20,20,15,15,15,20,18,13,12,12, 8, 8,14,14,14,
+	19,20,14,14,14,19,19,14,15,15,20,20,14,14,14,18,
+	19,15,15,15,20, 0,15,14,14,18,20,15,15,15,19,19,
+	15,15,15,21,19,15,15,15,19,20,15,15,15,20,21,15,
+	14,14,20,19,15,15,15,20,19,15,15,14,21,19,15,15,
+	15,19,18,15,15,15,20,19,15,14,14,19,19,15,15,16,
+	20,19,15,15,15,20, 0,15,15,15,19,21,15,15,15,22,
+	20,15,14,14,22,19,15,15,15,19,20,15,14,14,20,19,
+	14,15,15,19,21,
+};
+
+static const static_codebook _44pn1_p3_1 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44pn1_p3_1,
+	1, -533725184, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44pn1_p3_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static const char _vq_lengthlist__44pn1_p4_0[] = {
+	 1, 7, 7,14,14, 6, 8, 8,15,16, 7, 8, 8,16,15, 0,
+	14,14,17,17, 0,14,14,16,16, 7, 9, 9,16,16,10,11,
+	11,17,18, 9, 8, 8,16,16, 0,14,14,19,19, 0,14,14,
+	17,16, 8, 9, 9,16,16,12,12,12,17,17,10, 9, 9,16,
+	16, 0,15,14,18,20, 0,14,14,17,17, 0,15,15,18,17,
+	 0,21, 0, 0,21, 0,13,13,17,17, 0,17,17, 0, 0, 0,
+	15,15,17,17, 0,15,15,17,18, 0, 0, 0, 0,21, 0,13,
+	13,17,17, 0,18,18, 0,21, 0,16,15,17,18, 6, 7, 7,
+	14,14, 9,10,10,16,16,11,10,10,15,15, 0,21, 0,20,
+	21, 0, 0, 0,18,20,10,10,10,15,16,12,13,13,18,18,
+	12,11,11,15,15, 0, 0, 0,20,20, 0, 0,21,19,19,12,
+	11,11,15,15,15,14,14,18,18,13,11,11,15,16, 0, 0,
+	 0,20,19, 0, 0, 0,20,21, 0, 0,20,19,19, 0, 0, 0,
+	 0, 0, 0,20, 0,17,18, 0, 0,21, 0, 0, 0, 0, 0,21,
+	 0, 0,21, 0,20,19, 0, 0, 0, 0, 0, 0,21, 0,18,18,
+	 0, 0, 0,21, 0, 0, 0, 0, 0,20, 7, 6, 6,13,13, 9,
+	 6, 6,12,12, 9, 7, 7,14,14, 0,10,10,12,12, 0,11,
+	11,15,15, 9, 7, 7,14,14,12, 9, 9,14,14,10, 7, 7,
+	14,13, 0,11,11,16,15, 0,11,11,14,14, 9, 7, 7,14,
+	14,13,10,10,14,14,11, 7, 7,14,13, 0,11,11,16,16,
+	 0,11,11,14,14, 0,12,12,16,16, 0,19, 0,17,18, 0,
+	10,10,14,14, 0,15,14, 0, 0, 0,12,12,14,14, 0,12,
+	12,15,15, 0,20, 0,18,19, 0,10,10,14,14, 0,16,15,
+	 0,20, 0,13,13,14,14, 0,11,11,13,13, 0,12,13,16,
+	16, 0,12,12,16,16, 0,16,16, 0,21, 0,17,18, 0, 0,
+	 0,12,12,16,16, 0,15,15,18, 0, 0,12,12,16,16, 0,
+	17,16,21,21, 0,16,17, 0, 0, 0,13,13,17,16, 0,16,
+	16,20,21, 0,12,12,17,16, 0,17,17, 0,21, 0,17,17,
+	21,21, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0,
+	 0, 0,18,21, 0, 0, 0,18,19, 0, 0, 0,18,17,21,21,
+	 0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0,
+	19,19, 0, 0, 0,11,11,12,12, 0,11,11,10,10, 0,12,
+	12,13,13, 0,12,12, 9, 9, 0,14,14,13,13, 0,12,12,
+	13,13, 0,14,14,12,13, 0,11,11,12,12, 0,13,13,13,
+	13, 0,13,13,13,13, 0,12,12,13,13, 0,14,14,12,12,
+	 0,11,11,12,12, 0,14,13,14,14, 0,13,13,13,13, 0,
+	15,15,14,15, 0, 0, 0,16,16, 0,12,12,13,13, 0,16,
+	17,20,21, 0,14,13,12,12, 0,14,14,14,14, 0,21, 0,
+	16,16, 0,12,12,13,13, 0,18,17,21, 0, 0,14,14,13,
+	13, 7, 8, 8,17,17,11,10,10,18,18,12,10,10,17,17,
+	 0,15,15,20,18, 0,15,15,17,17,11, 9, 9,17,17,14,
+	12,12,19,19,13, 9, 9,16,16, 0,15,14, 0,19, 0,14,
+	14,16,16,12,10,10,20,18,16,13,13,21,20,14,10,10,
+	17,17, 0,15,15,21,20, 0,15,14,17,17, 0,15,15,21,
+	21, 0, 0,21, 0, 0, 0,13,13,18,18, 0,19,16, 0, 0,
+	 0,15,15,17,16, 0,16,16, 0,21, 0, 0, 0, 0,21, 0,
+	13,14,18,17, 0,20,19, 0, 0, 0,15,15,18,18, 8, 7,
+	 7,15,15,12,11,11,17,16,13,11,11,16,16, 0, 0, 0,
+	21,20, 0, 0, 0, 0,20,11,10,10,17,17,14,13,13,19,
+	18,14,11,11,16,16, 0,20, 0,21,19, 0, 0,21, 0,20,
+	12,11,11,17,17,16,15,15, 0,19,14,11,11,17,16, 0,
+	21, 0, 0,19, 0, 0, 0,21,20, 0, 0,21,20, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0,19,21, 0, 0, 0, 0, 0, 0, 0, 0,
+	19,20, 0, 0, 0,20,21, 0, 0, 0, 0, 0, 0,20, 0,19,
+	21, 0, 0, 0, 0, 0, 0, 0, 0,21,20,11,10, 9,15,15,
+	14,11,11,15,15,14,11,11,16,16, 0,14,14,14,14, 0,
+	16,15,17,16,13,11,11,16,16,16,13,13,16,16,15,10,
+	10,15,15, 0,14,15,17,17, 0,14,14,16,15,13,11,11,
+	16,16,17,15,14,16,16,15,10,10,15,15, 0,15,15,17,
+	18, 0,15,15,16,16, 0,16,16,17,17, 0,21, 0,21,20,
+	 0,13,13,15,15, 0,18,18, 0,21, 0,15,15,15,15, 0,
+	16,16,17,17, 0, 0, 0, 0,18, 0,13,13,15,15, 0,19,
+	18, 0, 0, 0,15,15,16,16, 0,12,12,15,15, 0,13,13,
+	17,17, 0,13,13,17,18, 0,16,17,21, 0, 0,20,18, 0,
+	 0, 0,13,13,17,17, 0,15,15, 0,18, 0,12,12,17,18,
+	 0,16,16, 0, 0, 0,17,17,21, 0, 0,13,13,18,18, 0,
+	16,16,21,21, 0,12,12,17,18, 0,16,17,21, 0, 0,17,
+	17, 0,21, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,16,15,
+	 0,21, 0,21,19, 0, 0, 0,18,18, 0, 0, 0,18,19, 0,
+	 0, 0, 0, 0, 0, 0, 0,16,16,21,21, 0,20,19, 0, 0,
+	 0,19,21, 0,21, 0,12,12,15,15, 0,12,12,15,16, 0,
+	13,13,16,16, 0,14,14,15,15, 0,16,15,17,17, 0,13,
+	13,17,17, 0,15,15,16,18, 0,12,12,16,16, 0,14,14,
+	17,17, 0,15,14,16,16, 0,13,13,16,16, 0,16,15,17,
+	17, 0,12,12,16,16, 0,15,15,18,18, 0,14,14,17,16,
+	 0,16,16,17,18, 0, 0, 0,20,21, 0,13,13,16,17, 0,
+	17,17, 0, 0, 0,15,15,16,16, 0,15,16,17,17, 0, 0,
+	 0,19, 0, 0,13,13,15,16, 0,19,18, 0, 0, 0,16,15,
+	16,17, 8, 8, 8,17,17,13,11,10,17,18,13,10,10,17,
+	17, 0,15,15,20,19, 0,15,15,17,17,12,10,10,19,18,
+	15,12,12,20,18,14,10,10,17,16, 0,15,15,20,20, 0,
+	14,15,16,16,13,10,10,17,17,17,14,14, 0,18,15,10,
+	10,17,17, 0,16,15,20,20, 0,14,14,17,17, 0,15,16,
+	20,20, 0, 0,21, 0, 0, 0,13,13,17,17, 0,18,17, 0,
+	 0, 0,15,16,17,18, 0,15,15,18,21, 0, 0, 0,21, 0,
+	 0,13,13,18,18, 0,19,19, 0, 0, 0,16,16,18,17, 9,
+	 8, 8,15,15,12,11,11,16,16,13,11,11,16,15, 0, 0,
+	 0, 0,21, 0,21, 0,19,19,12,11,11,17,18,15,13,13,
+	18,19,14,11,11,16,16, 0, 0,21,21,19, 0, 0, 0,21,
+	20,13,11,11,18,17,17,14,15,20,21,15,11,12,16,16,
+	 0, 0, 0,20, 0, 0, 0,21, 0,19, 0, 0, 0, 0,19, 0,
+	 0, 0, 0, 0, 0,21,21,19,19, 0, 0, 0,21, 0, 0, 0,
+	 0,19,21, 0, 0, 0,19,20, 0, 0, 0,21, 0, 0, 0,21,
+	19,19, 0, 0, 0, 0, 0, 0, 0, 0,21,20, 0,11,11,15,
+	15, 0,12,12,15,16, 0,12,12,16,16, 0,15,15,16,15,
+	 0,16,16,17,17, 0,12,12,17,17, 0,14,14,17,17, 0,
+	11,11,16,16, 0,15,15,19,18, 0,15,15,16,16, 0,12,
+	12,17,16, 0,14,15,16,16, 0,11,11,15,15, 0,16,16,
+	18,19, 0,15,15,15,16, 0,17,17,18,20, 0,21, 0,21,
+	19, 0,14,14,16,16, 0,18,18, 0, 0, 0,16,16,15,15,
+	 0,16,16,18,17, 0, 0, 0,19,20, 0,14,14,16,16, 0,
+	19,19, 0, 0, 0,16,17,15,15, 0,12,12,14,15, 0,13,
+	13,16,17, 0,12,12,17,17, 0,17,16, 0, 0, 0,18,17,
+	21, 0, 0,13,13,19,17, 0,15,15,20,21, 0,12,12,17,
+	17, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,13,13,17,18,
+	 0,16,16,21, 0, 0,12,12,17,17, 0,17,17, 0, 0, 0,
+	17,17, 0, 0, 0,18,21, 0, 0, 0, 0, 0, 0, 0, 0,15,
+	15,21, 0, 0,20,21, 0, 0, 0,18,19, 0, 0, 0,18,17,
+	 0, 0, 0, 0, 0, 0, 0, 0,16,16,21, 0, 0,21,21, 0,
+	 0, 0,18,19, 0, 0, 0,12,12,16,16, 0,13,13,16,17,
+	 0,13,13,17,16, 0,14,14,16,16, 0,16,15,19,18, 0,
+	13,13,17,17, 0,15,15,18,18, 0,12,12,16,16, 0,15,
+	15,18,19, 0,15,15,17,16, 0,13,13,17,17, 0,16,16,
+	18,17, 0,12,12,17,16, 0,15,15,18,18, 0,15,15,17,
+	17, 0,16,16, 0,19, 0, 0, 0, 0, 0, 0,14,14,16,17,
+	 0,18,18, 0, 0, 0,15,15,17,17, 0,16,16,21,19, 0,
+	21, 0,21,21, 0,13,14,16,16, 0,19,19, 0, 0, 0,15,
+	16,16,16, 0,11,11,17,16, 0,15,14,19,18, 0,14,14,
+	19,19, 0,18,17,18,20, 0,17,17,18,19, 0,13,13,17,
+	17, 0,16,17,21,18, 0,13,13,17,16, 0,18,17,19, 0,
+	 0,16,17,18,18, 0,12,12,19,18, 0,18,18,20,20, 0,
+	13,13,17,17, 0,17,17,21, 0, 0,16,17,17,18, 0,18,
+	17,19,18, 0, 0, 0, 0, 0, 0,14,14,17,17, 0,19,19,
+	21, 0, 0,16,16,16,17, 0,17,17,19,20, 0, 0, 0, 0,
+	21, 0,15,15,17,18, 0,21,21, 0, 0, 0,17,17,17,18,
+	 0,10,10,15,15, 0,15,14,17,18, 0,14,14,16,16, 0,
+	 0, 0,18, 0, 0,21, 0,19, 0, 0,13,13,17,16, 0,17,
+	17,18, 0, 0,14,14,16,15, 0, 0, 0,21, 0, 0,21, 0,
+	19,18, 0,13,13,17,17, 0,18,18,20,20, 0,15,15,16,
+	16, 0, 0, 0,21,21, 0, 0, 0,20,20, 0, 0, 0,19, 0,
+	 0, 0, 0, 0, 0, 0,21,20,18,18, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0,20, 0, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 0,
+	 0,19,18, 0, 0, 0, 0,21, 0, 0, 0,18,20, 0,18,19,
+	16,17, 0,21,19,17,17, 0, 0,21,18,18, 0, 0,21,20,
+	19, 0, 0, 0,20,20, 0, 0,21,17,17, 0, 0, 0,19,19,
+	 0,20,20,17,17, 0, 0, 0, 0,20, 0, 0,20,18,18, 0,
+	21,20,17,17, 0, 0, 0,20,21, 0,19, 0,17,17, 0, 0,
+	21, 0, 0, 0,20, 0,18,19, 0, 0, 0,21,21, 0, 0, 0,
+	 0,21, 0,20,20,17,17, 0, 0, 0, 0, 0, 0,21, 0,18,
+	17, 0, 0, 0,20,19, 0, 0, 0, 0,21, 0,20,20,17,17,
+	 0, 0, 0, 0, 0, 0,21,21,18,18, 0,12,12,15,14, 0,
+	14,14,17,17, 0,14,14,17,16, 0,18,18,21, 0, 0,19,
+	20, 0, 0, 0,13,13,18,17, 0,16,16,19,18, 0,13,13,
+	17,17, 0,17,17, 0, 0, 0,17,17,21, 0, 0,13,13,17,
+	17, 0,17,17,21,20, 0,13,13,18,17, 0,18,19,21,21,
+	 0,19,18, 0, 0, 0,18,17, 0, 0, 0, 0, 0, 0, 0, 0,
+	15,16, 0, 0, 0,21,21, 0, 0, 0,20,18,21, 0, 0,17,
+	18, 0, 0, 0, 0, 0, 0, 0, 0,15,16, 0, 0, 0, 0,20,
+	 0, 0, 0, 0,19, 0, 0, 0,15,15,18,19, 0,18,17,21,
+	 0, 0,16,18, 0,20, 0,17,18,21, 0, 0,18,20, 0, 0,
+	 0,16,16,21,21, 0,19,20,21, 0, 0,16,15, 0,21, 0,
+	18,20, 0, 0, 0,18,19, 0, 0, 0,16,15,21,21, 0,21,
+	 0, 0, 0, 0,16,15,21, 0, 0,20,19, 0, 0, 0,18,21,
+	21, 0, 0,20,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,
+	20, 0,21, 0, 0, 0, 0,17,18,20,21, 0,18,18,21,21,
+	 0, 0, 0, 0, 0, 0,16,16,20, 0, 0, 0,21, 0, 0, 0,
+	21,18, 0, 0, 0,12,12,20,17, 0,15,15,19,18, 0,14,
+	14,19,18, 0,18,17,21,19, 0,17,17,21,17, 0,13,13,
+	21,19, 0,16,17,20,19, 0,13,13,16,16, 0,17,17,20,
+	21, 0,16,16,19,17, 0,13,13,18,18, 0,17,19,19,19,
+	 0,13,13,17,17, 0,18,18, 0,19, 0,16,17,18,18, 0,
+	16,17,19,21, 0, 0, 0, 0, 0, 0,15,15,16,17, 0,20,
+	19,21, 0, 0,17,17,17,17, 0,17,17,21,19, 0, 0, 0,
+	 0, 0, 0,15,15,17,17, 0,21, 0, 0, 0, 0,18,18,17,
+	17, 0,10,10,15,15, 0,15,15,17,17, 0,15,14,16,16,
+	 0, 0, 0,21,19, 0,21,21,19,21, 0,13,13,17,16, 0,
+	17,17,18,19, 0,14,15,16,15, 0, 0, 0,21,19, 0,21,
+	21,18,19, 0,14,14,16,17, 0,18,18,18,19, 0,15,15,
+	15,16, 0, 0,21, 0,21, 0, 0, 0,19,20, 0, 0, 0,21,
+	19, 0, 0, 0, 0, 0, 0,21,21,19,17, 0, 0, 0, 0, 0,
+	 0, 0, 0,21,21, 0,21, 0, 0,21, 0, 0, 0, 0, 0, 0,
+	21,21,19,18, 0, 0, 0, 0, 0, 0, 0, 0, 0,19, 0,21,
+	18,18,17, 0,21, 0,20,20, 0, 0, 0,18,20, 0, 0,21,
+	18,21, 0, 0, 0,21,18, 0, 0, 0, 0,19, 0, 0, 0,21,
+	21, 0,20,21,17,19, 0,21, 0,21, 0, 0,21, 0,18,18,
+	 0,20,21,17,18, 0, 0, 0,21,19, 0,20,21,17,18, 0,
+	 0, 0,21,21, 0, 0, 0,20,19, 0, 0, 0,21,21, 0, 0,
+	 0, 0, 0, 0,21,21,19,18, 0, 0, 0, 0, 0, 0, 0,21,
+	19,18, 0,21,21,19, 0, 0, 0, 0,21, 0, 0,21,21,18,
+	17, 0, 0, 0, 0, 0, 0,21, 0,21,18, 0,12,12,14,14,
+	 0,15,14,17,17, 0,14,14,17,16, 0,19,17, 0, 0, 0,
+	19,19, 0, 0, 0,13,13,17,17, 0,17,17,20,20, 0,13,
+	13,18,18, 0,18,17, 0, 0, 0,18,21, 0, 0, 0,13,13,
+	17,17, 0,18,18,21,20, 0,14,14,18,19, 0,19,18,21,
+	 0, 0,19,19, 0, 0, 0,20,18,20, 0, 0, 0, 0, 0, 0,
+	 0,15,16, 0, 0, 0,21,21, 0, 0, 0,19,19, 0, 0, 0,
+	18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0, 0,
+	 0, 0, 0, 0,19,20, 0, 0, 0,15,15,20,21, 0,17,17,
+	21,21, 0,17,17, 0, 0, 0,19,18, 0, 0, 0,18,19, 0,
+	 0, 0,17,16, 0,21, 0, 0,20, 0, 0, 0,16,16, 0,20,
+	 0,19,19, 0,21, 0,19,18, 0,21, 0,16,16, 0, 0, 0,
+	21,21, 0, 0, 0,16,16, 0, 0, 0,21,21, 0, 0, 0,19,
+	19, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,
+	 0,21, 0, 0,20, 0, 0, 0,20,18,21,21, 0,19,18, 0,
+	20, 0, 0, 0, 0, 0, 0,16,17,21, 0, 0, 0,21, 0, 0,
+	 0,19,20,21,20,
+};
+
+static const static_codebook _44pn1_p4_0 = {
+	5, 3125,
+	(char *)_vq_lengthlist__44pn1_p4_0,
+	1, -528744448, 1616642048, 3, 0,
+	(long *)_vq_quantlist__44pn1_p4_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p4_1[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static const char _vq_lengthlist__44pn1_p4_1[] = {
+	 2, 3, 3, 3, 3, 3, 3,
+};
+
+static const static_codebook _44pn1_p4_1 = {
+	1, 7,
+	(char *)_vq_lengthlist__44pn1_p4_1,
+	1, -533200896, 1611661312, 3, 0,
+	(long *)_vq_quantlist__44pn1_p4_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p5_0[] = {
+	 1, 7, 7, 6, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9,
+	 8, 8, 7, 9, 9,11,12,11, 9, 9, 9, 6, 7, 7,10,11,
+	11,10,10,10,10,11,11,15,14,14,12,12,12,11,11,11,
+	14,14,14,12,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
+	 8, 8,12,10,10,10, 7, 7, 8, 7, 7,12,10,10,10, 7,
+	 7, 6, 7, 7,12,11,11,12,10,10,11,10,10,14,14,13,
+	13,10,10,11,10,10,16,14,14,14,11,10, 7, 7, 7,13,
+	12,12,12,12,11,11,11,11,15,14,17,13,12,12,12,11,
+	11,15,15,15,14,13,13,10, 9, 9,14,12,11,13,11,11,
+	12,11,11,16,15,14,14,11,11,12,11,11,17,14,14,15,
+	11,11, 7, 8, 8,12,11,11,13,10,10,11,10,10,17,14,
+	13,14,10,10,12,10,10,18,15,15,14,10,10, 8, 7, 7,
+	13,12,12,13,11,11,12,11,11,16,14,15,14,12,12,12,
+	11,11,18,16,16,14,12,12,11,10,10,13,12,11,13,11,
+	11,13,12,12, 0,15,14,14,11,11,13,11,11,16,15,15,
+	15,11,11,
+};
+
+static const static_codebook _44pn1_p5_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p5_0,
+	1, -527106048, 1620377600, 2, 0,
+	(long *)_vq_quantlist__44pn1_p5_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p5_1[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p5_1[] = {
+	 2, 6, 7, 6, 8, 8, 7, 7, 8, 7, 8, 8, 9, 9, 9, 8,
+	 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 6, 6, 9, 7,
+	 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
+	10, 9, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 6, 6, 9,
+	 7, 7,10, 8, 8,10, 6, 6, 9, 7, 7,10, 8, 8,10, 6,
+	 6, 7, 7, 7,11, 9, 9,11, 9, 9,10, 9, 9,12,10,10,
+	12, 8, 8,11, 9, 9,13, 9,10,12, 8, 8, 8, 7, 7,11,
+	 9,10,11,10,10,10, 9, 9,11,11,11,11, 9, 9,11,10,
+	 9,12,11,11,11, 9,10,10, 8, 8,11, 9,10,11, 9, 9,
+	11, 9, 9,12,10,10,11, 9, 9,11, 9, 9,12,10,11,11,
+	 9, 9, 8, 8, 8,12, 9, 9,12, 9, 9,11, 9, 9,13, 9,
+	 9,13, 8, 8,12, 9, 9,13,10,10,12, 8, 8, 9, 7, 7,
+	11,10,10,11,10,10,11,10,10,12,11,11,11,10, 9,11,
+	10,10,11,11,11,11, 9, 9,11, 9, 9,12,10,10,11,10,
+	10,12,10,10,11,11,11,11, 9, 9,11,10,10,12,11,11,
+	11, 9, 9,
+};
+
+static const static_codebook _44pn1_p5_1 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p5_1,
+	1, -530841600, 1616642048, 2, 0,
+	(long *)_vq_quantlist__44pn1_p5_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static const char _vq_lengthlist__44pn1_p6_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,
+};
+
+static const static_codebook _44pn1_p6_0 = {
+	5, 243,
+	(char *)_vq_lengthlist__44pn1_p6_0,
+	1, -516716544, 1630767104, 2, 0,
+	(long *)_vq_quantlist__44pn1_p6_0,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p6_1[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44pn1_p6_1[] = {
+	 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static const static_codebook _44pn1_p6_1 = {
+	1, 25,
+	(char *)_vq_lengthlist__44pn1_p6_1,
+	1, -518864896, 1620639744, 5, 0,
+	(long *)_vq_quantlist__44pn1_p6_1,
+	0
+};
+
+static const long _vq_quantlist__44pn1_p6_2[] = {
+	12,
+	11,
+	13,
+	10,
+	14,
+	9,
+	15,
+	8,
+	16,
+	7,
+	17,
+	6,
+	18,
+	5,
+	19,
+	4,
+	20,
+	3,
+	21,
+	2,
+	22,
+	1,
+	23,
+	0,
+	24,
+};
+
+static const char _vq_lengthlist__44pn1_p6_2[] = {
+	 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static const static_codebook _44pn1_p6_2 = {
+	1, 25,
+	(char *)_vq_lengthlist__44pn1_p6_2,
+	1, -529006592, 1611661312, 5, 0,
+	(long *)_vq_quantlist__44pn1_p6_2,
+	0
+};
+
+static const char _huff_lengthlist__44pn1_short[] = {
+	 4, 3, 7, 9,12,16,16, 3, 2, 5, 7,11,14,15, 7, 4,
+	 5, 6, 9,12,15, 8, 5, 5, 5, 8,10,14, 9, 7, 6, 6,
+	 8,10,12,12,10,10, 7, 6, 8,10,15,12,10, 6, 4, 7,
+	 9,
+};
+
+static const static_codebook _huff_book__44pn1_short = {
+	2, 49,
+	(char *)_huff_lengthlist__44pn1_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	0
+};
+
--- a/sys/src/cmd/audio/libvorbis/books/coupled/res_books_stereo.h
+++ b/sys/src/cmd/audio/libvorbis/books/coupled/res_books_stereo.h
@@ -5,2421 +5,1792 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
  * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: static codebooks autogenerated by huff/huffbuld
- last modified: $Id: res_books_stereo.h,v 1.2 2002/07/11 10:27:51 xiphmont Exp $
+ last modified: $Id: res_books_stereo.h 19057 2014-01-22 12:32:31Z xiphmont $
 
  ********************************************************************/
 
 #include "codebook.h"
-static long _vq_quantlist__16c0_s_p1_0[] = {
-	1,
-	0,
-	2,
-};
 
-static long _vq_lengthlist__16c0_s_p1_0[] = {
-	 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0,
-	 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
-	 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
-	 0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,10,12,11, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
-	 0, 0, 0, 0, 9,12,10, 0, 0, 0, 0, 0, 0,10,11,12,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
-	 0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,12,11, 0,
-	 0, 0, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,12,
-	 0, 0, 0, 0, 0, 0, 9,12, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__16c0_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__16c0_s_p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__16c0_s_p1_0[] = {
+         1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0,
+         0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+         0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
+         0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,10,12,11, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
+         0, 0, 0, 0, 9,12,10, 0, 0, 0, 0, 0, 0,10,11,12,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+         0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,12,11, 0,
+         0, 0, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,12,
+         0, 0, 0, 0, 0, 0, 9,12, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__16c0_s_p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _16c0_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__16c0_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16c0_s_p1_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p1_0 = {
-	_vq_quantthresh__16c0_s_p1_0,
-	_vq_quantmap__16c0_s_p1_0,
-	3,
-	3
+static const long _vq_quantlist__16c0_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _16c0_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__16c0_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16c0_s_p1_0,
-	NULL,
-	&_vq_auxt__16c0_s_p1_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p3_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__16c0_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _16c0_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16c0_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16c0_s_p3_0,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__16c0_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__16c0_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__16c0_s_p4_0[] = {
+         1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__16c0_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _16c0_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16c0_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c0_s_p4_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p2_0 = {
-	_vq_quantthresh__16c0_s_p2_0,
-	_vq_quantmap__16c0_s_p2_0,
-	5,
-	5
+static const long _vq_quantlist__16c0_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _16c0_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__16c0_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c0_s_p2_0,
-	NULL,
-	&_vq_auxt__16c0_s_p2_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p5_0[] = {
+         1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+         8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7,
+         8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0,
+         8, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static long _vq_quantlist__16c0_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _16c0_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16c0_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c0_s_p5_0,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p3_0[] = {
-	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__16c0_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static float _vq_quantthresh__16c0_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__16c0_s_p6_0[] = {
+         1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
+        11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+        11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+        10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10,10,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,11,12,12,13,13,13,14, 0, 0, 0, 0, 0,
+        10,10,10,11,11,11,12,12,13,13,13,14, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,12,13,13,14,15,14, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,14,14,15,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,13,14,
+        14,
 };
 
-static long _vq_quantmap__16c0_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _16c0_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__16c0_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16c0_s_p6_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p3_0 = {
-	_vq_quantthresh__16c0_s_p3_0,
-	_vq_quantmap__16c0_s_p3_0,
-	5,
-	5
+static const long _vq_quantlist__16c0_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _16c0_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__16c0_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c0_s_p3_0,
-	NULL,
-	&_vq_auxt__16c0_s_p3_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p7_0[] = {
+         1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11,
+        11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
+        11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10,
+        11,12,12,11, 9,10, 7,11,11,11,11,11,12,13,12, 6,
+         9,10,11,10,10,12,13,13, 6,10, 9,11,10,10,11,12,
+        13,
 };
 
-static long _vq_quantlist__16c0_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _16c0_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16c0_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__16c0_s_p7_0,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p4_0[] = {
-	 1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__16c0_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static float _vq_quantthresh__16c0_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__16c0_s_p7_1[] = {
+         1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7,
+         8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9,
+         8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7,
+         7, 8, 8, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9, 9,
+         9, 9,11,11,11, 8, 8, 9, 9, 9, 9, 9,10,10,11,11,
+         9, 9, 9, 9, 9, 9, 9,10,11,11,11,10,11, 9, 9, 9,
+         9,10, 9,11,11,11,10,11,10,10, 9, 9,10,10,11,11,
+        11,11,11, 9, 9, 9, 9,10,10,
 };
 
-static long _vq_quantmap__16c0_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _16c0_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__16c0_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c0_s_p7_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p4_0 = {
-	_vq_quantthresh__16c0_s_p4_0,
-	_vq_quantmap__16c0_s_p4_0,
-	9,
-	9
+static const long _vq_quantlist__16c0_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _16c0_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__16c0_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16c0_s_p4_0,
-	NULL,
-	&_vq_auxt__16c0_s_p4_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p8_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6,
+         8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8,
+         8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
+         9,10,10,10, 0, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9,10,
+        10, 0,12,11, 8, 8, 9, 9, 9, 9,10,10,11,10, 0,12,
+        13, 8, 8, 9,10, 9, 9,11,11,11,12, 0, 0, 0, 8, 8,
+         8, 8,10, 9,12,13,12,14, 0, 0, 0, 8, 8, 8, 9,10,
+        10,12,12,13,14, 0, 0, 0,13,13, 9, 9,11,11, 0, 0,
+        14, 0, 0, 0, 0,14,14,10,10,12,11,12,14,14,14, 0,
+         0, 0, 0, 0,11,11,13,13,14,13,14,14, 0, 0, 0, 0,
+         0,12,13,13,12,13,14,14,14,
 };
 
-static long _vq_quantlist__16c0_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _16c0_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__16c0_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__16c0_s_p8_0,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p5_0[] = {
-	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
-	 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7,
-	 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0,
-	 8, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
-	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
+static const long _vq_quantlist__16c0_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__16c0_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__16c0_s_p8_1[] = {
+         1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7,
+         7, 7, 6, 6, 7, 7, 7, 6, 6,
 };
 
-static long _vq_quantmap__16c0_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _16c0_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__16c0_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16c0_s_p8_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p5_0 = {
-	_vq_quantthresh__16c0_s_p5_0,
-	_vq_quantmap__16c0_s_p5_0,
-	9,
-	9
+static const long _vq_quantlist__16c0_s_p9_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _16c0_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__16c0_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16c0_s_p5_0,
-	NULL,
-	&_vq_auxt__16c0_s_p5_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p9_0[] = {
+         1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static long _vq_quantlist__16c0_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const static_codebook _16c0_s_p9_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16c0_s_p9_0,
+        1, -518803456, 1628680192, 2, 0,
+        (long *)_vq_quantlist__16c0_s_p9_0,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p6_0[] = {
-	 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
-	11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
-	10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10,10,10,
-	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
-	10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
-	 9,10,10,11,11,12,12,13,13,13,14, 0, 0, 0, 0, 0,
-	10,10,10,11,11,11,12,12,13,13,13,14, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
-	 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
-	 0, 0, 0, 0, 0,11,11,12,12,12,13,13,14,15,14, 0,
-	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,14,14,15,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,13,14,
-	14,
+static const long _vq_quantlist__16c0_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static float _vq_quantthresh__16c0_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const char _vq_lengthlist__16c0_s_p9_1[] = {
+         1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7,
+         6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6,
+         6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7,
+         8, 9,10,10,10,10,10,10,10,10,10,10,10, 8, 7,10,
+        10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static long _vq_quantmap__16c0_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const static_codebook _16c0_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__16c0_s_p9_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__16c0_s_p9_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p6_0 = {
-	_vq_quantthresh__16c0_s_p6_0,
-	_vq_quantmap__16c0_s_p6_0,
-	17,
-	17
+static const long _vq_quantlist__16c0_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static static_codebook _16c0_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__16c0_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__16c0_s_p6_0,
-	NULL,
-	&_vq_auxt__16c0_s_p6_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16c0_s_p9_2[] = {
+         1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10,
+        10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11,
+        11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8,
+         9,10, 9, 8, 9,10,12,12,11,11,12,11,10,11,12,11,
+        12,12, 8, 9, 9, 9,10,11,12,11,12,11,11,11,11,12,
+        12,11,11,12,12,11,11, 9, 9, 8, 9, 9,11, 9, 9,10,
+         9,11,11,11,11,12,11,11,10,12,12,12, 9,12,11,10,
+        11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,
+        10, 9,10, 9,10,10, 9, 9, 9,10,10,12,10,11,11, 9,
+        11,11,10,11,11,11,10,10,10, 9, 9,10,10, 9, 9,10,
+        11,11,10,11,10,11,10,11,11,10,11,11,11,10, 9,10,
+        10, 9,10, 9, 9,11, 9, 9,11,10,10,11,11,10,10,11,
+        10,11, 8, 9,11,11,10, 9,10,11,11,10,11,11,10,10,
+        10,11,10, 9,10,10,11, 9,10,10, 9,11,10,10,10,10,
+        11,10,11,11, 9,11,10,11,10,10,11,11,10,10,10, 9,
+        10,10,11,11,11, 9,10,10,10,10,10,11,10,10,10, 9,
+        10,10,11,10,10,10,10,10, 9,10,11,10,10,10,10,11,
+        11,11,10,10,10,10,10,11,10,11,10,11,10,10,10, 9,
+        11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,
+        11, 9,10,10,10,11,10,11,10,10,10,11, 9,10,11,10,
+        11,10,10, 9,10,10,10,11,10,11,10,10,10,10,10,11,
+        11,10,11,11,10,10,11,11,10, 9, 9,10,10,10,10,10,
+         9,11, 9,10,10,10,11,11,10,10,10,10,11,11,11,10,
+         9, 9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,
+        11,11,11, 9,10,10,10,10, 9,10, 9,10,11,10,11,10,
+        10,11,11,10,11,11,11,11,11,10,11,10,10,10, 9,11,
+        11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,
+        10,11,10,10,11, 9,10,10,10,
 };
 
-static long _vq_quantlist__16c0_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _16c0_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__16c0_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16c0_s_p9_2,
+        0
 };
 
-static long _vq_lengthlist__16c0_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11,
-	11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
-	11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10,
-	11,12,12,11, 9,10, 7,11,11,11,11,11,12,13,12, 6,
-	 9,10,11,10,10,12,13,13, 6,10, 9,11,10,10,11,12,
-	13,
+static const char _huff_lengthlist__16c0_s_single[] = {
+         3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7,
+         8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6,
+        18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11,
+        12,18, 7, 6,18, 8, 7, 7, 7, 9,11,17, 8, 8,18, 9,
+         7, 6, 6, 8,11,17,10,10,18,12, 9, 8, 7, 9,12,18,
+        13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,
+        16,16,18,18,
 };
 
-static float _vq_quantthresh__16c0_s_p7_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _huff_book__16c0_s_single = {
+        2, 100,
+        (char *)_huff_lengthlist__16c0_s_single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__16c0_s_p7_0[] = {
-	    1,    0,    2,
+static const char _huff_lengthlist__16c1_s_long[] = {
+         2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6,
+         7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5,
+        19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10,
+        11,15, 7, 5,19, 7, 7, 5, 6, 9,11,16, 7, 6,19, 8,
+         7, 6, 6, 7, 9,13, 9, 9,19,11, 9, 8, 6, 7, 8,13,
+        12,14,19,16,13,10, 9, 8, 9,13,14,17,19,18,18,17,
+        12,11,11,13,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p7_0 = {
-	_vq_quantthresh__16c0_s_p7_0,
-	_vq_quantmap__16c0_s_p7_0,
-	3,
-	3
+static const static_codebook _huff_book__16c1_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__16c1_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static static_codebook _16c0_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__16c0_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__16c0_s_p7_0,
-	NULL,
-	&_vq_auxt__16c0_s_p7_0,
-	NULL,
-	0
+static const long _vq_quantlist__16c1_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__16c0_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const char _vq_lengthlist__16c1_s_p1_0[] = {
+         1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+         0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+         0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+         0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_lengthlist__16c0_s_p7_1[] = {
-	 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7,
-	 8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9,
-	 8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7,
-	 7, 8, 8, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9, 9,
-	 9, 9,11,11,11, 8, 8, 9, 9, 9, 9, 9,10,10,11,11,
-	 9, 9, 9, 9, 9, 9, 9,10,11,11,11,10,11, 9, 9, 9,
-	 9,10, 9,11,11,11,10,11,10,10, 9, 9,10,10,11,11,
-	11,11,11, 9, 9, 9, 9,10,10,
+static const static_codebook _16c1_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__16c1_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16c1_s_p1_0,
+        0
 };
 
-static float _vq_quantthresh__16c0_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const long _vq_quantlist__16c1_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__16c0_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__16c1_s_p3_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p7_1 = {
-	_vq_quantthresh__16c0_s_p7_1,
-	_vq_quantmap__16c0_s_p7_1,
-	11,
-	11
+static const static_codebook _16c1_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16c1_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16c1_s_p3_0,
+        0
 };
 
-static static_codebook _16c0_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__16c0_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16c0_s_p7_1,
-	NULL,
-	&_vq_auxt__16c0_s_p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__16c1_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__16c0_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__16c1_s_p4_0[] = {
+         1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_lengthlist__16c0_s_p8_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6,
-	 8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8,
-	 8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
-	 9,10,10,10, 0, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9,10,
-	10, 0,12,11, 8, 8, 9, 9, 9, 9,10,10,11,10, 0,12,
-	13, 8, 8, 9,10, 9, 9,11,11,11,12, 0, 0, 0, 8, 8,
-	 8, 8,10, 9,12,13,12,14, 0, 0, 0, 8, 8, 8, 9,10,
-	10,12,12,13,14, 0, 0, 0,13,13, 9, 9,11,11, 0, 0,
-	14, 0, 0, 0, 0,14,14,10,10,12,11,12,14,14,14, 0,
-	 0, 0, 0, 0,11,11,13,13,14,13,14,14, 0, 0, 0, 0,
-	 0,12,13,13,12,13,14,14,14,
+static const static_codebook _16c1_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16c1_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p4_0,
+        0
 };
 
-static float _vq_quantthresh__16c0_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const long _vq_quantlist__16c1_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__16c0_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__16c1_s_p5_0[] = {
+         1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+         9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8,
+         8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+         9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c0_s_p8_0 = {
-	_vq_quantthresh__16c0_s_p8_0,
-	_vq_quantmap__16c0_s_p8_0,
-	13,
-	13
+static const static_codebook _16c1_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16c1_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p5_0,
+        0
 };
 
-static static_codebook _16c0_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__16c0_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__16c0_s_p8_0,
-	NULL,
-	&_vq_auxt__16c0_s_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c0_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__16c0_s_p8_1[] = {
-	 1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7,
-	 7, 7, 6, 6, 7, 7, 7, 6, 6,
-};
-
-static float _vq_quantthresh__16c0_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16c0_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c0_s_p8_1 = {
-	_vq_quantthresh__16c0_s_p8_1,
-	_vq_quantmap__16c0_s_p8_1,
-	5,
-	5
-};
-
-static static_codebook _16c0_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__16c0_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c0_s_p8_1,
-	NULL,
-	&_vq_auxt__16c0_s_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c0_s_p9_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__16c0_s_p9_0[] = {
-	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
-};
-
-static float _vq_quantthresh__16c0_s_p9_0[] = {
-	-157.5, 157.5, 
-};
-
-static long _vq_quantmap__16c0_s_p9_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c0_s_p9_0 = {
-	_vq_quantthresh__16c0_s_p9_0,
-	_vq_quantmap__16c0_s_p9_0,
-	3,
-	3
-};
-
-static static_codebook _16c0_s_p9_0 = {
-	4, 81,
-	_vq_lengthlist__16c0_s_p9_0,
-	1, -518803456, 1628680192, 2, 0,
-	_vq_quantlist__16c0_s_p9_0,
-	NULL,
-	&_vq_auxt__16c0_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c0_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__16c0_s_p9_1[] = {
-	 1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7,
-	 6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6,
-	 6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7,
-	 8, 9,10,10,10,10,10,10,10,10,10,10,10, 8, 7,10,
-	10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__16c0_s_p9_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__16c0_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c0_s_p9_1 = {
-	_vq_quantthresh__16c0_s_p9_1,
-	_vq_quantmap__16c0_s_p9_1,
-	15,
-	15
-};
-
-static static_codebook _16c0_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__16c0_s_p9_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__16c0_s_p9_1,
-	NULL,
-	&_vq_auxt__16c0_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c0_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__16c0_s_p9_2[] = {
-	 1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10,
-	10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11,
-	11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8,
-	 9,10, 9, 8, 9,10,12,12,11,11,12,11,10,11,12,11,
-	12,12, 8, 9, 9, 9,10,11,12,11,12,11,11,11,11,12,
-	12,11,11,12,12,11,11, 9, 9, 8, 9, 9,11, 9, 9,10,
-	 9,11,11,11,11,12,11,11,10,12,12,12, 9,12,11,10,
-	11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,
-	10, 9,10, 9,10,10, 9, 9, 9,10,10,12,10,11,11, 9,
-	11,11,10,11,11,11,10,10,10, 9, 9,10,10, 9, 9,10,
-	11,11,10,11,10,11,10,11,11,10,11,11,11,10, 9,10,
-	10, 9,10, 9, 9,11, 9, 9,11,10,10,11,11,10,10,11,
-	10,11, 8, 9,11,11,10, 9,10,11,11,10,11,11,10,10,
-	10,11,10, 9,10,10,11, 9,10,10, 9,11,10,10,10,10,
-	11,10,11,11, 9,11,10,11,10,10,11,11,10,10,10, 9,
-	10,10,11,11,11, 9,10,10,10,10,10,11,10,10,10, 9,
-	10,10,11,10,10,10,10,10, 9,10,11,10,10,10,10,11,
-	11,11,10,10,10,10,10,11,10,11,10,11,10,10,10, 9,
-	11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,
-	11, 9,10,10,10,11,10,11,10,10,10,11, 9,10,11,10,
-	11,10,10, 9,10,10,10,11,10,11,10,10,10,10,10,11,
-	11,10,11,11,10,10,11,11,10, 9, 9,10,10,10,10,10,
-	 9,11, 9,10,10,10,11,11,10,10,10,10,11,11,11,10,
-	 9, 9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,
-	11,11,11, 9,10,10,10,10, 9,10, 9,10,11,10,11,10,
-	10,11,11,10,11,11,11,11,11,10,11,10,10,10, 9,11,
-	11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,
-	10,11,10,10,11, 9,10,10,10,
-};
-
-static float _vq_quantthresh__16c0_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__16c0_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c0_s_p9_2 = {
-	_vq_quantthresh__16c0_s_p9_2,
-	_vq_quantmap__16c0_s_p9_2,
-	21,
-	21
-};
-
-static static_codebook _16c0_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__16c0_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__16c0_s_p9_2,
-	NULL,
-	&_vq_auxt__16c0_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16c0_s_single[] = {
-	 3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7,
-	 8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6,
-	18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11,
-	12,18, 7, 6,18, 8, 7, 7, 7, 9,11,17, 8, 8,18, 9,
-	 7, 6, 6, 8,11,17,10,10,18,12, 9, 8, 7, 9,12,18,
-	13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,
-	16,16,18,18,
-};
-
-static static_codebook _huff_book__16c0_s_single = {
-	2, 100,
-	_huff_lengthlist__16c0_s_single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16c1_s_long[] = {
-	 2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6,
-	 7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5,
-	19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10,
-	11,15, 7, 5,19, 7, 7, 5, 6, 9,11,16, 7, 6,19, 8,
-	 7, 6, 6, 7, 9,13, 9, 9,19,11, 9, 8, 6, 7, 8,13,
-	12,14,19,16,13,10, 9, 8, 9,13,14,17,19,18,18,17,
-	12,11,11,13,
+static const long _vq_quantlist__16c1_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _huff_book__16c1_s_long = {
-	2, 100,
-	_huff_lengthlist__16c1_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__16c1_s_p1_0[] = {
-	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
-	 0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__16c1_s_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__16c1_s_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p1_0 = {
-	_vq_quantthresh__16c1_s_p1_0,
-	_vq_quantmap__16c1_s_p1_0,
-	3,
-	3
-};
-
-static static_codebook _16c1_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__16c1_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16c1_s_p1_0,
-	NULL,
-	&_vq_auxt__16c1_s_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__16c1_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__16c1_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16c1_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p2_0 = {
-	_vq_quantthresh__16c1_s_p2_0,
-	_vq_quantmap__16c1_s_p2_0,
-	5,
-	5
-};
-
-static static_codebook _16c1_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__16c1_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c1_s_p2_0,
-	NULL,
-	&_vq_auxt__16c1_s_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__16c1_s_p6_0[] = {
+         1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
+        12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,12,12, 0, 0, 0, 8, 8, 8, 9,10, 9,10,10,10,10,
+        11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,11,
+        11,11,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+        11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+        10,11,11,12,12,13,13, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,11,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+        14,
 };
 
-static long _vq_lengthlist__16c1_s_p3_0[] = {
-	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _16c1_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__16c1_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16c1_s_p6_0,
+        0
 };
 
-static float _vq_quantthresh__16c1_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__16c1_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__16c1_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__16c1_s_p7_0[] = {
+         1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10,
+        10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
+        11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10,
+        11,11,11,11,10,10, 7,11,11,11,11,11,12,12,11, 6,
+        10,10,11,10,10,11,11,11, 6,10,10,10,11,10,11,11,
+        11,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c1_s_p3_0 = {
-	_vq_quantthresh__16c1_s_p3_0,
-	_vq_quantmap__16c1_s_p3_0,
-	5,
-	5
+static const static_codebook _16c1_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16c1_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__16c1_s_p7_0,
+        0
 };
 
-static static_codebook _16c1_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__16c1_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c1_s_p3_0,
-	NULL,
-	&_vq_auxt__16c1_s_p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__16c1_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__16c1_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__16c1_s_p7_1[] = {
+         2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
+         7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
+         8, 9, 9,10,10,10,10,10, 9, 9, 8, 8, 9, 9,10,10,
+        10,10,10, 8, 8, 8, 8, 9, 9,
 };
 
-static long _vq_lengthlist__16c1_s_p4_0[] = {
-	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _16c1_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__16c1_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p7_1,
+        0
 };
 
-static float _vq_quantthresh__16c1_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__16c1_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__16c1_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__16c1_s_p8_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
+         7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9,
+         9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9,
+        10,10,11,11, 0, 9, 9, 9, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,13,13, 9, 9,10,10,10,10,11,11,12,12, 0,14,
+        13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+         9, 9,11,11,12,12,13,12, 0, 0, 0,10,10, 9, 9,10,
+        10,12,12,13,13, 0, 0, 0,13,14,11,10,11,11,12,12,
+        13,14, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,12,12,12,12,13,13,14,15, 0, 0, 0, 0,
+         0,12,12,12,12,13,13,14,15,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c1_s_p4_0 = {
-	_vq_quantthresh__16c1_s_p4_0,
-	_vq_quantmap__16c1_s_p4_0,
-	9,
-	9
+static const static_codebook _16c1_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__16c1_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p8_0,
+        0
 };
 
-static static_codebook _16c1_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__16c1_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16c1_s_p4_0,
-	NULL,
-	&_vq_auxt__16c1_s_p4_0,
-	NULL,
-	0
+static const long _vq_quantlist__16c1_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__16c1_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__16c1_s_p8_1[] = {
+         2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static long _vq_lengthlist__16c1_s_p5_0[] = {
-	 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
-	 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8,
-	 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
-	 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
-	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
+static const static_codebook _16c1_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__16c1_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16c1_s_p8_1,
+        0
 };
 
-static float _vq_quantthresh__16c1_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__16c1_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__16c1_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__16c1_s_p9_0[] = {
+         1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c1_s_p5_0 = {
-	_vq_quantthresh__16c1_s_p5_0,
-	_vq_quantmap__16c1_s_p5_0,
-	9,
-	9
+static const static_codebook _16c1_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__16c1_s_p9_0,
+        1, -513964032, 1628680192, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p9_0,
+        0
 };
 
-static static_codebook _16c1_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__16c1_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16c1_s_p5_0,
-	NULL,
-	&_vq_auxt__16c1_s_p5_0,
-	NULL,
-	0
+static const long _vq_quantlist__16c1_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantlist__16c1_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const char _vq_lengthlist__16c1_s_p9_1[] = {
+         1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6,
+         6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6,
+         5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7,
+         9, 9,11,11,12,13,13,13,13,13,13,13,13, 7, 7, 8,
+         8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,
+        13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,
+        13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,
 };
 
-static long _vq_lengthlist__16c1_s_p6_0[] = {
-	 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
-	12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 0, 0, 0, 8, 8, 8, 9,10, 9,10,10,10,10,
-	11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,11,
-	11,11,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
-	10,11,11,12,12,13,13, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
-	10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
-	 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0,
-	10,10,11,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
-	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0,
-	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
-	14,
+static const static_codebook _16c1_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__16c1_s_p9_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__16c1_s_p9_1,
+        0
 };
 
-static float _vq_quantthresh__16c1_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const long _vq_quantlist__16c1_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static long _vq_quantmap__16c1_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const char _vq_lengthlist__16c1_s_p9_2[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10,
+        10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8,
+         8, 8, 8, 9, 9, 9,10,10,10,10, 9,10,10,11,11,12,
+        11,11, 8, 8, 8, 8, 9, 9,10,10,10,10,11,11,11,11,
+        11,11,11,12,11,12,12, 8, 8, 9, 9, 9, 9, 9,10,10,
+        10,10,10,10,11,11,11,11,11,11,12,11, 9, 9, 9, 9,
+        10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,
+        11, 9, 9, 9, 9,10,10,10,10,11,11,11,11,11,11,11,
+        11,11,12,12,12,13, 9,10,10, 9,11,10,10,10,10,11,
+        11,11,11,11,10,11,12,11,12,12,11,12,11,10, 9,10,
+        10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,
+        12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,
+        11,11,12,13,12,12,11, 9,10,10,11,11,10,11,11,11,
+        12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,
+        11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,
+        12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,
+        12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,
+        11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,
+        11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,
+        12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,
+        12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,
+        11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,
+        12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,
+        12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,
+        12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,
+        11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,
+        11,11,11,11,12,11,11,12,11,
 };
 
-static encode_aux_threshmatch _vq_auxt__16c1_s_p6_0 = {
-	_vq_quantthresh__16c1_s_p6_0,
-	_vq_quantmap__16c1_s_p6_0,
-	17,
-	17
+static const static_codebook _16c1_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__16c1_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16c1_s_p9_2,
+        0
 };
 
-static static_codebook _16c1_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__16c1_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__16c1_s_p6_0,
-	NULL,
-	&_vq_auxt__16c1_s_p6_0,
-	NULL,
-	0
+static const char _huff_lengthlist__16c1_s_short[] = {
+         5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5,
+         7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4,
+        16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9,
+        13,16, 7, 4,16, 5, 7, 4, 6, 8,11,13, 8, 6,16, 7,
+         8, 5, 5, 7, 9,13, 9, 8,16, 9, 8, 6, 6, 7, 9,13,
+        11,11,16,10,10, 7, 7, 7, 9,13,13,13,16,13,13, 9,
+         9, 9,10,13,
 };
 
-static long _vq_quantlist__16c1_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _huff_book__16c1_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__16c1_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__16c1_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10,
-	10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
-	11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10,
-	11,11,11,11,10,10, 7,11,11,11,11,11,12,12,11, 6,
-	10,10,11,10,10,11,11,11, 6,10,10,10,11,10,11,11,
-	11,
+static const char _huff_lengthlist__16c2_s_long[] = {
+	 4, 7, 9, 9, 9, 8, 9,10,13,16, 5, 4, 5, 6, 7, 7,
+	 8, 9,12,16, 6, 5, 5, 5, 7, 7, 9,10,12,15, 7, 6,
+	 5, 4, 5, 6, 8, 9,10,13, 8, 7, 7, 5, 5, 5, 7, 9,
+	10,12, 7, 7, 7, 6, 5, 5, 6, 7,10,12, 8, 8, 8, 7,
+	 7, 5, 5, 6, 9,11, 8, 9, 9, 8, 8, 6, 6, 5, 8,11,
+	10,11,12,12,11, 9, 9, 8, 9,12,13,14,15,15,14,12,
+	12,11,11,13,
 };
 
-static float _vq_quantthresh__16c1_s_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__16c1_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p7_0 = {
-	_vq_quantthresh__16c1_s_p7_0,
-	_vq_quantmap__16c1_s_p7_0,
-	3,
-	3
-};
-
-static static_codebook _16c1_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__16c1_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__16c1_s_p7_0,
-	NULL,
-	&_vq_auxt__16c1_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__16c1_s_p7_1[] = {
-	 2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
-	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
-	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
-	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
-	 8, 9, 9,10,10,10,10,10, 9, 9, 8, 8, 9, 9,10,10,
-	10,10,10, 8, 8, 8, 8, 9, 9,
-};
-
-static float _vq_quantthresh__16c1_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16c1_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p7_1 = {
-	_vq_quantthresh__16c1_s_p7_1,
-	_vq_quantmap__16c1_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _16c1_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__16c1_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16c1_s_p7_1,
-	NULL,
-	&_vq_auxt__16c1_s_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__16c1_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
-	 7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9,
-	 9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9,
-	10,10,11,11, 0, 9, 9, 9, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,13,13, 9, 9,10,10,10,10,11,11,12,12, 0,14,
-	13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
-	 9, 9,11,11,12,12,13,12, 0, 0, 0,10,10, 9, 9,10,
-	10,12,12,13,13, 0, 0, 0,13,14,11,10,11,11,12,12,
-	13,14, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
-	 0, 0, 0, 0,12,12,12,12,13,13,14,15, 0, 0, 0, 0,
-	 0,12,12,12,12,13,13,14,15,
-};
-
-static float _vq_quantthresh__16c1_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__16c1_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p8_0 = {
-	_vq_quantthresh__16c1_s_p8_0,
-	_vq_quantmap__16c1_s_p8_0,
-	13,
-	13
-};
-
-static static_codebook _16c1_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__16c1_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__16c1_s_p8_0,
-	NULL,
-	&_vq_auxt__16c1_s_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__16c1_s_p8_1[] = {
-	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
-	 6, 6, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__16c1_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16c1_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p8_1 = {
-	_vq_quantthresh__16c1_s_p8_1,
-	_vq_quantmap__16c1_s_p8_1,
-	5,
-	5
-};
-
-static static_codebook _16c1_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__16c1_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c1_s_p8_1,
-	NULL,
-	&_vq_auxt__16c1_s_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__16c1_s_p9_0[] = {
-	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__16c1_s_p9_0[] = {
-	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
-	787.5, 1102.5, 1417.5, 1732.5, 
-};
-
-static long _vq_quantmap__16c1_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p9_0 = {
-	_vq_quantthresh__16c1_s_p9_0,
-	_vq_quantmap__16c1_s_p9_0,
-	13,
-	13
-};
-
-static static_codebook _16c1_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__16c1_s_p9_0,
-	1, -513964032, 1628680192, 4, 0,
-	_vq_quantlist__16c1_s_p9_0,
-	NULL,
-	&_vq_auxt__16c1_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__16c1_s_p9_1[] = {
-	 1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6,
-	 6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6,
-	 5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7,
-	 9, 9,11,11,12,13,13,13,13,13,13,13,13, 7, 7, 8,
-	 8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,
-	13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,
-	13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-	13,
-};
-
-static float _vq_quantthresh__16c1_s_p9_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__16c1_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p9_1 = {
-	_vq_quantthresh__16c1_s_p9_1,
-	_vq_quantmap__16c1_s_p9_1,
-	15,
-	15
-};
-
-static static_codebook _16c1_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__16c1_s_p9_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__16c1_s_p9_1,
-	NULL,
-	&_vq_auxt__16c1_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c1_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__16c1_s_p9_2[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10,
-	10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9,10,10,10,10, 9,10,10,11,11,12,
-	11,11, 8, 8, 8, 8, 9, 9,10,10,10,10,11,11,11,11,
-	11,11,11,12,11,12,12, 8, 8, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,11,11,11,11,11,11,12,11, 9, 9, 9, 9,
-	10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,
-	11, 9, 9, 9, 9,10,10,10,10,11,11,11,11,11,11,11,
-	11,11,12,12,12,13, 9,10,10, 9,11,10,10,10,10,11,
-	11,11,11,11,10,11,12,11,12,12,11,12,11,10, 9,10,
-	10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,
-	12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,
-	11,11,12,13,12,12,11, 9,10,10,11,11,10,11,11,11,
-	12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,
-	11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,
-	12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,
-	12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,
-	11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,
-	11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,
-	12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,
-	12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,
-	11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,
-	12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,
-	12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,
-	12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,
-	11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,
-	11,11,11,11,12,11,11,12,11,
-};
-
-static float _vq_quantthresh__16c1_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__16c1_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c1_s_p9_2 = {
-	_vq_quantthresh__16c1_s_p9_2,
-	_vq_quantmap__16c1_s_p9_2,
-	21,
-	21
-};
-
-static static_codebook _16c1_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__16c1_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__16c1_s_p9_2,
-	NULL,
-	&_vq_auxt__16c1_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16c1_s_short[] = {
-	 5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5,
-	 7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4,
-	16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9,
-	13,16, 7, 4,16, 5, 7, 4, 6, 8,11,13, 8, 6,16, 7,
-	 8, 5, 5, 7, 9,13, 9, 8,16, 9, 8, 6, 6, 7, 9,13,
-	11,11,16,10,10, 7, 7, 7, 9,13,13,13,16,13,13, 9,
-	 9, 9,10,13,
-};
-
-static static_codebook _huff_book__16c1_s_short = {
+static const static_codebook _huff_book__16c2_s_long = {
 	2, 100,
-	_huff_lengthlist__16c1_s_short,
+	(char *)_huff_lengthlist__16c2_s_long,
 	0, 0, 0, 0, 0,
 	NULL,
-	NULL,
-	NULL,
-	NULL,
 	0
 };
 
-static long _huff_lengthlist__16c2_s_long[] = {
-	 4, 7, 9, 9, 9, 8, 9,10,15,19, 5, 4, 5, 6, 7, 7,
-	 8, 9,14,16, 6, 5, 4, 5, 6, 7, 8,10,12,19, 7, 6,
-	 5, 4, 5, 6, 7, 9,11,18, 8, 7, 6, 5, 5, 5, 7, 9,
-	10,17, 8, 7, 7, 5, 5, 5, 6, 7,12,18, 8, 8, 8, 7,
-	 7, 5, 5, 7,12,18, 8, 9,10, 9, 9, 7, 6, 7,12,17,
-	14,18,16,16,15,12,11,10,12,18,15,17,18,18,18,15,
-	14,14,16,18,
-};
-
-static static_codebook _huff_book__16c2_s_long = {
-	2, 100,
-	_huff_lengthlist__16c2_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c2_s_p1_0[] = {
+static const long _vq_quantlist__16c2_s_p1_0[] = {
 	1,
 	0,
 	2,
 };
 
-static long _vq_lengthlist__16c2_s_p1_0[] = {
+static const char _vq_lengthlist__16c2_s_p1_0[] = {
 	 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0,
 	 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2428,33 +1799,15 @@
 	 0,
 };
 
-static float _vq_quantthresh__16c2_s_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__16c2_s_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p1_0 = {
-	_vq_quantthresh__16c2_s_p1_0,
-	_vq_quantmap__16c2_s_p1_0,
-	3,
-	3
-};
-
-static static_codebook _16c2_s_p1_0 = {
+static const static_codebook _16c2_s_p1_0 = {
 	4, 81,
-	_vq_lengthlist__16c2_s_p1_0,
+	(char *)_vq_lengthlist__16c2_s_p1_0,
 	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16c2_s_p1_0,
-	NULL,
-	&_vq_auxt__16c2_s_p1_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p1_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p2_0[] = {
+static const long _vq_quantlist__16c2_s_p2_0[] = {
 	2,
 	1,
 	3,
@@ -2462,76 +1815,58 @@
 	4,
 };
 
-static long _vq_lengthlist__16c2_s_p2_0[] = {
-	 2, 4, 3, 7, 7, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0,
-	 0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 5, 4, 8, 8, 0, 0,
+static const char _vq_lengthlist__16c2_s_p2_0[] = {
+	 2, 4, 4, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
+	 0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 4, 4, 8, 7, 0, 0,
 	 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
-	 9, 9, 4, 4, 5, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8,
-	 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 7, 8, 8,10,10,
-	 0, 0, 0,12,11, 0, 0, 0,11,11, 0, 0, 0,14,13, 0,
-	 0, 0,14,13, 7, 8, 8, 9,10, 0, 0, 0,11,12, 0, 0,
-	 0,11,11, 0, 0, 0,14,14, 0, 0, 0,13,14, 0, 0, 0,
+	 9, 9, 4, 4, 4, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8,
+	 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 7, 8, 8,10, 9,
+	 0, 0, 0,12,11, 0, 0, 0,11,12, 0, 0, 0,14,13, 0,
+	 0, 0,14,14, 7, 8, 8, 9,10, 0, 0, 0,11,12, 0, 0,
+	 0,11,11, 0, 0, 0,14,14, 0, 0, 0,14,14, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8,11,11, 0, 0, 0,
-	11,11, 0, 0, 0,12,11, 0, 0, 0,12,12, 0, 0, 0,13,
-	13, 8, 8, 8,11,11, 0, 0, 0,11,11, 0, 0, 0,11,12,
-	 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+	12,11, 0, 0, 0,12,12, 0, 0, 0,13,12, 0, 0, 0,13,
+	13, 8, 8, 8,11,11, 0, 0, 0,11,11, 0, 0, 0,12,12,
+	 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 8, 8, 8,12,11, 0, 0, 0,12,11, 0,
-	 0, 0,11,11, 0, 0, 0,13,13, 0, 0, 0,13,12, 8, 8,
-	 8,11,12, 0, 0, 0,11,12, 0, 0, 0,11,11, 0, 0, 0,
-	13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 8, 9, 8,12,11, 0, 0, 0,12,12, 0,
+	 0, 0,12,11, 0, 0, 0,13,13, 0, 0, 0,13,13, 8, 8,
+	 8,11,12, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
+	13,14, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9,14,13, 0, 0, 0,13,12, 0, 0, 0,13,
-	13, 0, 0, 0,13,12, 0, 0, 0,13,13, 8, 9, 9,13,14,
-	 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,13, 0,
+	 0, 0, 8, 9, 9,14,14, 0, 0, 0,13,13, 0, 0, 0,13,
+	13, 0, 0, 0,13,12, 0, 0, 0,13,13, 8, 9, 9,14,14,
+	 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0, 0,12,13, 0,
 	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-	 9, 9,14,13, 0, 0, 0,13,13, 0, 0, 0,13,12, 0, 0,
+	 9, 9,14,14, 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0,
 	 0,13,13, 0, 0, 0,13,12, 8, 9, 9,14,14, 0, 0, 0,
-	13,13, 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,
-	13,
+	13,13, 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0, 0,12,
+	12,
 };
 
-static float _vq_quantthresh__16c2_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16c2_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p2_0 = {
-	_vq_quantthresh__16c2_s_p2_0,
-	_vq_quantmap__16c2_s_p2_0,
-	5,
-	5
-};
-
-static static_codebook _16c2_s_p2_0 = {
+static const static_codebook _16c2_s_p2_0 = {
 	4, 625,
-	_vq_lengthlist__16c2_s_p2_0,
+	(char *)_vq_lengthlist__16c2_s_p2_0,
 	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c2_s_p2_0,
-	NULL,
-	&_vq_auxt__16c2_s_p2_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p2_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p3_0[] = {
+static const long _vq_quantlist__16c2_s_p3_0[] = {
 	4,
 	3,
 	5,
@@ -2543,43 +1878,24 @@
 	8,
 };
 
-static long _vq_lengthlist__16c2_s_p3_0[] = {
-	 1, 3, 3, 6, 6, 7, 7, 8, 8, 0, 0, 0, 6, 6, 7, 7,
-	 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
-	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
-	 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
+static const char _vq_lengthlist__16c2_s_p3_0[] = {
+	 1, 3, 3, 5, 5, 7, 7, 8, 8, 0, 0, 0, 6, 6, 8, 8,
+	 9, 9, 0, 0, 0, 6, 6, 8, 8, 9, 9, 0, 0, 0, 7, 7,
+	 8, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0, 0, 0,
+	 8, 8, 9, 9,11,11, 0, 0, 0, 7, 7, 9, 9,11,11, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0,
 };
 
-static float _vq_quantthresh__16c2_s_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__16c2_s_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p3_0 = {
-	_vq_quantthresh__16c2_s_p3_0,
-	_vq_quantmap__16c2_s_p3_0,
-	9,
-	9
-};
-
-static static_codebook _16c2_s_p3_0 = {
+static const static_codebook _16c2_s_p3_0 = {
 	2, 81,
-	_vq_lengthlist__16c2_s_p3_0,
+	(char *)_vq_lengthlist__16c2_s_p3_0,
 	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16c2_s_p3_0,
-	NULL,
-	&_vq_auxt__16c2_s_p3_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p3_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p4_0[] = {
+static const long _vq_quantlist__16c2_s_p4_0[] = {
 	8,
 	7,
 	9,
@@ -2599,17 +1915,17 @@
 	16,
 };
 
-static long _vq_lengthlist__16c2_s_p4_0[] = {
-	 2, 3, 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,
-	10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
-	11,11, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
-	10,10,11, 0, 0, 0, 6, 6, 8, 8, 8, 8, 9, 9,10,10,
-	10,11,11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,
-	10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9,
-	 9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
-	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
-	 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+static const char _vq_lengthlist__16c2_s_p4_0[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9,
+	 9, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+	11,10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+	10,10,10, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,11, 0, 0, 0, 7, 6, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
+	10,11,11,11,11,12,12, 0, 0, 0, 7, 8, 8, 8, 9, 9,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2621,77 +1937,38 @@
 	 0,
 };
 
-static float _vq_quantthresh__16c2_s_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__16c2_s_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p4_0 = {
-	_vq_quantthresh__16c2_s_p4_0,
-	_vq_quantmap__16c2_s_p4_0,
-	17,
-	17
-};
-
-static static_codebook _16c2_s_p4_0 = {
+static const static_codebook _16c2_s_p4_0 = {
 	2, 289,
-	_vq_lengthlist__16c2_s_p4_0,
+	(char *)_vq_lengthlist__16c2_s_p4_0,
 	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__16c2_s_p4_0,
-	NULL,
-	&_vq_auxt__16c2_s_p4_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p4_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p5_0[] = {
+static const long _vq_quantlist__16c2_s_p5_0[] = {
 	1,
 	0,
 	2,
 };
 
-static long _vq_lengthlist__16c2_s_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
-	10,10, 4, 7, 6,10,10,10,10,10,10, 5, 9, 9, 9,12,
-	11,10,11,12, 7,10,10,12,12,12,12,12,12, 7,10,10,
-	11,12,12,12,12,13, 6,10,10,10,12,12,10,12,12, 7,
-	10,10,11,13,12,12,12,12, 7,10,10,11,12,12,12,12,
+static const char _vq_lengthlist__16c2_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,11,10,10,
+	10,11, 4, 6, 6,10,10,11,10,11,10, 5,10,10, 9,12,
+	11,10,12,12, 7,10,10,12,12,12,12,13,13, 7,11,10,
+	11,12,12,12,13,13, 6,11,10,10,12,12,11,12,12, 7,
+	11,10,12,13,13,12,12,12, 7,10,11,12,13,13,12,12,
 	12,
 };
 
-static float _vq_quantthresh__16c2_s_p5_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__16c2_s_p5_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p5_0 = {
-	_vq_quantthresh__16c2_s_p5_0,
-	_vq_quantmap__16c2_s_p5_0,
-	3,
-	3
-};
-
-static static_codebook _16c2_s_p5_0 = {
+static const static_codebook _16c2_s_p5_0 = {
 	4, 81,
-	_vq_lengthlist__16c2_s_p5_0,
+	(char *)_vq_lengthlist__16c2_s_p5_0,
 	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__16c2_s_p5_0,
-	NULL,
-	&_vq_auxt__16c2_s_p5_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p5_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p5_1[] = {
+static const long _vq_quantlist__16c2_s_p5_1[] = {
 	5,
 	4,
 	6,
@@ -2705,46 +1982,26 @@
 	10,
 };
 
-static long _vq_lengthlist__16c2_s_p5_1[] = {
-	 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11, 6, 6,
-	 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8,
-	 8,11,11,11, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
-	 6, 8, 8, 8, 8, 9, 9,11,11,11, 7, 7, 8, 8, 8, 8,
-	 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 9,11,11,11,
+static const char _vq_lengthlist__16c2_s_p5_1[] = {
+	 2, 3, 3, 6, 6, 6, 6, 7, 7, 7, 7,11,10,10, 6, 6,
+	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+	 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11, 6,
+	 7, 8, 8, 8, 8, 9, 9,11,11,11, 7, 7, 8, 8, 8, 8,
+	 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,
 	 8, 8, 8, 8, 8, 8, 8, 8,11,11,11,11,11, 8, 8, 8,
-	 8, 8, 8,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
+	 8, 8, 8,12,11,11,11,11, 8, 8, 8, 8, 8, 8,12,11,
 	11,11,11, 7, 7, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__16c2_s_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16c2_s_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p5_1 = {
-	_vq_quantthresh__16c2_s_p5_1,
-	_vq_quantmap__16c2_s_p5_1,
-	11,
-	11
-};
-
-static static_codebook _16c2_s_p5_1 = {
+static const static_codebook _16c2_s_p5_1 = {
 	2, 121,
-	_vq_lengthlist__16c2_s_p5_1,
+	(char *)_vq_lengthlist__16c2_s_p5_1,
 	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16c2_s_p5_1,
-	NULL,
-	&_vq_auxt__16c2_s_p5_1,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p5_1,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p6_0[] = {
+static const long _vq_quantlist__16c2_s_p6_0[] = {
 	6,
 	5,
 	7,
@@ -2760,13 +2017,13 @@
 	12,
 };
 
-static long _vq_lengthlist__16c2_s_p6_0[] = {
-	 1, 4, 4, 7, 6, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
+static const char _vq_lengthlist__16c2_s_p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 7, 8, 8, 9, 9,10,10, 5, 5, 5,
 	 7, 7, 9, 9, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9,10,10,11,11,12,12, 0, 6, 6, 7, 7, 9, 9,10,10,
-	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,12,12,
-	12, 0,11,11, 8, 8,10,10,11,11,12,12,13,13, 0,11,
-	12, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	 9,10, 9,11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,
+	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
+	12, 0,11,11, 8, 8,10,10,11,11,12,12,13,13, 0,12,
+	12, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2774,35 +2031,15 @@
 	 0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-static float _vq_quantthresh__16c2_s_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__16c2_s_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p6_0 = {
-	_vq_quantthresh__16c2_s_p6_0,
-	_vq_quantmap__16c2_s_p6_0,
-	13,
-	13
-};
-
-static static_codebook _16c2_s_p6_0 = {
+static const static_codebook _16c2_s_p6_0 = {
 	2, 169,
-	_vq_lengthlist__16c2_s_p6_0,
+	(char *)_vq_lengthlist__16c2_s_p6_0,
 	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__16c2_s_p6_0,
-	NULL,
-	&_vq_auxt__16c2_s_p6_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p6_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p6_1[] = {
+static const long _vq_quantlist__16c2_s_p6_1[] = {
 	2,
 	1,
 	3,
@@ -2810,38 +2047,20 @@
 	4,
 };
 
-static long _vq_lengthlist__16c2_s_p6_1[] = {
+static const char _vq_lengthlist__16c2_s_p6_1[] = {
 	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
 	 6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__16c2_s_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16c2_s_p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p6_1 = {
-	_vq_quantthresh__16c2_s_p6_1,
-	_vq_quantmap__16c2_s_p6_1,
-	5,
-	5
-};
-
-static static_codebook _16c2_s_p6_1 = {
+static const static_codebook _16c2_s_p6_1 = {
 	2, 25,
-	_vq_lengthlist__16c2_s_p6_1,
+	(char *)_vq_lengthlist__16c2_s_p6_1,
 	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16c2_s_p6_1,
-	NULL,
-	&_vq_auxt__16c2_s_p6_1,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p6_1,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p7_0[] = {
+static const long _vq_quantlist__16c2_s_p7_0[] = {
 	6,
 	5,
 	7,
@@ -2857,49 +2076,29 @@
 	12,
 };
 
-static long _vq_lengthlist__16c2_s_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
-	 8, 8, 9, 9,10,10,11,11,12,12, 6, 5, 5, 8, 8, 9,
-	 9,10,10,11,11,12,13,18, 6, 6, 7, 7, 9, 9,10,10,
-	12,12,13,13,18, 6, 6, 7, 7, 9, 9,10,10,12,12,13,
-	13,18,11,10, 8, 8,10,10,11,11,12,12,13,13,18,11,
-	11, 8, 8,10,10,11,11,12,13,13,13,18,18,18,10,11,
-	11,11,12,12,13,13,14,14,18,18,18,11,11,11,11,12,
-	12,13,13,14,14,18,18,18,14,14,12,12,12,12,14,14,
-	15,14,18,18,18,15,15,11,12,12,12,13,13,15,15,18,
-	18,18,18,18,13,13,13,13,13,14,17,16,18,18,18,18,
-	18,13,14,13,13,14,13,15,14,
+static const char _vq_lengthlist__16c2_s_p7_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 8,10, 9,10,10, 5, 5, 5,
+	 7, 7, 9, 9,10,10,11,10,12,11, 6, 5, 5, 7, 7, 9,
+	 9,10,10,11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,
+	11,11,12,12,20, 7, 7, 7, 7, 9, 9,11,10,12,11,12,
+	12,20,11,11, 8, 8,10,10,11,11,12,12,13,13,20,12,
+	12, 8, 8, 9, 9,11,11,12,12,13,13,20,20,21,10,10,
+	10,10,11,11,12,12,13,13,21,21,21,10,10,10,10,11,
+	11,12,12,13,13,21,21,21,14,14,11,11,12,12,13,13,
+	13,14,21,21,21,16,15,11,11,12,11,13,13,14,14,21,
+	21,21,21,21,13,13,12,12,13,13,14,14,21,21,21,21,
+	21,13,13,12,12,13,13,14,14,
 };
 
-static float _vq_quantthresh__16c2_s_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
-};
-
-static long _vq_quantmap__16c2_s_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p7_0 = {
-	_vq_quantthresh__16c2_s_p7_0,
-	_vq_quantmap__16c2_s_p7_0,
-	13,
-	13
-};
-
-static static_codebook _16c2_s_p7_0 = {
+static const static_codebook _16c2_s_p7_0 = {
 	2, 169,
-	_vq_lengthlist__16c2_s_p7_0,
+	(char *)_vq_lengthlist__16c2_s_p7_0,
 	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__16c2_s_p7_0,
-	NULL,
-	&_vq_auxt__16c2_s_p7_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p7_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p7_1[] = {
+static const long _vq_quantlist__16c2_s_p7_1[] = {
 	5,
 	4,
 	6,
@@ -2913,46 +2112,26 @@
 	10,
 };
 
-static long _vq_lengthlist__16c2_s_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 6,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 6, 6, 7, 7, 8, 8, 8,
+static const char _vq_lengthlist__16c2_s_p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 7,
+	 7, 7, 7, 7, 8, 8, 9, 9, 9, 6, 6, 7, 7, 7, 7, 8,
 	 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7,
 	 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
 	 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
-	 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 9, 7, 7, 7,
+	 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7,
 	 7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
 	 9, 9, 9, 7, 7, 7, 7, 8, 8,
 };
 
-static float _vq_quantthresh__16c2_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16c2_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p7_1 = {
-	_vq_quantthresh__16c2_s_p7_1,
-	_vq_quantmap__16c2_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _16c2_s_p7_1 = {
+static const static_codebook _16c2_s_p7_1 = {
 	2, 121,
-	_vq_lengthlist__16c2_s_p7_1,
+	(char *)_vq_lengthlist__16c2_s_p7_1,
 	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16c2_s_p7_1,
-	NULL,
-	&_vq_auxt__16c2_s_p7_1,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p7_1,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p8_0[] = {
+static const long _vq_quantlist__16c2_s_p8_0[] = {
 	7,
 	6,
 	8,
@@ -2970,53 +2149,33 @@
 	14,
 };
 
-static long _vq_lengthlist__16c2_s_p8_0[] = {
-	 1, 4, 4, 7, 6, 7, 7, 6, 6, 8, 8, 9, 9,10,10, 6,
-	 6, 6, 8, 8, 9, 8, 8, 8, 9, 9,11,10,11,11, 7, 6,
-	 6, 8, 8, 9, 8, 7, 7, 9, 9,10,10,12,11,14, 8, 8,
-	 8, 9, 9, 9, 9, 9,10, 9,10,10,11,13,14, 8, 8, 8,
-	 8, 9, 9, 8, 8, 9, 9,10,10,11,12,14,13,11, 9, 9,
-	 9, 9, 9, 9, 9,10,11,10,13,12,14,11,13, 8, 9, 9,
-	 9, 9, 9,10,10,11,10,13,12,14,14,14, 8, 9, 9, 9,
-	11,11,11,11,11,12,13,13,14,14,14, 9, 8, 9, 9,10,
-	10,12,10,11,12,12,14,14,14,14,11,12,10,10,12,12,
-	12,12,13,14,12,12,14,14,14,12,12, 9,10,11,11,12,
-	14,12,14,14,14,14,14,14,14,14,11,11,12,11,12,14,
-	14,14,14,14,14,14,14,14,14,12,11,11,11,11,14,14,
-	14,14,14,14,14,14,14,14,14,14,13,12,14,14,14,14,
-	14,14,14,14,14,14,14,14,14,12,12,12,13,14,14,13,
-	13,
+static const char _vq_lengthlist__16c2_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 6,
+	 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
+	 5, 8, 7, 9, 9, 8, 8, 9, 9,10,10,11,11,20, 8, 8,
+	 8, 8, 9, 9, 9, 9,10,10,11,10,12,11,20, 8, 8, 8,
+	 8, 9, 9, 9, 9,10,10,11,11,12,12,20,12,12, 9, 9,
+	10,10,10,10,11,11,12,12,13,12,20,13,13, 9, 9,10,
+	10,10,10,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,
+	10,10,11,11,12,12,13,12,20,20,20, 9, 9, 9, 8,10,
+	10,12,11,12,12,13,13,20,20,20,13,13,10,10,11,11,
+	12,12,13,13,13,13,20,20,20,13,13,10,10,11,10,12,
+	11,13,13,14,14,20,20,20,20,20,11,11,11,11,12,12,
+	13,13,14,14,20,20,20,20,20,11,10,11,11,13,11,13,
+	13,14,14,20,20,21,21,21,14,14,11,12,13,13,13,13,
+	14,14,21,21,21,21,21,15,15,12,11,13,12,14,13,15,
+	14,
 };
 
-static float _vq_quantthresh__16c2_s_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__16c2_s_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p8_0 = {
-	_vq_quantthresh__16c2_s_p8_0,
-	_vq_quantmap__16c2_s_p8_0,
-	15,
-	15
-};
-
-static static_codebook _16c2_s_p8_0 = {
+static const static_codebook _16c2_s_p8_0 = {
 	2, 225,
-	_vq_lengthlist__16c2_s_p8_0,
+	(char *)_vq_lengthlist__16c2_s_p8_0,
 	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__16c2_s_p8_0,
-	NULL,
-	&_vq_auxt__16c2_s_p8_0,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p8_0,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p8_1[] = {
+static const long _vq_quantlist__16c2_s_p8_1[] = {
 	10,
 	9,
 	11,
@@ -3040,127 +2199,47 @@
 	20,
 };
 
-static long _vq_lengthlist__16c2_s_p8_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8,11,12,11, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9, 9,11,11,10, 7, 7, 8,
-	 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
-	11,11, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 9,10,
-	10, 9,10,10,11,11,12, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+static const char _vq_lengthlist__16c2_s_p8_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9,
 	 9, 9, 9,10, 9,10,10,10,10,11,11,11, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
-	11, 8, 8, 9, 8, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,
-	10, 9,10,11,11,11, 9, 9, 9, 9,10, 9, 9, 9,10,10,
-	 9,10, 9,10,10,10,10,10,11,12,11,11,11, 9, 9, 9,
-	 9, 9,10,10, 9,10,10,10,10,10,10,10,10,12,11,13,
-	13,11, 9, 9, 9, 9,10,10, 9,10,10,10,10,11,10,10,
-	10,10,11,12,11,12,11, 9, 9, 9,10,10, 9,10,10,10,
-	10,10,10,10,10,10,10,11,11,11,12,11, 9,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,11,12,12,12,
-	11,11,11,10, 9,10,10,10,10,10,10,10,10,11,10,10,
-	10,11,11,11,11,11,11,11,10,10,10,11,10,10,10,10,
-	10,10,10,10,10,10,11,11,11,11,12,12,11,10,10,10,
-	10,10,10,10,10,11,10,10,10,11,10,12,11,11,12,11,
-	11,11,10,10,10,10,10,11,10,10,10,10,10,11,10,10,
-	11,11,11,12,11,12,11,11,12,10,10,10,10,10,10,10,
-	11,10,10,11,10,12,11,11,11,12,11,11,11,11,10,10,
-	10,10,10,10,10,11,11,11,10,11,12,11,11,11,12,11,
-	12,11,12,10,11,10,10,10,10,11,10,10,10,10,10,10,
-	12,11,11,11,11,11,12,12,10,10,10,10,10,11,10,10,
-	11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,
-	10,11,10,10,10,10,10,10,10,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
+	11, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+	10,10,10,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,11,11,
+	11,11, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
+	10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
+	10,10,10,10,10,10,10,11,11,11,11,11,10, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
+	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
+	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
+	11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
+	10,10,10,10,10,10,10,10,10,
 };
 
-static float _vq_quantthresh__16c2_s_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__16c2_s_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p8_1 = {
-	_vq_quantthresh__16c2_s_p8_1,
-	_vq_quantmap__16c2_s_p8_1,
-	21,
-	21
-};
-
-static static_codebook _16c2_s_p8_1 = {
+static const static_codebook _16c2_s_p8_1 = {
 	2, 441,
-	_vq_lengthlist__16c2_s_p8_1,
+	(char *)_vq_lengthlist__16c2_s_p8_1,
 	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__16c2_s_p8_1,
-	NULL,
-	&_vq_auxt__16c2_s_p8_1,
-	NULL,
+	(long *)_vq_quantlist__16c2_s_p8_1,
 	0
 };
 
-static long _vq_quantlist__16c2_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
+static const long _vq_quantlist__16c2_s_p9_0[] = {
 	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__16c2_s_p9_0[] = {
-	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__16c2_s_p9_0[] = {
-	-5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5, 
-	2327.5, 3258.5, 4189.5, 5120.5, 
-};
-
-static long _vq_quantmap__16c2_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p9_0 = {
-	_vq_quantthresh__16c2_s_p9_0,
-	_vq_quantmap__16c2_s_p9_0,
-	13,
-	13
-};
-
-static static_codebook _16c2_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__16c2_s_p9_0,
-	1, -510275072, 1631393792, 4, 0,
-	_vq_quantlist__16c2_s_p9_0,
-	NULL,
-	&_vq_auxt__16c2_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c2_s_p9_1[] = {
-	8,
 	7,
 	9,
 	6,
@@ -3179,15902 +2258,13526 @@
 	16,
 };
 
-static long _vq_lengthlist__16c2_s_p9_1[] = {
-	 1, 5, 5, 9, 8, 7, 7, 7, 6,10,11,11,11,11,11,11,
-	11, 8, 7, 6, 8, 8,10, 9,10,10,10, 9,11,10,10,10,
-	10,10, 8, 6, 6, 8, 8, 9, 8, 9, 8, 9,10,10,10,10,
-	10,10,10,10, 8,10, 9, 9, 9, 9,10,10,10,10,10,10,
-	10,10,10,10,10, 8, 9, 9, 9,10,10, 9,10,10,10,10,
-	10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,10,10,10,
-	10,10,10,10,10,10,10,10, 9, 8, 8, 9, 9,10,10,10,
-	10,10,10,10,10,10,10,10,10,10, 9,10, 9, 9,10,10,
-	10,10,10,10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+static const char _vq_lengthlist__16c2_s_p9_0[] = {
+	 1, 4, 3,10, 8,10,10,10,10,10,10,10,10,10,10,10,
+	10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10, 6,10, 9,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	 8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10, 9,10, 9,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__16c2_s_p9_1[] = {
-	-367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 
-	24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 367.5, 
-};
-
-static long _vq_quantmap__16c2_s_p9_1[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p9_1 = {
-	_vq_quantthresh__16c2_s_p9_1,
-	_vq_quantmap__16c2_s_p9_1,
-	17,
-	17
-};
-
-static static_codebook _16c2_s_p9_1 = {
-	2, 289,
-	_vq_lengthlist__16c2_s_p9_1,
-	1, -518488064, 1622704128, 5, 0,
-	_vq_quantlist__16c2_s_p9_1,
-	NULL,
-	&_vq_auxt__16c2_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16c2_s_p9_2[] = {
-	13,
-	12,
-	14,
-	11,
-	15,
-	10,
-	16,
-	9,
-	17,
-	8,
-	18,
-	7,
-	19,
-	6,
-	20,
-	5,
-	21,
-	4,
-	22,
-	3,
-	23,
-	2,
-	24,
-	1,
-	25,
-	0,
-	26,
-};
-
-static long _vq_lengthlist__16c2_s_p9_2[] = {
-	 1, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 8, 7, 8, 7, 7, 4, 4,
-};
-
-static float _vq_quantthresh__16c2_s_p9_2[] = {
-	-12.5, -11.5, -10.5, -9.5, -8.5, -7.5, -6.5, -5.5, 
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 
-	11.5, 12.5, 
-};
-
-static long _vq_quantmap__16c2_s_p9_2[] = {
-	   25,   23,   21,   19,   17,   15,   13,   11,
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,   12,   14,   16,   18,   20,
-	   22,   24,   26,
-};
-
-static encode_aux_threshmatch _vq_auxt__16c2_s_p9_2 = {
-	_vq_quantthresh__16c2_s_p9_2,
-	_vq_quantmap__16c2_s_p9_2,
-	27,
-	27
-};
-
-static static_codebook _16c2_s_p9_2 = {
-	1, 27,
-	_vq_lengthlist__16c2_s_p9_2,
-	1, -528875520, 1611661312, 5, 0,
-	_vq_quantlist__16c2_s_p9_2,
-	NULL,
-	&_vq_auxt__16c2_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16c2_s_short[] = {
-	 7,10,11,11,11,14,15,15,17,14, 8, 6, 7, 7, 8, 9,
-	11,11,14,17, 9, 6, 6, 6, 7, 7,10,11,15,16, 9, 6,
-	 6, 4, 4, 5, 8, 9,12,16,10, 6, 6, 4, 4, 4, 6, 9,
-	13,16,10, 7, 6, 5, 4, 3, 5, 7,13,16,11, 9, 8, 7,
-	 6, 5, 5, 6,12,15,10,10,10, 9, 7, 6, 6, 7,11,15,
-	13,13,13,13,11,10,10, 9,12,16,16,16,16,14,16,15,
-	15,12,14,14,
-};
-
-static static_codebook _huff_book__16c2_s_short = {
-	2, 100,
-	_huff_lengthlist__16c2_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c0_s_long[] = {
-	 3, 4,18, 8, 8, 8, 9,10,11,13, 3, 2,18, 5, 5, 6,
-	 8,11,12,12,18,18,18,18,18,18,18,18,18,18, 8, 5,
-	18, 7, 8, 8,10,14,14,16, 8, 5,18, 7, 5, 6, 7,11,
-	12,13, 8, 6,18, 7, 5, 6, 7,10,12,14, 8, 7,18,10,
-	 7, 6, 6, 8,11,14, 9,10,18,13, 9, 7, 6, 8,10,13,
-	11,13,18,16,13,10, 9, 8, 8,11,12,17,18,17,18,14,
-	11, 9,10,14,
-};
-
-static static_codebook _huff_book__44c0_s_long = {
-	2, 100,
-	_huff_lengthlist__44c0_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c0_s_p1_0[] = {
-	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_s_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44c0_s_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p1_0 = {
-	_vq_quantthresh__44c0_s_p1_0,
-	_vq_quantmap__44c0_s_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44c0_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c0_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c0_s_p1_0,
-	NULL,
-	&_vq_auxt__44c0_s_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p2_0 = {
-	_vq_quantthresh__44c0_s_p2_0,
-	_vq_quantmap__44c0_s_p2_0,
-	5,
-	5
-};
-
-static static_codebook _44c0_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c0_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_s_p2_0,
-	NULL,
-	&_vq_auxt__44c0_s_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_s_p3_0[] = {
-	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p3_0 = {
-	_vq_quantthresh__44c0_s_p3_0,
-	_vq_quantmap__44c0_s_p3_0,
-	5,
-	5
-};
-
-static static_codebook _44c0_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c0_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_s_p3_0,
-	NULL,
-	&_vq_auxt__44c0_s_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c0_s_p4_0[] = {
-	 1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c0_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p4_0 = {
-	_vq_quantthresh__44c0_s_p4_0,
-	_vq_quantmap__44c0_s_p4_0,
-	9,
-	9
-};
-
-static static_codebook _44c0_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c0_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c0_s_p4_0,
-	NULL,
-	&_vq_auxt__44c0_s_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c0_s_p5_0[] = {
-	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 7, 7, 7,
-	 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
-	 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0,
-	 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
-	 0, 0,10, 9, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
-	11,
-};
-
-static float _vq_quantthresh__44c0_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c0_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p5_0 = {
-	_vq_quantthresh__44c0_s_p5_0,
-	_vq_quantmap__44c0_s_p5_0,
-	9,
-	9
-};
-
-static static_codebook _44c0_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c0_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c0_s_p5_0,
-	NULL,
-	&_vq_auxt__44c0_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
 };
 
-static long _vq_lengthlist__44c0_s_p6_0[] = {
-	 1, 3, 4, 6, 6, 7, 8, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
-	11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
-	11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9,10,10,10,
-	10,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
-	 9,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
-	 9, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	10, 9,10,10,11,11,11,12,12,13,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
-	14,
-};
-
-static float _vq_quantthresh__44c0_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c0_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p6_0 = {
-	_vq_quantthresh__44c0_s_p6_0,
-	_vq_quantmap__44c0_s_p6_0,
-	17,
-	17
-};
-
-static static_codebook _44c0_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c0_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c0_s_p6_0,
-	NULL,
-	&_vq_auxt__44c0_s_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c0_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
-	10,11,10,10, 6, 9, 9,11,10,10,11, 9,10, 6, 9, 9,
-	11,10,10,11, 9, 9, 7,10,10,11,11,11,12,11,11, 7,
-	 9, 9,10, 9, 9,11,11,10, 7, 9, 9,10,10,10,12,10,
-	11,
-};
-
-static float _vq_quantthresh__44c0_s_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c0_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p7_0 = {
-	_vq_quantthresh__44c0_s_p7_0,
-	_vq_quantmap__44c0_s_p7_0,
-	3,
-	3
-};
-
-static static_codebook _44c0_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c0_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c0_s_p7_0,
-	NULL,
-	&_vq_auxt__44c0_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c0_s_p7_1[] = {
-	 2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 7,10, 9, 9, 6, 6,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 6, 6, 7, 7, 8, 8, 8,
-	 8,10, 9,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 8, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44c0_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c0_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p7_1 = {
-	_vq_quantthresh__44c0_s_p7_1,
-	_vq_quantmap__44c0_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _44c0_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c0_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c0_s_p7_1,
-	NULL,
-	&_vq_auxt__44c0_s_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c0_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 5,
-	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 8, 9, 9,10,10,10,11,12,11, 0,13,
-	13, 9, 8, 9, 9,10,10,10,11,11,11, 0, 0, 0,10,10,
-	 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 8,10,
-	10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
-	12,12, 0, 0, 0,15,15,10,10,11, 9,12,12,13,13, 0,
-	 0, 0, 0, 0,12,11,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,11,12,11,14,13,
-};
-
-static float _vq_quantthresh__44c0_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44c0_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p8_0 = {
-	_vq_quantthresh__44c0_s_p8_0,
-	_vq_quantmap__44c0_s_p8_0,
-	13,
-	13
-};
-
-static static_codebook _44c0_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c0_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c0_s_p8_0,
-	NULL,
-	&_vq_auxt__44c0_s_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_s_p8_1[] = {
-	 2, 3, 4, 4, 4, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
-	 6, 6, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c0_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p8_1 = {
-	_vq_quantthresh__44c0_s_p8_1,
-	_vq_quantmap__44c0_s_p8_1,
-	5,
-	5
-};
-
-static static_codebook _44c0_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c0_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_s_p8_1,
-	NULL,
-	&_vq_auxt__44c0_s_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p9_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_s_p9_0[] = {
-	 1, 7, 7,11,11,10,11,11,11,11, 9,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__44c0_s_p9_0[] = {
-	-331.5, -110.5, 110.5, 331.5, 
-};
-
-static long _vq_quantmap__44c0_s_p9_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p9_0 = {
-	_vq_quantthresh__44c0_s_p9_0,
-	_vq_quantmap__44c0_s_p9_0,
-	5,
-	5
-};
-
-static static_codebook _44c0_s_p9_0 = {
-	4, 625,
-	_vq_lengthlist__44c0_s_p9_0,
-	1, -518283264, 1627103232, 3, 0,
-	_vq_quantlist__44c0_s_p9_0,
-	NULL,
-	&_vq_auxt__44c0_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c0_s_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,12, 6, 5, 5,
-	 7, 7, 8, 8,10,10,12,11,14,13, 6, 5, 5, 7, 7, 7,
-	 8, 9, 9,11,12,13,12,15, 7, 7, 7, 7, 9, 9,11,11,
-	14,13,14,13,15, 7, 7, 8, 8, 8, 9,10,10,11,11,12,
-	11,15,10,10, 8, 8,10,10,12,11,13,15,14,14,15,11,
-	10, 8, 8,11,11,11,11,13,13,12,13,15,15,15,10,10,
-	10,10,12,13,13,13,15,14,15,15,15,10,10,10,11,13,
-	14,13,14,14,14,15,15,15,15,15,11,12,11,13,14,14,
-	15,15,15,15,15,14,15,11,11,13,12,14,13,15,15,15,
-	15,15,15,15,13,12,13,12,15,15,15,15,15,15,15,15,
-	15,12,13,12,12,15,14,15,15,
-};
-
-static float _vq_quantthresh__44c0_s_p9_1[] = {
-	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
-	42.5, 59.5, 76.5, 93.5, 
-};
-
-static long _vq_quantmap__44c0_s_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p9_1 = {
-	_vq_quantthresh__44c0_s_p9_1,
-	_vq_quantmap__44c0_s_p9_1,
-	13,
-	13
-};
-
-static static_codebook _44c0_s_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c0_s_p9_1,
-	1, -522616832, 1620115456, 4, 0,
-	_vq_quantlist__44c0_s_p9_1,
-	NULL,
-	&_vq_auxt__44c0_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_s_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c0_s_p9_2[] = {
-	 2, 4, 4, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8,
-	 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,11,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9,10, 9, 9,10,10,11, 9, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11, 9, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,11,11,10,11,11, 9, 9,
-	 9, 9, 9, 9,10, 9, 9, 9,10, 9,10,10,10,11,11, 9,
-	 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,11,10,10,10,11,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
-	11,11,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	11,11,10,10, 9,10,10,10, 9,10, 9, 9, 9, 9,10,10,
-	11,10,11,11,11, 9,10, 9, 9, 9, 9, 9, 9, 9,10,10,
-	11,10,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,11,11,10,11,11, 9, 9, 9, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44c0_s_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c0_s_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_s_p9_2 = {
-	_vq_quantthresh__44c0_s_p9_2,
-	_vq_quantmap__44c0_s_p9_2,
-	17,
-	17
-};
-
-static static_codebook _44c0_s_p9_2 = {
+static const static_codebook _16c2_s_p9_0 = {
 	2, 289,
-	_vq_lengthlist__44c0_s_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c0_s_p9_2,
-	NULL,
-	&_vq_auxt__44c0_s_p9_2,
-	NULL,
+	(char *)_vq_lengthlist__16c2_s_p9_0,
+	1, -509798400, 1631393792, 5, 0,
+	(long *)_vq_quantlist__16c2_s_p9_0,
 	0
 };
 
-static long _huff_lengthlist__44c0_s_short[] = {
-	 6, 8,17,12,12,12,14,15,17,16, 5, 1,16, 5, 6, 6,
-	 9,12,14,13,16,16,16,16,16,16,16,16,16,16, 9, 4,
-	16, 6, 9, 7,10,14,14,14, 8, 5,16, 8, 6, 7,10,13,
-	15,16, 9, 6,16, 7, 7, 7,10,12,15,14,10, 8,16, 9,
-	 9, 9,10,12,15,14,13, 7,16, 8, 7, 7,10,12,14,13,
-	15, 6,16, 7, 5, 5, 7, 9,13,16,14, 7,16, 8, 6, 6,
-	 8, 9,11,14,
-};
-
-static static_codebook _huff_book__44c0_s_short = {
-	2, 100,
-	_huff_lengthlist__44c0_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c0_sm_long[] = {
-	 3, 4,10, 8,11, 9,10,10,11,13, 3, 2,10, 5, 8, 6,
-	 8,11,12,13,10, 8, 7,10, 7, 8, 9,11,12,13, 8, 5,
-	12, 6, 9, 7,10,13,14,16,11, 7, 7, 9, 5, 6, 7,10,
-	13,13, 8, 6, 7, 7, 5, 5, 6, 9,12,13, 9, 8, 8, 8,
-	 7, 6, 6, 8,11,14,10,10,10,11, 9, 8, 7, 8,10,13,
-	11,14,12,15,13,11, 9, 8, 9,12,12,18,15,18,17,15,
-	12,10,10,14,
-};
-
-static static_codebook _huff_book__44c0_sm_long = {
-	2, 100,
-	_huff_lengthlist__44c0_sm_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c0_sm_p1_0[] = {
-	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_sm_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p1_0 = {
-	_vq_quantthresh__44c0_sm_p1_0,
-	_vq_quantmap__44c0_sm_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44c0_sm_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c0_sm_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c0_sm_p1_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_sm_p2_0[] = {
-	 1, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 6, 6, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 8,
-	 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0,
-	 0, 8, 8, 0, 0, 0,10, 9, 0, 0, 0, 0, 0, 0, 0, 6,
-	 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9,
-	10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
-	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
-	 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
-	10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
-	10, 0, 0, 0,10, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_sm_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p2_0 = {
-	_vq_quantthresh__44c0_sm_p2_0,
-	_vq_quantmap__44c0_sm_p2_0,
-	5,
-	5
-};
-
-static static_codebook _44c0_sm_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c0_sm_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_sm_p2_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_sm_p3_0[] = {
-	 2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_sm_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p3_0 = {
-	_vq_quantthresh__44c0_sm_p3_0,
-	_vq_quantmap__44c0_sm_p3_0,
-	5,
-	5
-};
-
-static static_codebook _44c0_sm_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c0_sm_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_sm_p3_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c0_sm_p4_0[] = {
-	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
-	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
-	 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c0_sm_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p4_0 = {
-	_vq_quantthresh__44c0_sm_p4_0,
-	_vq_quantmap__44c0_sm_p4_0,
+static const long _vq_quantlist__16c2_s_p9_1[] = {
 	9,
-	9
-};
-
-static static_codebook _44c0_sm_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c0_sm_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c0_sm_p4_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
 	8,
-};
-
-static long _vq_lengthlist__44c0_sm_p5_0[] = {
-	 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,
-	 9, 9, 0, 6, 6, 7, 7, 8, 8,10,10, 0, 7, 7, 8, 8,
-	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
-	 8, 8, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
-	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
-	11,
-};
-
-static float _vq_quantthresh__44c0_sm_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p5_0 = {
-	_vq_quantthresh__44c0_sm_p5_0,
-	_vq_quantmap__44c0_sm_p5_0,
-	9,
-	9
-};
-
-static static_codebook _44c0_sm_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c0_sm_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c0_sm_p5_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
 	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c0_sm_p6_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8,10,10,10,10,11,
-	11, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 0, 7, 7, 8, 8, 8, 8,10,10,10,10,11,11,
-	11,11,12,12, 0, 0, 0, 8, 7, 8, 8,10,10,10,10,11,
-	11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
-	10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
-	10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0, 0, 9,
-	 9,10, 9,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0,
-	10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0,
-	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
-	14,
-};
-
-static float _vq_quantthresh__44c0_sm_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p6_0 = {
-	_vq_quantthresh__44c0_sm_p6_0,
-	_vq_quantmap__44c0_sm_p6_0,
-	17,
-	17
-};
-
-static static_codebook _44c0_sm_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c0_sm_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c0_sm_p6_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c0_sm_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 5, 7, 6,10, 9, 9,10,
-	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10,10,10,11, 9,10, 6, 9, 9,
-	10,10,10,11,10, 9, 7,10,10,11,11,11,11,11,11, 6,
-	 9, 9,10, 9,10,11,11,10, 6, 9, 9,10,10,10,11,10,
-	11,
-};
-
-static float _vq_quantthresh__44c0_sm_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_0 = {
-	_vq_quantthresh__44c0_sm_p7_0,
-	_vq_quantmap__44c0_sm_p7_0,
-	3,
-	3
-};
-
-static static_codebook _44c0_sm_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c0_sm_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c0_sm_p7_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
 	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c0_sm_p7_1[] = {
-	 2, 4, 4, 5, 5, 7, 7, 7, 7, 7, 7, 9, 5, 5, 7, 7,
-	 7, 7, 8, 8, 8, 8, 9, 5, 5, 7, 7, 7, 7, 8, 8, 8,
-	 8,10, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
-	 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44c0_sm_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_1 = {
-	_vq_quantthresh__44c0_sm_p7_1,
-	_vq_quantmap__44c0_sm_p7_1,
 	11,
-	11
-};
-
-static static_codebook _44c0_sm_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c0_sm_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c0_sm_p7_1,
-	NULL,
-	&_vq_auxt__44c0_sm_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p8_0[] = {
 	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
 	12,
-};
-
-static long _vq_lengthlist__44c0_sm_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5,
-	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 9, 9, 9,10,10,11,11,12,11, 0,12,
-	12, 9, 9, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
-	 9,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
-	11,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
-	13,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
-	 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,10,12,11,14,14,
-};
-
-static float _vq_quantthresh__44c0_sm_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_0 = {
-	_vq_quantthresh__44c0_sm_p8_0,
-	_vq_quantmap__44c0_sm_p8_0,
-	13,
-	13
-};
-
-static static_codebook _44c0_sm_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c0_sm_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c0_sm_p8_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c0_sm_p8_1[] = {
-	 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c0_sm_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_1 = {
-	_vq_quantthresh__44c0_sm_p8_1,
-	_vq_quantmap__44c0_sm_p8_1,
 	5,
-	5
-};
-
-static static_codebook _44c0_sm_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c0_sm_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c0_sm_p8_1,
-	NULL,
-	&_vq_auxt__44c0_sm_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p9_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c0_sm_p9_0[] = {
-	 1, 3, 4,11,11,11,11,11,11, 4, 6, 6,10,10,10,10,
-	10,10, 4, 6, 5,10,10,10,10,10,10,10, 6, 7,10, 9,
-	10,10,10,10,10, 7, 9,10, 9,10,10,10,10,10, 9,10,
-	 7, 9,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,
-	10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__44c0_sm_p9_0[] = {
-	-773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 552.5, 773.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p9_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_0 = {
-	_vq_quantthresh__44c0_sm_p9_0,
-	_vq_quantmap__44c0_sm_p9_0,
-	9,
-	9
-};
-
-static static_codebook _44c0_sm_p9_0 = {
-	2, 81,
-	_vq_lengthlist__44c0_sm_p9_0,
-	1, -516186112, 1627103232, 4, 0,
-	_vq_quantlist__44c0_sm_p9_0,
-	NULL,
-	&_vq_auxt__44c0_sm_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c0_sm_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,13, 6, 5, 5,
-	 7, 7, 8, 8,10,10,12,12,14,13, 6, 5, 5, 6, 7, 8,
-	 8,10, 9,11,12,13,12,18, 7, 7, 7, 7, 9, 9,11,11,
-	14,14,14,13,17, 7, 7, 8, 7, 9, 9,10,10,12,11,13,
-	12,18,10,10, 8, 8,10,10,12,11,13,14,16,15,17,11,
-	11, 8, 8,11,11,11,12,13,13,13,15,18,18,18,10,11,
-	10,10,12,13,14,13,17,14,17,17,17,10,10,11,11,14,
-	14,14,13,14,14,18,18,18,17,15,11,12,12,13,15,15,
-	16,17,18,16,18,14,15,11,11,14,13,14,14,16,17,18,
-	17,17,17,18,14,13,13,12,17,15,17,16,18,17,18,18,
-	18,12,13,12,13,16,14,18,18,
-};
-
-static float _vq_quantthresh__44c0_sm_p9_1[] = {
-	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
-	42.5, 59.5, 76.5, 93.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_1 = {
-	_vq_quantthresh__44c0_sm_p9_1,
-	_vq_quantmap__44c0_sm_p9_1,
 	13,
-	13
-};
-
-static static_codebook _44c0_sm_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c0_sm_p9_1,
-	1, -522616832, 1620115456, 4, 0,
-	_vq_quantlist__44c0_sm_p9_1,
-	NULL,
-	&_vq_auxt__44c0_sm_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c0_sm_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
 	4,
-	12,
-	3,
-	13,
-	2,
 	14,
-	1,
+	3,
 	15,
-	0,
+	2,
 	16,
-};
-
-static long _vq_lengthlist__44c0_sm_p9_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,11,10,10, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10, 9,10,11,10, 9, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11, 9, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10,11,11, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
-	11,11,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,10,
-	11,11,10,10, 9,10,10,10, 9, 9, 9, 9, 9, 9,10,10,
-	10,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	11,10,11,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,11,11,11,10,11,11, 9, 9, 9, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44c0_sm_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c0_sm_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c0_sm_p9_2 = {
-	_vq_quantthresh__44c0_sm_p9_2,
-	_vq_quantmap__44c0_sm_p9_2,
-	17,
-	17
-};
-
-static static_codebook _44c0_sm_p9_2 = {
-	2, 289,
-	_vq_lengthlist__44c0_sm_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c0_sm_p9_2,
-	NULL,
-	&_vq_auxt__44c0_sm_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c0_sm_short[] = {
-	 5, 7,12,12,13,13,13,15,16,18, 4, 2,11, 5, 9, 7,
-	 9,12,13,14,13, 7, 8, 9, 8, 9,11,13,19,19, 9, 4,
-	12, 5,10, 7, 9,12,15,14,11, 6, 7, 7, 5, 6, 8,11,
-	15,17,10, 5, 8, 6, 6, 5, 6, 9,14,14,10, 5, 9, 7,
-	 7, 6, 6, 9,12,14,12, 6,10, 7, 7, 7, 8, 9,13,14,
-	14, 7, 9, 7, 5, 5, 6, 9,11,13,14, 9,10, 9, 6, 6,
-	 7, 8,10,13,
-};
-
-static static_codebook _huff_book__44c0_sm_short = {
-	2, 100,
-	_huff_lengthlist__44c0_sm_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c1_s_long[] = {
-	 3, 4,19, 9,10, 9, 9,10,11,12, 4, 2,19, 5, 6, 6,
-	 8,10,12,11,19,19,19,19,19,19,19,19,18,18, 8, 4,
-	18, 6, 8, 7,10,13,14,13,10, 5,18, 7, 4, 6, 7,10,
-	12,13, 9, 6,18, 7, 5, 6, 7,10,12,13, 9, 7,18, 9,
-	 7, 6, 6, 7,10,13, 9, 9,18,12, 9, 8, 6, 6, 9,12,
-	10,12,18,15,12,11, 9, 8, 8,11,11,14,18,17,15,13,
-	12, 9,10,12,
-};
-
-static static_codebook _huff_book__44c1_s_long = {
-	2, 100,
-	_huff_lengthlist__44c1_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p1_0[] = {
 	1,
+	17,
 	0,
-	2,
+	18,
 };
 
-static long _vq_lengthlist__44c1_s_p1_0[] = {
-	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
-	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
-	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9,
-	 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__16c2_s_p9_1[] = {
+	 1, 4, 4, 7, 7, 7, 7, 7, 7, 8, 8,10, 9,11,10,13,
+	11,14,13, 6, 6, 6, 8, 8, 8, 8, 8, 7, 9, 8,11, 9,
+	13,11,14,12,14,13, 5, 6, 6, 8, 8, 8, 8, 8, 8, 9,
+	 9,11,11,13,11,14,13,15,15,17, 8, 8, 8, 8, 9, 9,
+	 9, 8,11, 9,12,10,13,11,14,12,14,13,17, 8, 8, 8,
+	 8, 9, 9, 9, 9,10,10,11,11,13,13,13,14,16,15,17,
+	12,12, 8, 8, 9, 9,10,10,11,11,12,11,13,12,13,12,
+	14,13,16,12,12, 8, 8, 9, 9,10,10,11,11,12,12,13,
+	13,14,14,15,15,17,17,17, 9, 9, 9, 9,11,11,12,12,
+	12,13,13,13,16,14,14,14,17,17,17, 9, 8, 9, 8,11,
+	10,12,12,13,13,14,14,15,15,16,16,17,17,17,12,12,
+	10,10,11,12,12,13,13,14,13,15,15,14,16,15,17,17,
+	17,12,12,10, 8,12, 9,13,12,14,14,15,14,15,16,16,
+	16,17,17,17,17,17,11,11,12,12,14,14,14,16,15,16,
+	15,16,15,17,17,17,17,17,17,11, 9,12,10,13,11,15,
+	14,16,16,17,16,16,15,17,17,17,17,17,15,15,12,12,
+	14,14,15,16,16,15,16,16,17,17,17,17,17,17,17,14,
+	14,12,10,14,11,15,12,17,16,15,16,17,16,17,17,17,
+	17,17,17,17,13,13,14,14,14,16,17,17,16,17,17,17,
+	17,17,17,17,17,17,17,13, 9,13,12,15,13,16,16,17,
+	17,17,17,17,17,17,17,17,17,17,15,17,14,14,15,16,
+	16,17,16,17,16,17,17,17,17,17,17,17,17,17,17,14,
+	13,15,16,16,17,16,17,17,17,
 };
 
-static float _vq_quantthresh__44c1_s_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44c1_s_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p1_0 = {
-	_vq_quantthresh__44c1_s_p1_0,
-	_vq_quantmap__44c1_s_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44c1_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c1_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c1_s_p1_0,
-	NULL,
-	&_vq_auxt__44c1_s_p1_0,
-	NULL,
+static const static_codebook _16c2_s_p9_1 = {
+	2, 361,
+	(char *)_vq_lengthlist__16c2_s_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	(long *)_vq_quantlist__16c2_s_p9_1,
 	0
 };
 
-static long _vq_quantlist__44c1_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p2_0 = {
-	_vq_quantthresh__44c1_s_p2_0,
-	_vq_quantmap__44c1_s_p2_0,
-	5,
-	5
-};
-
-static static_codebook _44c1_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c1_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_s_p2_0,
-	NULL,
-	&_vq_auxt__44c1_s_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_s_p3_0[] = {
-	 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p3_0 = {
-	_vq_quantthresh__44c1_s_p3_0,
-	_vq_quantmap__44c1_s_p3_0,
-	5,
-	5
-};
-
-static static_codebook _44c1_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c1_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_s_p3_0,
-	NULL,
-	&_vq_auxt__44c1_s_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c1_s_p4_0[] = {
-	 1, 3, 2, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c1_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p4_0 = {
-	_vq_quantthresh__44c1_s_p4_0,
-	_vq_quantmap__44c1_s_p4_0,
-	9,
-	9
-};
-
-static static_codebook _44c1_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c1_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c1_s_p4_0,
-	NULL,
-	&_vq_auxt__44c1_s_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c1_s_p5_0[] = {
-	 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 8, 7,
-	 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7,
-	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
-	 8, 8, 9, 9,10,10, 0, 0, 0, 8, 8, 9, 9,10,10, 0,
-	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
-	11,
-};
-
-static float _vq_quantthresh__44c1_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c1_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p5_0 = {
-	_vq_quantthresh__44c1_s_p5_0,
-	_vq_quantmap__44c1_s_p5_0,
-	9,
-	9
-};
-
-static static_codebook _44c1_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c1_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c1_s_p5_0,
-	NULL,
-	&_vq_auxt__44c1_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
+static const long _vq_quantlist__16c2_s_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
 	16,
-};
-
-static long _vq_lengthlist__44c1_s_p6_0[] = {
-	 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
-	11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
-	10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9,10,10,
-	10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
-	10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
-	 9,10, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	10,10,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,11,12,12,12,13,13,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,
+	32,
+	15,
+	33,
 	14,
-};
-
-static float _vq_quantthresh__44c1_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c1_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p6_0 = {
-	_vq_quantthresh__44c1_s_p6_0,
-	_vq_quantmap__44c1_s_p6_0,
-	17,
-	17
-};
-
-static static_codebook _44c1_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c1_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c1_s_p6_0,
-	NULL,
-	&_vq_auxt__44c1_s_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c1_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10,11,10,10, 9, 9, 6, 9, 9,
-	10,10,10,10, 9, 9, 7,10,10,11,10,10,11,11,11, 6,
-	 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9, 9,11,10,
-	10,
-};
-
-static float _vq_quantthresh__44c1_s_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c1_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p7_0 = {
-	_vq_quantthresh__44c1_s_p7_0,
-	_vq_quantmap__44c1_s_p7_0,
-	3,
-	3
-};
-
-static static_codebook _44c1_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c1_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c1_s_p7_0,
-	NULL,
-	&_vq_auxt__44c1_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c1_s_p7_1[] = {
-	 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
-	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
-	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
-	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44c1_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c1_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p7_1 = {
-	_vq_quantthresh__44c1_s_p7_1,
-	_vq_quantmap__44c1_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _44c1_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c1_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c1_s_p7_1,
-	NULL,
-	&_vq_auxt__44c1_s_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c1_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 8,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 9, 9, 9,10,10,10,11,12,11, 0,12,
-	13, 9, 8, 9, 9,10,10,11,11,11,11, 0, 0, 0, 9, 9,
-	 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0,13,14,10,10,11,11,12,12,
-	12,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
-	 0, 0, 0, 0,12,11,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,10,12,11,14,13,
-};
-
-static float _vq_quantthresh__44c1_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44c1_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p8_0 = {
-	_vq_quantthresh__44c1_s_p8_0,
-	_vq_quantmap__44c1_s_p8_0,
+	34,
 	13,
-	13
-};
-
-static static_codebook _44c1_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c1_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c1_s_p8_0,
-	NULL,
-	&_vq_auxt__44c1_s_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_s_p8_1[] = {
-	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
-	 6, 6, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c1_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p8_1 = {
-	_vq_quantthresh__44c1_s_p8_1,
-	_vq_quantmap__44c1_s_p8_1,
-	5,
-	5
-};
-
-static static_codebook _44c1_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c1_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_s_p8_1,
-	NULL,
-	&_vq_auxt__44c1_s_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
+	35,
 	12,
-};
-
-static long _vq_lengthlist__44c1_s_p9_0[] = {
-	 1, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 6,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 6, 6, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 8,
-};
-
-static float _vq_quantthresh__44c1_s_p9_0[] = {
-	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
-	552.5, 773.5, 994.5, 1215.5, 
-};
-
-static long _vq_quantmap__44c1_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p9_0 = {
-	_vq_quantthresh__44c1_s_p9_0,
-	_vq_quantmap__44c1_s_p9_0,
-	13,
-	13
-};
-
-static static_codebook _44c1_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c1_s_p9_0,
-	1, -514541568, 1627103232, 4, 0,
-	_vq_quantlist__44c1_s_p9_0,
-	NULL,
-	&_vq_auxt__44c1_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
+	36,
 	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c1_s_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 9,12,12,13,12, 6, 5, 5,
-	 7, 7, 8, 8,10,10,11,12,13,13, 6, 5, 5, 7, 7, 8,
-	 8, 9, 9,11,11,12,12,15, 7, 7, 7, 7, 9, 9,11,11,
-	13,13,14,13,15, 7, 7, 8, 7, 9, 9,10,10,12,11,14,
-	12,15,10,10, 8, 8,10,10,12,11,12,13,14,13,15,10,
-	10, 8, 8,11,10,11,11,13,12,13,15,14,15,15,10,10,
-	10,10,12,13,13,12,15,14,15,15,13,10,10,11,11,13,
-	13,13,12,13,13,15,15,15,14,15,11,11,13,13,13,13,
-	14,15,15,15,15,13,13,11,11,12,13,13,14,13,15,15,
-	15,14,15,15,13,12,12,11,13,13,15,15,15,15,15,15,
-	14,13,12,13,12,15,13,15,15,
-};
-
-static float _vq_quantthresh__44c1_s_p9_1[] = {
-	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
-	42.5, 59.5, 76.5, 93.5, 
-};
-
-static long _vq_quantmap__44c1_s_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p9_1 = {
-	_vq_quantthresh__44c1_s_p9_1,
-	_vq_quantmap__44c1_s_p9_1,
-	13,
-	13
-};
-
-static static_codebook _44c1_s_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c1_s_p9_1,
-	1, -522616832, 1620115456, 4, 0,
-	_vq_quantlist__44c1_s_p9_1,
-	NULL,
-	&_vq_auxt__44c1_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_s_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
+	37,
 	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c1_s_p9_2[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 8, 9, 9,
-	 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9,10,10,11,10, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9,10, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,11, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,11, 9, 9,
-	 9, 9, 9, 9,10, 9,10, 9, 9, 9,10,10,10,11,10, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
-	11,11,10, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	11,11,11,10, 9,10,10,10, 9, 9, 9, 9,10, 9,10,10,
-	10,10,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	11,10,10,10,10,10,10, 9, 9, 9, 9,10, 9, 9, 9, 9,
-	10,10,10,11,11,10,10,11,11, 9, 9,10, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44c1_s_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c1_s_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_s_p9_2 = {
-	_vq_quantthresh__44c1_s_p9_2,
-	_vq_quantmap__44c1_s_p9_2,
-	17,
-	17
-};
-
-static static_codebook _44c1_s_p9_2 = {
-	2, 289,
-	_vq_lengthlist__44c1_s_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c1_s_p9_2,
-	NULL,
-	&_vq_auxt__44c1_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c1_s_short[] = {
-	 5, 7,17,13,12,12,14,16,15,16, 4, 2,17, 5, 7, 6,
-	 8,11,14,13,16,16,16,16,16,16,16,16,16,16,10, 4,
-	16, 4, 8, 6, 7,11,14,14,10, 5,16, 6, 5, 6, 8,12,
-	15,15,10, 5,16, 5, 6, 5, 7,10,14,15,11, 6,16, 7,
-	 8, 7, 7,10,14,14,13, 8,16, 8, 7, 7, 8,10,12,13,
-	12, 8,16, 7, 5, 5, 6, 8,11,13,13, 9,16, 9, 6, 6,
-	 7, 8,10,13,
-};
-
-static static_codebook _huff_book__44c1_s_short = {
-	2, 100,
-	_huff_lengthlist__44c1_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c1_sm_long[] = {
-	 3, 4,10, 9,11, 9,10,11,11,13, 4, 2,11, 5, 7, 7,
-	 8,10,12,13,10,10, 7,12, 8, 9, 9,10,12,13, 8, 5,
-	13, 6, 9, 7,10,12,15,15,10, 6, 7, 8, 5, 5, 7,10,
-	12,13, 9, 6, 8, 7, 5, 5, 6, 9,11,12, 9, 8, 9, 9,
-	 6, 5, 5, 7,10,13,10,10,10,12, 9, 7, 6, 7, 9,13,
-	10,13,11,17,11,11, 9, 8, 9,12,12,16,14,17,15,14,
-	12,10,10,12,
-};
-
-static static_codebook _huff_book__44c1_sm_long = {
-	2, 100,
-	_huff_lengthlist__44c1_sm_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c1_sm_p1_0[] = {
-	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_sm_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p1_0 = {
-	_vq_quantthresh__44c1_sm_p1_0,
-	_vq_quantmap__44c1_sm_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44c1_sm_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c1_sm_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c1_sm_p1_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_sm_p2_0[] = {
-	 1, 5, 5, 0, 0, 0, 5, 6, 0, 0, 0, 5, 6, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 8,
-	 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0,
-	 0, 8, 8, 0, 0, 0,10, 9, 0, 0, 0, 0, 0, 0, 0, 6,
-	 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9,
-	10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
-	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
-	 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
-	10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
-	10, 0, 0, 0,10, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_sm_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p2_0 = {
-	_vq_quantthresh__44c1_sm_p2_0,
-	_vq_quantmap__44c1_sm_p2_0,
-	5,
-	5
-};
-
-static static_codebook _44c1_sm_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c1_sm_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_sm_p2_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_sm_p3_0[] = {
-	 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 7, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_sm_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p3_0 = {
-	_vq_quantthresh__44c1_sm_p3_0,
-	_vq_quantmap__44c1_sm_p3_0,
-	5,
-	5
-};
-
-static static_codebook _44c1_sm_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c1_sm_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_sm_p3_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44c1_sm_p4_0[] = {
-	 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0,
-	 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c1_sm_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p4_0 = {
-	_vq_quantthresh__44c1_sm_p4_0,
-	_vq_quantmap__44c1_sm_p4_0,
+	38,
 	9,
-	9
-};
-
-static static_codebook _44c1_sm_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c1_sm_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c1_sm_p4_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
+	39,
 	8,
-};
-
-static long _vq_lengthlist__44c1_sm_p5_0[] = {
-	 2, 3, 3, 5, 5, 6, 6, 8, 8, 0, 5, 5, 6, 6, 7, 7,
-	 9, 9, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
-	 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
-	 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
-	 0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 8, 8,10,
-	10,
-};
-
-static float _vq_quantthresh__44c1_sm_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p5_0 = {
-	_vq_quantthresh__44c1_sm_p5_0,
-	_vq_quantmap__44c1_sm_p5_0,
-	9,
-	9
-};
-
-static static_codebook _44c1_sm_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c1_sm_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c1_sm_p5_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p6_0[] = {
-	8,
+	40,
 	7,
-	9,
+	41,
 	6,
-	10,
+	42,
 	5,
-	11,
+	43,
 	4,
-	12,
+	44,
 	3,
-	13,
+	45,
 	2,
-	14,
+	46,
 	1,
-	15,
+	47,
 	0,
-	16,
+	48,
 };
 
-static long _vq_lengthlist__44c1_sm_p6_0[] = {
-	 2, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
-	11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
-	10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,
-	10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9,
-	 9,10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8,10,10,
-	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,10,
-	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,
-	 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8,
-	 8, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	 9, 9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,10,10,11,11,11,11,13,12,13,13, 0, 0,
-	 0, 0, 0, 0, 0,10,10,11,11,11,11,13,13,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,13,12,14,
-	14,
+static const char _vq_lengthlist__16c2_s_p9_2[] = {
+	 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+	 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
 };
 
-static float _vq_quantthresh__44c1_sm_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p6_0 = {
-	_vq_quantthresh__44c1_sm_p6_0,
-	_vq_quantmap__44c1_sm_p6_0,
-	17,
-	17
-};
-
-static static_codebook _44c1_sm_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c1_sm_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c1_sm_p6_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p6_0,
-	NULL,
+static const static_codebook _16c2_s_p9_2 = {
+	1, 49,
+	(char *)_vq_lengthlist__16c2_s_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	(long *)_vq_quantlist__16c2_s_p9_2,
 	0
 };
 
-static long _vq_quantlist__44c1_sm_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c1_sm_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,10,10,10, 6, 9, 9,10,10,10,10, 9, 9, 6, 9, 9,
-	10,10,10,10,10, 9, 7,10,10,11,10,10,11,11,11, 6,
-	 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9, 9,11,10,
-	10,
-};
-
-static float _vq_quantthresh__44c1_sm_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_0 = {
-	_vq_quantthresh__44c1_sm_p7_0,
-	_vq_quantmap__44c1_sm_p7_0,
-	3,
-	3
-};
-
-static static_codebook _44c1_sm_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c1_sm_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c1_sm_p7_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c1_sm_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8,10, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 9, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44c1_sm_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_1 = {
-	_vq_quantthresh__44c1_sm_p7_1,
-	_vq_quantmap__44c1_sm_p7_1,
-	11,
-	11
+static const char _huff_lengthlist__16c2_s_short[] = {
+	 7,10,12,11,12,13,15,16,18,15,10, 8, 8, 8, 9,10,
+	12,13,14,17,10, 7, 7, 7, 7, 8,10,12,15,18,10, 7,
+	 7, 5, 5, 6, 8,10,13,15,10, 7, 6, 5, 4, 4, 6, 9,
+	12,15,11, 7, 7, 5, 4, 3, 4, 7,11,13,12, 9, 8, 7,
+	 5, 4, 4, 5,10,13,11,11,11, 9, 7, 5, 5, 5, 9,12,
+	13,12,13,12,10, 8, 8, 7, 9,13,14,14,14,14,13,11,
+	11,10,10,13,
 };
 
-static static_codebook _44c1_sm_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c1_sm_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c1_sm_p7_1,
-	NULL,
-	&_vq_auxt__44c1_sm_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c1_sm_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 9, 9, 9,10,10,11,11,12,11, 0,13,
-	13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0, 9, 9,
-	 9, 9,10,10,11,12,12,12, 0, 0, 0,10,10, 9, 9,11,
-	11,12,12,13,13, 0, 0, 0,13,13,10,10,11,11,12,12,
-	13,13, 0, 0, 0,14,14,10,10,11,10,12,12,13,13, 0,
-	 0, 0, 0, 0,12,11,11,11,12,12,14,13, 0, 0, 0, 0,
-	 0,12,12,11,10,12,12,14,13,
-};
-
-static float _vq_quantthresh__44c1_sm_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_0 = {
-	_vq_quantthresh__44c1_sm_p8_0,
-	_vq_quantmap__44c1_sm_p8_0,
-	13,
-	13
-};
-
-static static_codebook _44c1_sm_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c1_sm_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c1_sm_p8_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c1_sm_p8_1[] = {
-	 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c1_sm_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_1 = {
-	_vq_quantthresh__44c1_sm_p8_1,
-	_vq_quantmap__44c1_sm_p8_1,
-	5,
-	5
-};
-
-static static_codebook _44c1_sm_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c1_sm_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c1_sm_p8_1,
-	NULL,
-	&_vq_auxt__44c1_sm_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c1_sm_p9_0[] = {
-	 1, 5, 5,11,11,11,11,11,11,11,11,11,11, 4, 5, 5,
-	11,10,11,11,11,11,11,11,11,11, 4, 5, 4,11,11,11,
-	11,11,11,11,11,11,11,11, 6, 7,11, 9,11,11,11,11,
-	11,11,11,11,11, 6, 7, 9, 8,11,11,11,11,11,11,11,
-	11,11, 9, 9, 7, 8,11,11,11,11,11,11,11,11,11,10,
-	10, 9,10,11,11,11,11,11,11,11,11,11,11,11, 8,11,
-	10,10,11,11,11,11,11,11,11,11,11, 9,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11, 9,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,10,10,10,10,10,
-};
-
-static float _vq_quantthresh__44c1_sm_p9_0[] = {
-	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
-	552.5, 773.5, 994.5, 1215.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_0 = {
-	_vq_quantthresh__44c1_sm_p9_0,
-	_vq_quantmap__44c1_sm_p9_0,
-	13,
-	13
-};
-
-static static_codebook _44c1_sm_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c1_sm_p9_0,
-	1, -514541568, 1627103232, 4, 0,
-	_vq_quantlist__44c1_sm_p9_0,
-	NULL,
-	&_vq_auxt__44c1_sm_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c1_sm_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7,10,10,12,12,13,13, 6, 5, 5,
-	 7, 7, 8, 8,10,10,12,12,14,13, 6, 5, 5, 7, 7, 8,
-	 8,10,10,12,12,13,13,16, 7, 7, 7, 7, 9, 9,11,11,
-	13,14,13,15,18, 7, 6, 8, 7, 9, 9,11,10,12,12,14,
-	12,19,10,10, 8, 8,10,10,12,11,13,15,15,15,17,11,
-	11, 8, 7,11,10,12,12,13,13,14,15,16,17,17,10,11,
-	10,10,13,13,14,13,16,15,17,17,16,10,10,11,11,14,
-	14,16,13,14,14,17,19,17,15,14,11,11,13,13,15,14,
-	16,15,17,16,17,14,14,11,11,14,13,14,14,14,15,17,
-	16,16,16,17,13,13,13,13,16,14,17,15,16,17,18,18,
-	17,13,13,13,13,15,15,16,16,
-};
-
-static float _vq_quantthresh__44c1_sm_p9_1[] = {
-	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
-	42.5, 59.5, 76.5, 93.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_1 = {
-	_vq_quantthresh__44c1_sm_p9_1,
-	_vq_quantmap__44c1_sm_p9_1,
-	13,
-	13
-};
-
-static static_codebook _44c1_sm_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c1_sm_p9_1,
-	1, -522616832, 1620115456, 4, 0,
-	_vq_quantlist__44c1_sm_p9_1,
-	NULL,
-	&_vq_auxt__44c1_sm_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c1_sm_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c1_sm_p9_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10, 9,10,10,10, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11, 8, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,10,11,11, 9, 9,
-	 9, 9, 9, 9, 9,10,10, 9, 9, 9,10,11,10,11,11, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,10,11,
-	11,10,11, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
-	11,11,11,11, 9,10,10,10, 9, 9, 9, 9,10, 9,10,10,
-	10,11,11,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	11,10,11,10,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,11,11,10,10,10,11, 9, 9, 9, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44c1_sm_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c1_sm_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c1_sm_p9_2 = {
-	_vq_quantthresh__44c1_sm_p9_2,
-	_vq_quantmap__44c1_sm_p9_2,
-	17,
-	17
-};
-
-static static_codebook _44c1_sm_p9_2 = {
-	2, 289,
-	_vq_lengthlist__44c1_sm_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c1_sm_p9_2,
-	NULL,
-	&_vq_auxt__44c1_sm_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c1_sm_short[] = {
-	 4, 7,13,13,13,13,14,16,16,19, 4, 2,13, 5, 8, 7,
-	 9,12,14,13,16, 9,10,10, 9,10,11,13,17,19, 9, 4,
-	13, 5,10, 6, 8,11,15,15,11, 6, 9, 7, 6, 6, 8,11,
-	14,18,11, 5, 9, 6, 6, 5, 6, 9,13,15,12, 6, 9, 7,
-	 6, 5, 5, 8,12,15,13, 7,10, 8, 6, 6, 7, 9,12,13,
-	13, 9,11, 9, 6, 5, 6, 8,11,13,13,11,13,11, 7, 6,
-	 7, 8,10,12,
-};
-
-static static_codebook _huff_book__44c1_sm_short = {
+static const static_codebook _huff_book__16c2_s_short = {
 	2, 100,
-	_huff_lengthlist__44c1_sm_short,
+	(char *)_huff_lengthlist__16c2_s_short,
 	0, 0, 0, 0, 0,
 	NULL,
-	NULL,
-	NULL,
-	NULL,
 	0
 };
 
-static long _huff_lengthlist__44c2_s_long[] = {
-	 5, 5,12,10,11,10,10,10,11,13, 5, 1, 9, 5, 8, 7,
-	 8,10,13,13,12, 9, 8,11, 7, 8, 9,11,13,15, 9, 5,
-	12, 6, 9, 8,10,12,15,14,12, 7, 6, 8, 5, 6, 7,10,
-	12,13,10, 7, 8, 7, 6, 6, 7, 9,12,12,10, 8, 9, 9,
-	 7, 6, 6, 7,10,11,10, 9,10,11, 9, 8, 6, 6, 8,11,
-	10,12,13,15,11,10, 8, 7, 8,11,11,13,16,16,14,13,
-	11, 9, 9,10,
+static const long _vq_quantlist__8c0_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _huff_book__44c2_s_long = {
-	2, 100,
-	_huff_lengthlist__44c2_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p1_0[] = {
+         1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+         0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
+         0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,10, 0, 0,
+         0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 9,11,11,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
+         0, 0, 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,11,11,
+         0, 0, 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c2_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _8c0_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__8c0_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8c0_s_p1_0,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p1_0[] = {
-	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
-	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
-	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
-	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
-	 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__8c0_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44c2_s_p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__8c0_s_p3_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 8, 8,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__44c2_s_p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _8c0_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8c0_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8c0_s_p3_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p1_0 = {
-	_vq_quantthresh__44c2_s_p1_0,
-	_vq_quantmap__44c2_s_p1_0,
-	3,
-	3
+static const long _vq_quantlist__8c0_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _44c2_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c2_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c2_s_p1_0,
-	NULL,
-	&_vq_auxt__44c2_s_p1_0,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p4_0[] = {
+         1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c2_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _8c0_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8c0_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c0_s_p4_0,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p2_0[] = {
-	 1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,
-	 7, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
-	 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
-	 0, 0, 4, 6, 6, 0, 0, 0, 8, 9, 0, 0, 0, 8, 8, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,11,10, 0, 0,
-	 0,11,11, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 7,
-	 8, 8, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0, 0,11,
-	11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 8, 8, 0, 0, 0,11,11, 0, 0, 0,11,11,
-	 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0,
-	 0, 0,11,11, 0, 0, 0,11,11, 0, 0, 0,11,11, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7, 9, 9, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
-	12,11, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,12,
-	11, 0, 0, 0,11,11, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__8c0_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__44c2_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__8c0_s_p5_0[] = {
+         1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+         8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8,
+         8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0,
+         9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static long _vq_quantmap__44c2_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _8c0_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8c0_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c0_s_p5_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p2_0 = {
-	_vq_quantthresh__44c2_s_p2_0,
-	_vq_quantmap__44c2_s_p2_0,
-	5,
-	5
+static const long _vq_quantlist__8c0_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _44c2_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c2_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c2_s_p2_0,
-	NULL,
-	&_vq_auxt__44c2_s_p2_0,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p6_0[] = {
+         1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11,
+        11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,12,11, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,11,
+        10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,
+        11,11,11,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,
+        10,11,11,12,12,13,13, 0, 0, 0,10,10,10,10,11,11,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10, 9,10,
+        11,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10, 9,10,11,12,12,13,13,14,13, 0, 0, 0, 0, 0, 9,
+         9, 9,10,10,10,11,11,13,12,13,13, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,13,13,13,14, 0, 0, 0,
+         0, 0, 0, 0,11,11,11,11,12,12,13,14,14,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,13, 0,
+         0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,14,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+        14,
 };
 
-static long _vq_quantlist__44c2_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _8c0_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__8c0_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8c0_s_p6_0,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p3_0[] = {
-	 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__8c0_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44c2_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__8c0_s_p7_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12,
+         9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11,
+        12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10,
+        11,11,11,11,10,10, 7,10,11,12,11,11,12,11,12, 6,
+         9, 9,10, 9, 9,11,10,10, 6, 9, 9,10,10,10,11,10,
+        10,
 };
 
-static long _vq_quantmap__44c2_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _8c0_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8c0_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__8c0_s_p7_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p3_0 = {
-	_vq_quantthresh__44c2_s_p3_0,
-	_vq_quantmap__44c2_s_p3_0,
-	5,
-	5
+static const long _vq_quantlist__8c0_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static static_codebook _44c2_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c2_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c2_s_p3_0,
-	NULL,
-	&_vq_auxt__44c2_s_p3_0,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p7_1[] = {
+         1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7,
+         8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9,
+         9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8,
+         8, 9, 9, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9,10,
+        10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,11,10,11,
+         9, 9, 9, 9,10,10,10,10,11,11,11,10,10, 9, 9,10,
+        10,10, 9,11,10,10,10,10,10,10, 9, 9,10,10,11,11,
+        10,10,10, 9, 9, 9,10,10,10,
 };
 
-static long _vq_quantlist__44c2_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _8c0_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__8c0_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c0_s_p7_1,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p4_0[] = {
-	 1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0,
-	 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__8c0_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static float _vq_quantthresh__44c2_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__8c0_s_p8_0[] = {
+         1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6,
+         7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8,
+         7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8,
+         9, 9,10,10, 0, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9,11,
+        10, 0, 0,13, 9, 8, 9, 9, 9, 9,10,10,11,11, 0,13,
+         0, 9, 9, 9, 9, 9, 9,11,10,11,11, 0, 0, 0, 8, 9,
+        10, 9,10,10,13,11,12,12, 0, 0, 0, 8, 9, 9, 9,10,
+        10,13,12,12,13, 0, 0, 0,12, 0,10,10,12,11,10,11,
+        12,12, 0, 0, 0,13,13,10,10,10,11,12, 0,13, 0, 0,
+         0, 0, 0, 0,13,11, 0,12,12,12,13,12, 0, 0, 0, 0,
+         0, 0,13,13,11,13,13,11,12,
 };
 
-static long _vq_quantmap__44c2_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _8c0_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__8c0_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__8c0_s_p8_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p4_0 = {
-	_vq_quantthresh__44c2_s_p4_0,
-	_vq_quantmap__44c2_s_p4_0,
-	9,
-	9
+static const long _vq_quantlist__8c0_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _44c2_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c2_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c2_s_p4_0,
-	NULL,
-	&_vq_auxt__44c2_s_p4_0,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p8_1[] = {
+         1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7,
+         7, 7, 6, 6, 7, 7, 7, 6, 6,
 };
 
-static long _vq_quantlist__44c2_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _8c0_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__8c0_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8c0_s_p8_1,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p5_0[] = {
-	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 7, 7, 7, 7, 8, 8,
-	 9, 9, 0, 7, 7, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 7,
-	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
-	 8, 8, 9, 9,10,10, 0, 0, 0, 8, 8, 9, 9,10,10, 0,
-	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
-	11,
+static const long _vq_quantlist__8c0_s_p9_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44c2_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__8c0_s_p9_0[] = {
+         1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static long _vq_quantmap__44c2_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _8c0_s_p9_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8c0_s_p9_0,
+        1, -518803456, 1628680192, 2, 0,
+        (long *)_vq_quantlist__8c0_s_p9_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p5_0 = {
-	_vq_quantthresh__44c2_s_p5_0,
-	_vq_quantmap__44c2_s_p5_0,
-	9,
-	9
+static const long _vq_quantlist__8c0_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static static_codebook _44c2_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c2_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c2_s_p5_0,
-	NULL,
-	&_vq_auxt__44c2_s_p5_0,
-	NULL,
-	0
+static const char _vq_lengthlist__8c0_s_p9_1[] = {
+         1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6,
+         6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5,
+         6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8,
+         8, 8, 9, 9,11,11,11,11,11,11,11,11,11, 9, 8, 7,
+         8, 9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,
 };
 
-static long _vq_quantlist__44c2_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const static_codebook _8c0_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__8c0_s_p9_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__8c0_s_p9_1,
+        0
 };
 
-static long _vq_lengthlist__44c2_s_p6_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
-	11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
-	10,11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9, 9, 9,
-	10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9, 9,
-	 9,10,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
-	 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9,
-	 9, 9, 9,10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0,
-	10,10,10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,11,12,12,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,14,13,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,13,13,
-	14,
+static const long _vq_quantlist__8c0_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static float _vq_quantthresh__44c2_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const char _vq_lengthlist__8c0_s_p9_2[] = {
+         1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10,
+        11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10,
+        10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7,
+         7, 8, 9,10,10,10, 9,10,10, 9,10,10,11,11,11,11,
+        11,11, 9, 9, 9, 9, 8, 9,10,10,11,10,10,11,11,12,
+        10,10,12,12,11,11,10, 9, 9,10, 8, 9,10,10,10, 9,
+        10,10,11,11,10,11,10,10,10,12,12,12, 9,10, 9,10,
+         9, 9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,
+        12,10,11,10,11, 9,10, 9,10, 9,10,10, 9,10,10,11,
+        10,11,11,11,11,12,11, 9,10,10,10,10,11,11,11,11,
+        11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,
+        10, 9,11,10,11, 9,10,11,10,10,10,11,11,11,11,12,
+        12,10, 9, 9,11,10, 9,12,11,10,12,12,11,11,11,11,
+        10,11,11,12,11,10,12, 9,11,10,11,10,10,11,10,11,
+         9,10,10,10,11,12,11,11,12,11,10,10,11,11, 9,10,
+        10,12,10,11,10,10,10, 9,10,10,10,10, 9,10,10,11,
+        11,11,11,12,11,10,10,10,10,11,11,10,11,11, 9,11,
+        10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,
+        11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,
+        10,11,10,10,11,11,10,12,10, 9,10,10,11,11,11,10,
+        12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,
+        12,11,11,10,10,10,12,10,10,11, 9,10,11,11,11,10,
+        10,11,10,10, 9,11,11,12,12,11,12,11,11,11,11,11,
+        11, 9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,
+        12,10,10,10,10,10, 9,12,10,10,10,10,12, 9,11,10,
+        10,11,10,12,12,10,12,12,12,10,10,10,10, 9,10,11,
+        10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,
+        10,11, 9,11,10, 9,10, 9,10,
 };
 
-static long _vq_quantmap__44c2_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const static_codebook _8c0_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__8c0_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8c0_s_p9_2,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p6_0 = {
-	_vq_quantthresh__44c2_s_p6_0,
-	_vq_quantmap__44c2_s_p6_0,
-	17,
-	17
+static const char _huff_lengthlist__8c0_s_single[] = {
+         4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5,
+         6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4,
+        17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9,
+        11,15, 6, 4,17, 6, 6, 4, 5, 8,11,16, 6, 6,17, 8,
+         6, 5, 6, 9,13,16, 8, 9,17,11, 9, 8, 8,11,13,17,
+         9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,
+        17,16,17,17,
 };
 
-static static_codebook _44c2_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c2_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c2_s_p6_0,
-	NULL,
-	&_vq_auxt__44c2_s_p6_0,
-	NULL,
-	0
+static const static_codebook _huff_book__8c0_s_single = {
+        2, 100,
+        (char *)_huff_lengthlist__8c0_s_single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__8c1_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c2_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10, 9,10,10,
-	10,11,10,10, 6, 9, 9,10,10,10,11, 9, 9, 6, 9, 9,
-	10,10,10,11, 9, 9, 7,10,10,11,10,10,11,11,10, 6,
-	 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10, 9,10,11,10,
-	10,
+static const char _vq_lengthlist__8c1_s_p1_0[] = {
+         1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+         0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c2_s_p7_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _8c1_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__8c1_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8c1_s_p1_0,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p7_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__8c1_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p7_0 = {
-	_vq_quantthresh__44c2_s_p7_0,
-	_vq_quantmap__44c2_s_p7_0,
-	3,
-	3
+static const char _vq_lengthlist__8c1_s_p3_0[] = {
+         2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c2_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c2_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c2_s_p7_0,
-	NULL,
-	&_vq_auxt__44c2_s_p7_0,
-	NULL,
-	0
+static const static_codebook _8c1_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8c1_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8c1_s_p3_0,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__8c1_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c2_s_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7,10, 6, 6, 6, 6,
-	 7, 7, 8, 7, 8, 8, 9, 6, 6, 6, 6, 7, 7, 7, 7, 7,
-	 7,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10, 9, 9, 6,
-	 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10, 9, 8, 8, 8,
-	 8, 8, 8,10,10,10, 9,10, 8, 8, 8, 8, 8, 8,10,10,
-	10,10, 9, 8, 8, 8, 8, 8, 8,
+static const char _vq_lengthlist__8c1_s_p4_0[] = {
+         1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c2_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _8c1_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8c1_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p4_0,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__8c1_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p7_1 = {
-	_vq_quantthresh__44c2_s_p7_1,
-	_vq_quantmap__44c2_s_p7_1,
-	11,
-	11
+static const char _vq_lengthlist__8c1_s_p5_0[] = {
+         1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7,
+         9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10,
+         8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0,
+        11,10, 8, 8,10,10, 0, 0, 0,11,11, 8, 8,10,10, 0,
+         0, 0,12,12, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static static_codebook _44c2_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c2_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c2_s_p7_1,
-	NULL,
-	&_vq_auxt__44c2_s_p7_1,
-	NULL,
-	0
+static const static_codebook _8c1_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8c1_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p5_0,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__8c1_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__44c2_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 9, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
-	 8, 8, 9,10, 9,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9,10,10,10,11,
-	11, 0,12,12, 9, 9,10,10,10,10,11,11,12,12, 0,13,
-	12, 9, 9,10, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
-	10,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
-	11,12,12,12,13, 0, 0, 0,13,13,10,10,11,11,12,12,
-	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
-	 0, 0, 0, 0,12,12,11,12,12,12,14,13, 0, 0, 0, 0,
-	 0,12,12,12,12,12,12,14,13,
+static const char _vq_lengthlist__8c1_s_p6_0[] = {
+         1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11,
+        11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,11,
+        12,12,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,
+        11,12,12,12,12, 0, 0, 0,10,10, 9, 9,10,10,10,10,
+        11,11,12,12,13,13, 0, 0, 0,10,10, 9, 9,10,10,10,
+        10,11,11,12,12,13,13, 0, 0, 0,11,11, 9, 9,10,10,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,11,12,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,11,11,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,11,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+        14,
 };
 
-static float _vq_quantthresh__44c2_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _8c1_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__8c1_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8c1_s_p6_0,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__8c1_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p8_0 = {
-	_vq_quantthresh__44c2_s_p8_0,
-	_vq_quantmap__44c2_s_p8_0,
-	13,
-	13
+static const char _vq_lengthlist__8c1_s_p7_0[] = {
+         1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
+         9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
+        10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9,
+        10, 9, 9,11, 9,10, 7,10,10,11,11,11,11,10,10, 6,
+         9, 9,10,10,10,11, 9, 9, 6, 9, 9,10,10,10,10, 9,
+         9,
 };
 
-static static_codebook _44c2_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c2_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c2_s_p8_0,
-	NULL,
-	&_vq_auxt__44c2_s_p8_0,
-	NULL,
-	0
+static const static_codebook _8c1_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8c1_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__8c1_s_p7_0,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__8c1_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44c2_s_p8_1[] = {
-	 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+static const char _vq_lengthlist__8c1_s_p7_1[] = {
+         2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+         8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__44c2_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _8c1_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__8c1_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p7_1,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__8c1_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p8_1 = {
-	_vq_quantthresh__44c2_s_p8_1,
-	_vq_quantmap__44c2_s_p8_1,
-	5,
-	5
+static const char _vq_lengthlist__8c1_s_p8_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5,
+         7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+         9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9, 9,10, 9,10,11,11,11, 0,13,
+        12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
+         9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,11,
+        13,12, 0, 0, 0,14,14,10,10,11,10,11,11,12,12, 0,
+         0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
+         0,12,12,11,10,12,11,13,12,
 };
 
-static static_codebook _44c2_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c2_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c2_s_p8_1,
-	NULL,
-	&_vq_auxt__44c2_s_p8_1,
-	NULL,
-	0
+static const static_codebook _8c1_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__8c1_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p8_0,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__8c1_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c2_s_p9_0[] = {
-	 1, 5, 4,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 7,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 6, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const char _vq_lengthlist__8c1_s_p8_1[] = {
+         2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__44c2_s_p9_0[] = {
-	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
-	552.5, 773.5, 994.5, 1215.5, 
+static const static_codebook _8c1_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__8c1_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8c1_s_p8_1,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__8c1_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p9_0 = {
-	_vq_quantthresh__44c2_s_p9_0,
-	_vq_quantmap__44c2_s_p9_0,
-	13,
-	13
+static const char _vq_lengthlist__8c1_s_p9_0[] = {
+         1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6,
+        10,10,10,10,10,10,10,10,10,10, 6, 7, 8,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10, 9, 9, 9, 9,
 };
 
-static static_codebook _44c2_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c2_s_p9_0,
-	1, -514541568, 1627103232, 4, 0,
-	_vq_quantlist__44c2_s_p9_0,
-	NULL,
-	&_vq_auxt__44c2_s_p9_0,
-	NULL,
-	0
+static const static_codebook _8c1_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__8c1_s_p9_0,
+        1, -513964032, 1628680192, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p9_0,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__8c1_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44c2_s_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 9,11,11,12,12, 6, 5, 5,
-	 7, 7, 8, 8,10,10,12,11,13,13, 6, 5, 5, 7, 7, 8,
-	 8, 9, 9,11,11,12,13,16, 7, 7, 8, 8, 9, 9,10,10,
-	13,13,16,14,16, 7, 7, 8, 8, 9, 9,10,10,13,13,15,
-	13,16,10,10, 8, 8,10,10,11,11,12,12,15,14,16,11,
-	11, 8, 8,10,10,11,11,12,12,14,13,16,16,16,10,11,
-	10,10,12,12,14,13,13,13,16,16,16,10, 9,10, 7,13,
-	12,13,13,13,13,16,16,16,14,15,11,11,12,12,13,13,
-	15,14,16,16,16,16,14,11, 9,12, 9,15,13,13,14,16,
-	16,16,16,16,13,13,12,12,14,15,16,15,16,16,15,16,
-	16,13,12,12,11,15,13,14,15,
+static const char _vq_lengthlist__8c1_s_p9_1[] = {
+         1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6,
+         5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5,
+         5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7,
+         8, 8,10,10,11,11,12,13,13,13,13,13,17, 7, 7, 8,
+         8,10,10,11,11,13,13,13,13,14,14,17,11,11, 9, 9,
+        11,11,12,12,12,13,13,14,15,13,17,12,12, 9, 9,11,
+        11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,
+        13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,
+        13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,
+        15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,
+        15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,
+        14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,
+        15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,
+        17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,
+        15,
 };
 
-static float _vq_quantthresh__44c2_s_p9_1[] = {
-	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
-	42.5, 59.5, 76.5, 93.5, 
+static const static_codebook _8c1_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__8c1_s_p9_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__8c1_s_p9_1,
+        0
 };
 
-static long _vq_quantmap__44c2_s_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__8c1_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p9_1 = {
-	_vq_quantthresh__44c2_s_p9_1,
-	_vq_quantmap__44c2_s_p9_1,
-	13,
-	13
+static const char _vq_lengthlist__8c1_s_p9_2[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9,
+         9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7,
+         7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,11,
+        11,12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+         9,10,10,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
+        11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
+        10,10,10,11,12,11, 9, 9, 8, 9, 9, 9, 9, 9,10,10,
+        10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
+         9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,12,11,
+        12,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+        10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
+        10,10,10,10,10,10,10,12,11,12,11,11, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,
+        11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,
+        10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,
+        11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,
+        10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,
+        11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+        11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
+        12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,
+        10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static static_codebook _44c2_s_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c2_s_p9_1,
-	1, -522616832, 1620115456, 4, 0,
-	_vq_quantlist__44c2_s_p9_1,
-	NULL,
-	&_vq_auxt__44c2_s_p9_1,
-	NULL,
-	0
+static const static_codebook _8c1_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__8c1_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8c1_s_p9_2,
+        0
 };
 
-static long _vq_quantlist__44c2_s_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const char _huff_lengthlist__8c1_s_single[] = {
+         4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5,
+         6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5,
+        17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10,
+        10,13, 7, 5,17, 6, 8, 4, 5, 6, 8,10, 6, 5,17, 6,
+         8, 5, 4, 5, 7, 9, 7, 7,17, 8, 9, 6, 5, 5, 6, 8,
+         8, 8,17, 9,11, 8, 6, 6, 6, 7, 9,10,17,12,12,10,
+         9, 7, 7, 8,
 };
 
-static long _vq_lengthlist__44c2_s_p9_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
-	 9,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,11,10, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 8, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,10,11,10, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,11,11,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,11,10,10,11,
-	10,10,11, 9, 9,10,10, 9, 9,10,10, 9, 9,10,10,10,
-	11,10,11,10,10, 9, 9,10, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,11,10,10, 9,10, 9, 9, 9, 9,10, 9, 9, 9,10,
-	10,10,11,11,10,10,10,10, 9, 9,10, 9, 9, 9,10, 9,
-	10,10,10,10,11,10,11,11,10, 9, 9, 9, 9, 9, 9, 9,
-	10,
+static const static_codebook _huff_book__8c1_s_single = {
+        2, 100,
+        (char *)_huff_lengthlist__8c1_s_single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c2_s_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const char _huff_lengthlist__44c2_s_long[] = {
+         6, 6,12,10,10,10, 9,10,12,12, 6, 1,10, 5, 6, 6,
+         7, 9,11,14,12, 9, 8,11, 7, 8, 9,11,13,15,10, 5,
+        12, 7, 8, 7, 9,12,14,15,10, 6, 7, 8, 5, 6, 7, 9,
+        12,14, 9, 6, 8, 7, 6, 6, 7, 9,12,12, 9, 7, 9, 9,
+         7, 6, 6, 7,10,10,10, 9,10,11, 8, 7, 6, 6, 8,10,
+        12,11,13,13,11,10, 8, 8, 8,10,11,13,15,15,14,13,
+        10, 8, 8, 9,
 };
 
-static long _vq_quantmap__44c2_s_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const static_codebook _huff_book__44c2_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c2_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c2_s_p9_2 = {
-	_vq_quantthresh__44c2_s_p9_2,
-	_vq_quantmap__44c2_s_p9_2,
-	17,
-	17
+static const long _vq_quantlist__44c2_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44c2_s_p9_2 = {
-	2, 289,
-	_vq_lengthlist__44c2_s_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c2_s_p9_2,
-	NULL,
-	&_vq_auxt__44c2_s_p9_2,
-	NULL,
-	0
+static const char _vq_lengthlist__44c2_s_p1_0[] = {
+         2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+         0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+         0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _huff_lengthlist__44c2_s_short[] = {
-	 9, 9,12,11,11,11,12,12,12,13, 6, 2, 9, 4, 7, 6,
-	 8,11,15,17,12, 7, 8, 9, 7, 9,10,13,15,17,11, 4,
-	12, 4, 9, 5, 8,11,16,17,12, 6, 7, 6, 6, 6, 8,11,
-	15,17,11, 5, 9, 5, 6, 5, 6,10,15,15,12, 7,11, 7,
-	 7, 6, 7,10,13,16,13, 8,11, 9, 8, 6, 7,10,12,16,
-	13, 9, 9, 8, 5, 5, 6, 9,12,14,16,10, 9, 9, 6, 5,
-	 6, 8,11,14,
+static const static_codebook _44c2_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c2_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c2_s_p1_0,
+        0
 };
 
-static static_codebook _huff_book__44c2_s_short = {
-	2, 100,
-	_huff_lengthlist__44c2_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44c2_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _huff_lengthlist__44c3_s_long[] = {
-	 4, 5,11,10,12,10,10,10,11,12, 4, 2,11, 5,11, 6,
-	 7, 9,13,16,11,11, 7,11, 6, 8, 8, 9,11,12,10, 5,
-	11, 6,10, 7, 9,11,16,16,14, 9, 6, 9, 4, 5, 7, 8,
-	11,13,10, 6, 7, 7, 5, 5, 6, 8,10,11,10, 7, 8, 8,
-	 6, 6, 5, 7, 9,10,10, 9, 8,11, 8, 7, 6, 6, 7,10,
-	10,12,10,14, 9, 9, 7, 7, 7, 9,10,14,11,16,12,12,
-	 9, 8, 8, 9,
+static const char _vq_lengthlist__44c2_s_p2_0[] = {
+         1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
+         8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
+         0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,11,11, 0, 0,
+         0,11,11, 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 7,
+         8, 8, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0, 0,11,
+        12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0,11,11, 0, 0, 0,11,11,
+         0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
+         0, 0,10,11, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         8, 9, 9, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
+        12,11, 0, 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0,12,
+        11, 0, 0, 0,12,11, 0, 0, 0,11,12, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _huff_book__44c3_s_long = {
-	2, 100,
-	_huff_lengthlist__44c3_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _44c2_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c2_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c2_s_p2_0,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c2_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c3_s_p1_0[] = {
-	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
-	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
-	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
-	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
-	 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c2_s_p3_0[] = {
+         2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c3_s_p1_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _44c2_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c2_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c2_s_p3_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p1_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c2_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p1_0 = {
-	_vq_quantthresh__44c3_s_p1_0,
-	_vq_quantmap__44c3_s_p1_0,
-	3,
-	3
+static const char _vq_lengthlist__44c2_s_p4_0[] = {
+         1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0,
+         0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 7, 7, 6, 6,
+         0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
+         7, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c3_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c3_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c3_s_p1_0,
-	NULL,
-	&_vq_auxt__44c3_s_p1_0,
-	NULL,
-	0
+static const static_codebook _44c2_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c2_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p4_0,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c2_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c3_s_p2_0[] = {
-	 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
-	 8, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8,
-	 7, 0, 0, 0, 7, 7, 0, 0, 0,10, 9, 0, 0, 0, 0, 0,
-	 0, 0, 5, 5, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 7, 0,
-	 0, 0, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
-	 0, 7, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
-	 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
-	 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
-	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0,
-	 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 8, 9,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
-	10,10, 0, 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 9,
-	 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c2_s_p5_0[] = {
+         1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 7, 7, 7, 7, 7, 7,
+         9, 9, 0, 7, 7, 7, 7, 7, 7, 9, 9, 0, 8, 8, 7, 7,
+         8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+         9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+        11,
 };
 
-static float _vq_quantthresh__44c3_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c2_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c2_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p5_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c2_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p2_0 = {
-	_vq_quantthresh__44c3_s_p2_0,
-	_vq_quantmap__44c3_s_p2_0,
-	5,
-	5
+static const char _vq_lengthlist__44c2_s_p6_0[] = {
+         1, 4, 3, 6, 6, 8, 8, 9, 9, 9, 9, 9, 9,10,10,11,
+        11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        12,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,11,12, 0, 8, 8, 7, 7, 9, 9,10,10, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10, 9,10,
+        10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+        11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+        10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+        14,
 };
 
-static static_codebook _44c3_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c3_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c3_s_p2_0,
-	NULL,
-	&_vq_auxt__44c3_s_p2_0,
-	NULL,
-	0
+static const static_codebook _44c2_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c2_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c2_s_p6_0,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c2_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c3_s_p3_0[] = {
-	 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c2_s_p7_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,10, 9, 9, 7,10,10,11,10,
+        11,11,10,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 6,
+         9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,12,10,
+        11,
 };
 
-static float _vq_quantthresh__44c3_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c2_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c2_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c2_s_p7_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c2_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p3_0 = {
-	_vq_quantthresh__44c3_s_p3_0,
-	_vq_quantmap__44c3_s_p3_0,
-	5,
-	5
+static const char _vq_lengthlist__44c2_s_p7_1[] = {
+         2, 3, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 7, 7, 6, 6,
+         7, 7, 8, 8, 8, 8, 9, 6, 6, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static static_codebook _44c3_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c3_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c3_s_p3_0,
-	NULL,
-	&_vq_auxt__44c3_s_p3_0,
-	NULL,
-	0
+static const static_codebook _44c2_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c2_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p7_1,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44c2_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c3_s_p4_0[] = {
-	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
-	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
-	 7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c2_s_p8_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+        13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+        10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+        11,12,12,12,12, 0, 0, 0,14,14,10,11,11,11,12,12,
+        13,13, 0, 0, 0,14,14,11,10,11,11,13,12,13,13, 0,
+         0, 0, 0, 0,12,12,11,12,13,12,14,14, 0, 0, 0, 0,
+         0,12,12,12,12,13,12,14,14,
 };
 
-static float _vq_quantthresh__44c3_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44c2_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c2_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p8_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44c2_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p4_0 = {
-	_vq_quantthresh__44c3_s_p4_0,
-	_vq_quantmap__44c3_s_p4_0,
-	9,
-	9
+static const char _vq_lengthlist__44c2_s_p8_1[] = {
+         2, 4, 4, 5, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static static_codebook _44c3_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c3_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c3_s_p4_0,
-	NULL,
-	&_vq_auxt__44c3_s_p4_0,
-	NULL,
-	0
+static const static_codebook _44c2_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c2_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c2_s_p8_1,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44c2_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c3_s_p5_0[] = {
-	 2, 3, 3, 5, 5, 7, 7, 9, 8, 0, 4, 4, 7, 7, 7, 7,
-	 9, 9, 0, 5, 5, 6, 7, 7, 7, 9, 9, 0, 6, 6, 7, 7,
-	 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
-	 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
-	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
+static const char _vq_lengthlist__44c2_s_p9_0[] = {
+         1, 5, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
+        11,11,11,11,11,11,11,11,11,11, 2, 8, 7,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,
 };
 
-static float _vq_quantthresh__44c3_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44c2_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c2_s_p9_0,
+        1, -514541568, 1627103232, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p9_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44c2_s_p9_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p5_0 = {
-	_vq_quantthresh__44c3_s_p5_0,
-	_vq_quantmap__44c3_s_p5_0,
-	9,
-	9
-};
-
-static static_codebook _44c3_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c3_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c3_s_p5_0,
-	NULL,
-	&_vq_auxt__44c3_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c3_s_p6_0[] = {
-	 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10, 9,
-	10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
-	 9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8,
-	 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
-	 8, 9, 9,10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0,
-	 9, 9,10,10,11,10,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0,
-	 0, 0, 0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,12,13,13,13,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,
-	13,
-};
-
-static float _vq_quantthresh__44c3_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c3_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c3_s_p6_0 = {
-	_vq_quantthresh__44c3_s_p6_0,
-	_vq_quantmap__44c3_s_p6_0,
-	17,
-	17
-};
-
-static static_codebook _44c3_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c3_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c3_s_p6_0,
-	NULL,
-	&_vq_auxt__44c3_s_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c3_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10,10,10,10, 9, 9, 6, 9, 9,
-	10,10,10,10, 9, 9, 7,10,10,10,11,11,11,10,11, 6,
-	 9, 9,10,10, 9,11,10,10, 6, 9, 9,10, 9, 9,10,10,
-	10,
-};
-
-static float _vq_quantthresh__44c3_s_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c3_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c3_s_p7_0 = {
-	_vq_quantthresh__44c3_s_p7_0,
-	_vq_quantmap__44c3_s_p7_0,
-	3,
-	3
-};
-
-static static_codebook _44c3_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c3_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c3_s_p7_0,
-	NULL,
-	&_vq_auxt__44c3_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c3_s_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 9,
-};
-
-static float _vq_quantthresh__44c3_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c3_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c3_s_p7_1 = {
-	_vq_quantthresh__44c3_s_p7_1,
-	_vq_quantmap__44c3_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _44c3_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c3_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c3_s_p7_1,
-	NULL,
-	&_vq_auxt__44c3_s_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c3_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 7, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
-	 8, 9, 9, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,11,12, 9, 9, 9,10,10,10,11,11,11,12, 0,13,
-	13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0,10, 9,
-	 9, 9,10,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
-	11,11,11,12,13, 0, 0, 0,13,13,10,10,11,11,12,12,
-	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
-	 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,11,12,12,13,13,
+static const char _vq_lengthlist__44c2_s_p9_1[] = {
+         1, 4, 4, 6, 6, 7, 6, 8, 8,10, 9,10,10, 6, 5, 5,
+         7, 7, 8, 7,10, 9,11,11,12,13, 6, 5, 5, 7, 7, 8,
+         8,10,10,11,11,13,13,18, 8, 8, 8, 8, 9, 9,10,10,
+        12,12,12,13,18, 8, 8, 8, 8, 9, 9,10,10,12,12,13,
+        13,18,11,11, 8, 8,10,10,11,11,12,11,13,12,18,11,
+        11, 9, 7,10,10,11,11,11,12,12,13,17,17,17,10,10,
+        11,11,12,12,12,10,12,12,17,17,17,11,10,11,10,13,
+        12,11,12,12,12,17,17,17,15,14,11,11,12,11,13,10,
+        13,12,17,17,17,14,14,12,10,11,11,13,13,13,13,17,
+        17,16,17,16,13,13,12,10,13,10,14,13,17,16,17,16,
+        17,13,12,12,10,13,11,14,14,
 };
 
-static float _vq_quantthresh__44c3_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44c2_s_p9_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c2_s_p9_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c2_s_p9_1,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c2_s_p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p8_0 = {
-	_vq_quantthresh__44c3_s_p8_0,
-	_vq_quantmap__44c3_s_p8_0,
-	13,
-	13
+static const char _vq_lengthlist__44c2_s_p9_2[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+         8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 8, 7, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 9, 9, 9,10,11,10, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9,10,10,10,10,11,10, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 9, 9,10, 9,10,11,10,11,11,11, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,11,11, 9, 9,
+         9, 9, 9, 9,10, 9, 9, 9,10,10,11,11,11,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,11,11,11,11,
+         9, 9, 9, 9,10,10, 9, 9, 9,10,10,10,11,11,11,11,
+        11,11,11, 9, 9, 9,10, 9, 9,10,10,10,10,11,11,10,
+        11,11,11,11,10, 9,10,10, 9, 9, 9, 9,10,10,11,10,
+        11,11,11,11,11, 9, 9, 9, 9,10, 9,10,10,10,10,11,
+        10,11,11,11,11,11,10,10, 9, 9,10, 9,10,10,10,10,
+        10,10,10,11,11,11,11,11,11, 9, 9,10, 9,10, 9,10,
+        10,
 };
 
-static static_codebook _44c3_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c3_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c3_s_p8_0,
-	NULL,
-	&_vq_auxt__44c3_s_p8_0,
-	NULL,
-	0
+static const static_codebook _44c2_s_p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c2_s_p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c2_s_p9_2,
+        0
 };
 
-static long _vq_quantlist__44c3_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _huff_lengthlist__44c2_s_short[] = {
+        11, 9,13,12,12,11,12,12,13,15, 8, 2,11, 4, 8, 5,
+         7,10,12,15,13, 7,10, 9, 8, 8,10,13,17,17,11, 4,
+        12, 5, 9, 5, 8,11,14,16,12, 6, 8, 7, 6, 6, 8,11,
+        13,16,11, 4, 9, 5, 6, 4, 6,10,13,16,11, 6,11, 7,
+         7, 6, 7,10,13,15,13, 9,12, 9, 8, 6, 8,10,12,14,
+        14,10,10, 8, 6, 5, 6, 9,11,13,15,11,11, 9, 6, 5,
+         6, 8, 9,12,
 };
 
-static long _vq_lengthlist__44c3_s_p8_1[] = {
-	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+static const static_codebook _huff_book__44c2_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c2_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c3_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _huff_lengthlist__44c3_s_long[] = {
+         5, 6,11,11,11,11,10,10,12,11, 5, 2,11, 5, 6, 6,
+         7, 9,11,13,13,10, 7,11, 6, 7, 8, 9,10,12,11, 5,
+        11, 6, 8, 7, 9,11,14,15,11, 6, 6, 8, 4, 5, 7, 8,
+        10,13,10, 5, 7, 7, 5, 5, 6, 8,10,11,10, 7, 7, 8,
+         6, 5, 5, 7, 9, 9,11, 8, 8,11, 8, 7, 6, 6, 7, 9,
+        12,11,10,13, 9, 9, 7, 7, 7, 9,11,13,12,15,12,11,
+         9, 8, 8, 8,
 };
 
-static long _vq_quantmap__44c3_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _huff_book__44c3_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c3_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p8_1 = {
-	_vq_quantthresh__44c3_s_p8_1,
-	_vq_quantmap__44c3_s_p8_1,
-	5,
-	5
+static const long _vq_quantlist__44c3_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44c3_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c3_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c3_s_p8_1,
-	NULL,
-	&_vq_auxt__44c3_s_p8_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44c3_s_p1_0[] = {
+         2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+         0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c3_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44c3_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c3_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c3_s_p1_0,
+        0
 };
 
-static long _vq_lengthlist__44c3_s_p9_0[] = {
-	 1, 4, 4,10,10,10,10,10,10,10,10,10,10, 5,10, 7,
-	10,10,10,10,10,10,10,10,10,10, 5, 8, 6,10,10,10,
-	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const long _vq_quantlist__44c3_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44c3_s_p9_0[] = {
-	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
-	637.5, 892.5, 1147.5, 1402.5, 
-};
-
-static long _vq_quantmap__44c3_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c3_s_p9_0 = {
-	_vq_quantthresh__44c3_s_p9_0,
-	_vq_quantmap__44c3_s_p9_0,
-	13,
-	13
-};
-
-static static_codebook _44c3_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c3_s_p9_0,
-	1, -514332672, 1627381760, 4, 0,
-	_vq_quantlist__44c3_s_p9_0,
-	NULL,
-	&_vq_auxt__44c3_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__44c3_s_p9_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 9,11,11,11,12,12,12, 6,
-	 5, 5, 7, 7, 8, 8,10, 9,11,11,13,12,13,14, 6, 5,
-	 5, 7, 7, 8, 8,10,10,11,11,12,12,13,13,17, 7, 7,
-	 8, 8, 9, 9,10,10,12,12,14,13,14,14,17, 8, 7, 8,
-	 7, 9, 9,10,10,12,12,13,13,13,14,17,11,11, 8, 8,
-	10,10,11,11,12,12,13,13,15,14,17,11,11, 8, 7,10,
-	10,11,11,12,12,13,14,14,13,17,17,17,10,11,10,10,
-	12,12,13,12,13,13,14,14,17,16,16,10,10,11, 9,13,
-	12,13,13,13,13,14,14,16,16,15,13,15,11,12,12,12,
-	14,14,14,14,14,15,16,16,16,14,14,11, 9,12,10,13,
-	13,14,14,14,14,16,16,16,16,16,12,13,12,12,13,14,
-	14,14,15,15,15,16,16,15,16,13,11,13,10,14,12,15,
-	14,16,14,15,16,16,16,16,15,15,13,13,13,13,14,14,
-	16,16,16,16,16,15,16,16,14,13,12,13,13,14,16,16,
-	16,
-};
-
-static float _vq_quantthresh__44c3_s_p9_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
-};
-
-static long _vq_quantmap__44c3_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c3_s_p9_1 = {
-	_vq_quantthresh__44c3_s_p9_1,
-	_vq_quantmap__44c3_s_p9_1,
-	15,
-	15
-};
-
-static static_codebook _44c3_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__44c3_s_p9_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__44c3_s_p9_1,
-	NULL,
-	&_vq_auxt__44c3_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c3_s_p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c3_s_p9_2[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
-	 8,10, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9,10, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9,
-	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10, 8, 7, 8, 8, 9, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10, 8, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,10,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
-	10,10,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	11,10,11,10, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10, 9,
-	10,10,10,10,11,10,11,10,10, 9, 9, 9, 9, 9, 9, 9,
-	 9,
+static const char _vq_lengthlist__44c3_s_p2_0[] = {
+         2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+         7, 8, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
+         7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+         0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
+         0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
+         7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
+         9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
+         0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
+         0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         8,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
+        10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
+         9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c3_s_p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44c3_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c3_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c3_s_p2_0,
+        0
 };
 
-static long _vq_quantmap__44c3_s_p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c3_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c3_s_p9_2 = {
-	_vq_quantthresh__44c3_s_p9_2,
-	_vq_quantmap__44c3_s_p9_2,
-	17,
-	17
+static const char _vq_lengthlist__44c3_s_p3_0[] = {
+         2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c3_s_p9_2 = {
-	2, 289,
-	_vq_lengthlist__44c3_s_p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c3_s_p9_2,
-	NULL,
-	&_vq_auxt__44c3_s_p9_2,
-	NULL,
-	0
+static const static_codebook _44c3_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c3_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c3_s_p3_0,
+        0
 };
 
-static long _huff_lengthlist__44c3_s_short[] = {
-	10,10,13,12,13,12,12,12,12,13, 8, 3,11, 5,10, 5,
-	 7,11,14,16,11, 6, 9, 8, 7, 7, 9,12,15,16,12, 4,
-	12, 4,10, 5, 8,12,15,16,12, 6, 8, 7, 5, 5, 7,11,
-	14,15,11, 4, 9, 4, 6, 4, 6, 9,13,15,10, 6,10, 7,
-	 7, 5, 6, 9,13,15,12, 9,11, 9, 8, 6, 7, 9,12,15,
-	13,11,10, 9, 6, 5, 5, 8,11,14,16,12,11,10, 6, 5,
-	 6, 8,10,14,
+static const long _vq_quantlist__44c3_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _huff_book__44c3_s_short = {
-	2, 100,
-	_huff_lengthlist__44c3_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44c3_s_p4_0[] = {
+         2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+         0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+         7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _huff_lengthlist__44c4_s_long[] = {
-	 3, 5,11,11,13,11,11,11,12,12, 5, 2,11, 6,10, 7,
-	 8,10,13,16,10, 9, 6,10, 6, 7, 8, 9,11,12,11, 5,
-	11, 7,10, 8,10,12,15,17,12, 8, 5, 9, 4, 5, 7, 8,
-	10,12,10, 6, 7, 8, 5, 5, 6, 8,10,11,10, 8, 8, 9,
-	 6, 6, 6, 7, 9,10,11,10, 9,11, 8, 7, 6, 6, 7, 9,
-	11,13,10,15, 9, 9, 7, 7, 7, 8,10,15,11,17,11,11,
-	 9, 8, 7, 8,
+static const static_codebook _44c3_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c3_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p4_0,
+        0
 };
 
-static static_codebook _huff_book__44c4_s_long = {
-	2, 100,
-	_huff_lengthlist__44c4_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44c3_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44c4_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44c3_s_p5_0[] = {
+         1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 7, 8,
+         9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+         8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+         9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+         0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+        11,
 };
 
-static long _vq_lengthlist__44c4_s_p1_0[] = {
-	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
-	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
-	 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
-	 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0, 0,
-	 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
-	 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 8, 9,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
-	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
-	 0, 0, 0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9,
-	 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c3_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c3_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p5_0,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44c3_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantmap__44c4_s_p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44c3_s_p6_0[] = {
+         2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        10, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,11,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
+         9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,10,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 8,
+         9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
+         8, 9, 9,10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0,
+         9,10,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+         0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
+        13,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p1_0 = {
-	_vq_quantthresh__44c4_s_p1_0,
-	_vq_quantmap__44c4_s_p1_0,
-	3,
-	3
+static const static_codebook _44c3_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c3_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c3_s_p6_0,
+        0
 };
 
-static static_codebook _44c4_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c4_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c4_s_p1_0,
-	NULL,
-	&_vq_auxt__44c4_s_p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c3_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44c4_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44c3_s_p7_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+        10,12,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,10,11,10,10, 7,11,11,11,11,11,12,11,11, 6,
+         9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static long _vq_lengthlist__44c4_s_p2_0[] = {
-	 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
-	 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 8,
-	 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
-	 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
-	 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
-	 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
-	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 8, 0,
-	 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
-	10,10, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0, 9,
-	 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c3_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c3_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c3_s_p7_0,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44c3_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantmap__44c4_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44c3_s_p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 8, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p2_0 = {
-	_vq_quantthresh__44c4_s_p2_0,
-	_vq_quantmap__44c4_s_p2_0,
-	5,
-	5
+static const static_codebook _44c3_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c3_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p7_1,
+        0
 };
 
-static static_codebook _44c4_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c4_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c4_s_p2_0,
-	NULL,
-	&_vq_auxt__44c4_s_p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c3_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44c4_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44c3_s_p8_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
+         8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9,10,10,10,10,11,11,11,12, 0,13,
+        13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+        10,10,11,11,12,12,12,12, 0, 0, 0,10,10,10,10,11,
+        11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+        13,13, 0, 0, 0,14,14,11,11,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,12,12,12,12,13,13,14,13, 0, 0, 0, 0,
+         0,13,13,12,12,13,12,14,13,
 };
 
-static long _vq_lengthlist__44c4_s_p3_0[] = {
-	 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c3_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c3_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p8_0,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44c3_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44c4_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44c3_s_p8_1[] = {
+         2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p3_0 = {
-	_vq_quantthresh__44c4_s_p3_0,
-	_vq_quantmap__44c4_s_p3_0,
-	5,
-	5
+static const static_codebook _44c3_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c3_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c3_s_p8_1,
+        0
 };
 
-static static_codebook _44c4_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c4_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c4_s_p3_0,
-	NULL,
-	&_vq_auxt__44c4_s_p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c3_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44c4_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44c3_s_p9_0[] = {
+         1, 4, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
+        12,12,12,12,12,12,12,12,12,12, 2, 9, 7,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,
 };
 
-static long _vq_lengthlist__44c4_s_p4_0[] = {
-	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
-	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
-	 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c3_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c3_s_p9_0,
+        1, -514332672, 1627381760, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p9_0,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__44c3_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__44c4_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__44c3_s_p9_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10,10,10, 6,
+         5, 5, 7, 7, 8, 8,10, 8,11,10,12,12,13,13, 6, 5,
+         5, 7, 7, 8, 8,10, 9,11,11,12,12,13,12,18, 8, 8,
+         8, 8, 9, 9,10, 9,11,10,12,12,13,13,18, 8, 8, 8,
+         8, 9, 9,10,10,11,11,13,12,14,13,18,11,11, 9, 9,
+        10,10,11,11,11,12,13,12,13,14,18,11,11, 9, 8,11,
+        10,11,11,11,11,12,12,14,13,18,18,18,10,11,10,11,
+        12,12,12,12,13,12,14,13,18,18,18,10,11,11, 9,12,
+        11,12,12,12,13,13,13,18,18,17,14,14,11,11,12,12,
+        13,12,14,12,14,13,18,18,18,14,14,11,10,12, 9,12,
+        13,13,13,13,13,18,18,17,16,18,13,13,12,12,13,11,
+        14,12,14,14,17,18,18,17,18,13,12,13,10,12,11,14,
+        14,14,14,17,18,18,18,18,15,16,12,12,13,10,14,12,
+        14,15,18,18,18,16,17,16,14,12,11,13,10,13,13,14,
+        15,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p4_0 = {
-	_vq_quantthresh__44c4_s_p4_0,
-	_vq_quantmap__44c4_s_p4_0,
-	9,
-	9
+static const static_codebook _44c3_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c3_s_p9_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c3_s_p9_1,
+        0
 };
 
-static static_codebook _44c4_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c4_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c4_s_p4_0,
-	NULL,
-	&_vq_auxt__44c4_s_p4_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c3_s_p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__44c4_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44c3_s_p9_2[] = {
+         2, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 9, 9, 9,
+         9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
+         9, 9, 9, 9,10,10, 9, 9,10, 9,11,10,11,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,10, 9,11,11,11,11,11,
+         9, 9, 9, 9,10,10, 9, 9, 9, 9,10, 9,11,11,11,11,
+        11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11,
+        11,11,11,11,10, 9,10,10, 9,10, 9, 9,10, 9,11,10,
+        10,11,11,11,11, 9,10, 9, 9, 9, 9,10,10,10,10,11,
+        11,11,11,11,11,10,10,10, 9, 9,10, 9,10, 9,10,10,
+        10,10,11,11,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,
+        10,
 };
 
-static long _vq_lengthlist__44c4_s_p5_0[] = {
-	 2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 7, 7, 7, 7,
-	 9, 9, 0, 4, 4, 7, 7, 7, 7, 9, 9, 0, 6, 6, 7, 7,
-	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
-	 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
-	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
-	11,
+static const static_codebook _44c3_s_p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c3_s_p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c3_s_p9_2,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _huff_lengthlist__44c3_s_short[] = {
+        10, 9,13,11,14,10,12,13,13,14, 7, 2,12, 5,10, 5,
+         7,10,12,14,12, 6, 9, 8, 7, 7, 9,11,13,16,10, 4,
+        12, 5,10, 6, 8,12,14,16,12, 6, 8, 7, 6, 5, 7,11,
+        12,16,10, 4, 8, 5, 6, 4, 6, 9,13,16,10, 6,10, 7,
+         7, 6, 7, 9,13,15,12, 9,11, 9, 8, 6, 7,10,12,14,
+        14,11,10, 9, 6, 5, 6, 9,11,13,15,13,11,10, 6, 5,
+         6, 8, 9,11,
 };
 
-static long _vq_quantmap__44c4_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _huff_book__44c3_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c3_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p5_0 = {
-	_vq_quantthresh__44c4_s_p5_0,
-	_vq_quantmap__44c4_s_p5_0,
-	9,
-	9
+static const char _huff_lengthlist__44c4_s_long[] = {
+         4, 7,11,11,11,11,10,11,12,11, 5, 2,11, 5, 6, 6,
+         7, 9,11,12,11, 9, 6,10, 6, 7, 8, 9,10,11,11, 5,
+        11, 7, 8, 8, 9,11,13,14,11, 6, 5, 8, 4, 5, 7, 8,
+        10,11,10, 6, 7, 7, 5, 5, 6, 8, 9,11,10, 7, 8, 9,
+         6, 6, 6, 7, 8, 9,11, 9, 9,11, 7, 7, 6, 6, 7, 9,
+        12,12,10,13, 9, 8, 7, 7, 7, 8,11,13,11,14,11,10,
+         9, 8, 7, 7,
 };
 
-static static_codebook _44c4_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c4_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c4_s_p5_0,
-	NULL,
-	&_vq_auxt__44c4_s_p5_0,
-	NULL,
-	0
+static const static_codebook _huff_book__44c4_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c4_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44c4_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c4_s_p6_0[] = {
-	 2, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10, 9,10,10,11,
-	11, 0, 4, 4, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10, 9,
-	10,11,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
-	10,11,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
-	10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0, 8, 8,
-	 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
-	 8, 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
-	 9, 9,10,10,11,10,11,11,12,12,12,12, 0, 0, 0, 0,
-	 0, 0, 0,10,10,10,10,11,11,12,12,13,12, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,11,12,12,12,13,12, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,11,11,12,12,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,12,12,13,13,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,
-	13,
+static const char _vq_lengthlist__44c4_s_p1_0[] = {
+         2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+         0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+         0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c4_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44c4_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c4_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c4_s_p1_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c4_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p6_0 = {
-	_vq_quantthresh__44c4_s_p6_0,
-	_vq_quantmap__44c4_s_p6_0,
-	17,
-	17
+static const char _vq_lengthlist__44c4_s_p2_0[] = {
+         2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+         7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
+         7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+         0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0,
+         0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
+         7, 8, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
+         9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
+         0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
+         0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
+        10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
+         9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c4_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c4_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c4_s_p6_0,
-	NULL,
-	&_vq_auxt__44c4_s_p6_0,
-	NULL,
-	0
+static const static_codebook _44c4_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c4_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c4_s_p2_0,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c4_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c4_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10,10,10,10,10, 9, 6, 9, 9,
-	10, 9,10,11, 9, 9, 7,10,10,11,11,11,11,10,10, 6,
-	 9, 9,10, 9, 9,10,10, 9, 6, 9, 9,10,10,10,10,10,
-	10,
+static const char _vq_lengthlist__44c4_s_p3_0[] = {
+         2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c4_s_p7_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _44c4_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c4_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c4_s_p3_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p7_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c4_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p7_0 = {
-	_vq_quantthresh__44c4_s_p7_0,
-	_vq_quantmap__44c4_s_p7_0,
-	3,
-	3
+static const char _vq_lengthlist__44c4_s_p4_0[] = {
+         2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+         0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+         7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c4_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c4_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c4_s_p7_0,
-	NULL,
-	&_vq_auxt__44c4_s_p7_0,
-	NULL,
-	0
+static const static_codebook _44c4_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c4_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p4_0,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44c4_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c4_s_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 9,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
+static const char _vq_lengthlist__44c4_s_p5_0[] = {
+         2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+         9, 9, 0, 4, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
+         8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0,
+         9, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static float _vq_quantthresh__44c4_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44c4_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c4_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p5_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44c4_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p7_1 = {
-	_vq_quantthresh__44c4_s_p7_1,
-	_vq_quantmap__44c4_s_p7_1,
-	11,
-	11
+static const char _vq_lengthlist__44c4_s_p6_0[] = {
+         2, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
+        11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        11,11, 0, 4, 4, 7, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
+         9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
+         9,10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9,
+         9, 9, 9,10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,11,11,12,12,13,12, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,11,11,12,12,12,12, 0, 0, 0,
+         0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,13,13,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,
+        13,
 };
 
-static static_codebook _44c4_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c4_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c4_s_p7_1,
-	NULL,
-	&_vq_auxt__44c4_s_p7_1,
-	NULL,
-	0
+static const static_codebook _44c4_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c4_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c4_s_p6_0,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c4_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c4_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 9, 9,10,10,11,11, 7, 5, 5, 7, 7, 8,
-	 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 9, 9, 9,10,10,10,10,11,11, 0,12,
-	12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9,10,
-	 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0,13,13,10,10,10,11,12,12,
-	12,12, 0, 0, 0,14,14,10,10,11,11,11,11,12,12, 0,
-	 0, 0, 0, 0,11,12,11,11,12,12,12,13, 0, 0, 0, 0,
-	 0,12,12,11,11,12,12,13,13,
+static const char _vq_lengthlist__44c4_s_p7_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+        10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
+         9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static float _vq_quantthresh__44c4_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44c4_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c4_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c4_s_p7_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c4_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p8_0 = {
-	_vq_quantthresh__44c4_s_p8_0,
-	_vq_quantmap__44c4_s_p8_0,
-	13,
-	13
+static const char _vq_lengthlist__44c4_s_p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 9, 9,
 };
 
-static static_codebook _44c4_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c4_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c4_s_p8_0,
-	NULL,
-	&_vq_auxt__44c4_s_p8_0,
-	NULL,
-	0
+static const static_codebook _44c4_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c4_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p7_1,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c4_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c4_s_p8_1[] = {
-	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+static const char _vq_lengthlist__44c4_s_p8_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+         7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9, 9,10,10,10,10,11,11, 0,13,
+        13, 9, 9,10, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+        10,10,10,10,11,11,12,12, 0, 0, 0,10,10,10,10,10,
+        10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+        12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,13, 0,
+         0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
+         0,13,12,12,12,12,12,13,13,
 };
 
-static float _vq_quantthresh__44c4_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c4_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c4_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p8_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c4_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p8_1 = {
-	_vq_quantthresh__44c4_s_p8_1,
-	_vq_quantmap__44c4_s_p8_1,
-	5,
-	5
+static const char _vq_lengthlist__44c4_s_p8_1[] = {
+         2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 5, 4, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static static_codebook _44c4_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c4_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c4_s_p8_1,
-	NULL,
-	&_vq_auxt__44c4_s_p8_1,
-	NULL,
-	0
+static const static_codebook _44c4_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c4_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c4_s_p8_1,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c4_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c4_s_p9_0[] = {
-	 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 7, 7,
-	10,10,10,10,10,10,10,10,10,10, 5, 7, 8,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10, 9, 9, 9, 9,
+static const char _vq_lengthlist__44c4_s_p9_0[] = {
+         1, 3, 3,12,12,12,12,12,12,12,12,12,12, 4, 7, 7,
+        12,12,12,12,12,12,12,12,12,12, 3, 8, 8,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,
 };
 
-static float _vq_quantthresh__44c4_s_p9_0[] = {
-	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
-	787.5, 1102.5, 1417.5, 1732.5, 
+static const static_codebook _44c4_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c4_s_p9_0,
+        1, -513964032, 1628680192, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p9_0,
+        0
 };
 
-static long _vq_quantmap__44c4_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c4_s_p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p9_0 = {
-	_vq_quantthresh__44c4_s_p9_0,
-	_vq_quantmap__44c4_s_p9_0,
-	13,
-	13
+static const char _vq_lengthlist__44c4_s_p9_1[] = {
+         1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,10,10, 6,
+         5, 5, 7, 7, 9, 8,10, 9,11,10,12,12,13,13, 6, 5,
+         5, 7, 7, 9, 9,10,10,11,11,12,12,12,13,19, 8, 8,
+         8, 8, 9, 9,10,10,12,11,12,12,13,13,19, 8, 8, 8,
+         8, 9, 9,11,11,12,12,13,13,13,13,19,12,12, 9, 9,
+        11,11,11,11,12,11,13,12,13,13,18,12,12, 9, 9,11,
+        10,11,11,12,12,12,13,13,14,19,18,18,11,11,11,11,
+        12,12,13,12,13,13,14,14,16,18,18,11,11,11,10,12,
+        11,13,13,13,13,13,14,17,18,18,14,15,11,12,12,13,
+        13,13,13,14,14,14,18,18,18,15,15,12,10,13,10,13,
+        13,13,13,13,14,18,17,18,17,18,12,13,12,13,13,13,
+        14,14,16,14,18,17,18,18,17,13,12,13,10,12,12,14,
+        14,14,14,17,18,18,18,18,14,15,12,12,13,12,14,14,
+        15,15,18,18,18,17,18,15,14,12,11,12,12,14,14,14,
+        15,
 };
 
-static static_codebook _44c4_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c4_s_p9_0,
-	1, -513964032, 1628680192, 4, 0,
-	_vq_quantlist__44c4_s_p9_0,
-	NULL,
-	&_vq_auxt__44c4_s_p9_0,
-	NULL,
-	0
+static const static_codebook _44c4_s_p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c4_s_p9_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44c4_s_p9_1,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const long _vq_quantlist__44c4_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static long _vq_lengthlist__44c4_s_p9_1[] = {
-	 1, 4, 4, 5, 6, 7, 7, 9, 9,11,11,12,12,12,13, 6,
-	 5, 5, 6, 7, 8, 8,10,10,11,11,13,13,13,13, 6, 5,
-	 5, 7, 7, 8, 8,11,10,11,11,12,13,12,13,17, 7, 7,
-	 8, 8, 9, 9,11,11,12,12,12,13,15,14,17, 7, 7, 8,
-	 8, 9, 9,11,10,12,12,13,13,14,13,17,11,12, 9, 9,
-	10,10,12,12,13,13,14,14,14,14,17,12,11, 9, 8,11,
-	10,11,12,13,13,13,14,14,14,17,17,17,11,11,11,11,
-	13,13,13,13,14,13,15,14,17,17,17,11,10,11, 9,13,
-	12,13,14,15,14,15,14,17,17,17,14,14,11,12,12,13,
-	14,14,16,15,15,15,17,17,17,15,15,12,11,13,11,13,
-	13,13,15,16,14,17,17,17,17,17,13,13,14,13,14,14,
-	15,15,16,15,17,17,17,17,17,14,14,14,12,14,12,16,
-	14,15,14,17,17,17,17,17,16,17,13,14,14,15,15,15,
-	17,15,17,17,17,17,17,16,17,13,14,14,14,15,17,15,
-	15,
-};
-
-static float _vq_quantthresh__44c4_s_p9_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const char _vq_lengthlist__44c4_s_p9_2[] = {
+         2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8, 9, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10,10,11, 6, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,
+         7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10,10,10,12,11,11, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+         9,10,10,10,10,10,10,10,10,12,11,12, 8, 8, 8, 8,
+         9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
+        11, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,
+        10,10,10,11,11,12, 9, 9, 9, 9, 9, 9,10, 9,10,10,
+        10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
+         9,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,
+        11,11, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
+        10,10,10,10,10,10,10,11,11,11,12,12,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,12,
+        11,11,11, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,11,12,11,11,11,11,11,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,11,11,11,12,11,11,11,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,12,11,11,12,11,
+        11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+        10,10,10,10,10,11,11,11,11,12,12,11,11,11,11,11,
+        11,11,10,10,10,10,10,10,10,10,12,12,12,11,11,11,
+        12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,12,
+        11,12,12,12,12,12,11,12,11,11,10,10,10,10,10,10,
+        10,10,10,10,12,12,12,12,11,11,11,11,11,11,11,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static long _vq_quantmap__44c4_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const static_codebook _44c4_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c4_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c4_s_p9_2,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p9_1 = {
-	_vq_quantthresh__44c4_s_p9_1,
-	_vq_quantmap__44c4_s_p9_1,
-	15,
-	15
+static const char _huff_lengthlist__44c4_s_short[] = {
+         4, 7,14,10,15,10,12,15,16,15, 4, 2,11, 5,10, 6,
+         8,11,14,14,14,10, 7,11, 6, 8,10,11,13,15, 9, 4,
+        11, 5, 9, 6, 9,12,14,15,14, 9, 6, 9, 4, 5, 7,10,
+        12,13, 9, 5, 7, 6, 5, 5, 7,10,13,13,10, 8, 9, 8,
+         7, 6, 8,10,14,14,13,11,10,10, 7, 7, 8,11,14,15,
+        13,12, 9, 9, 6, 5, 7,10,14,17,15,13,11,10, 6, 6,
+         7, 9,12,17,
 };
 
-static static_codebook _44c4_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__44c4_s_p9_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44c4_s_p9_1,
-	NULL,
-	&_vq_auxt__44c4_s_p9_1,
-	NULL,
-	0
+static const static_codebook _huff_book__44c4_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c4_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44c4_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const char _huff_lengthlist__44c5_s_long[] = {
+         3, 8, 9,13,10,12,12,12,12,12, 6, 4, 6, 8, 6, 8,
+        10,10,11,12, 8, 5, 4,10, 4, 7, 8, 9,10,11,13, 8,
+        10, 8, 9, 9,11,12,13,14,10, 6, 4, 9, 3, 5, 6, 8,
+        10,11,11, 8, 6, 9, 5, 5, 6, 7, 9,11,12, 9, 7,11,
+         6, 6, 6, 7, 8,10,12,11, 9,12, 7, 7, 6, 6, 7, 9,
+        13,12,10,13, 9, 8, 7, 7, 7, 8,11,15,11,15,11,10,
+         9, 8, 7, 7,
 };
 
-static long _vq_lengthlist__44c4_s_p9_2[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,11, 5, 5, 7, 7, 7,
-	 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
-	 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
-	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,
-	10,10,10,11,11,11, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
-	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,11,
-	11,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
-	10,10,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,10,10,
-	10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
-	10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
-	11,11,11, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
-	10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,11,11,11,11,11,11,11,10,10, 9,
-	10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
-	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
-	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
-	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
-	12,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
-	11,12,12,11,11,11,11,11,10,10,10,10,10,10,10,10,
-	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
-	10,10,10,10,10,10,10,10,10,
+static const static_codebook _huff_book__44c5_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c5_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c4_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const long _vq_quantlist__44c5_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44c4_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const char _vq_lengthlist__44c5_s_p1_0[] = {
+         2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+         0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+         0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+         0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c4_s_p9_2 = {
-	_vq_quantthresh__44c4_s_p9_2,
-	_vq_quantmap__44c4_s_p9_2,
-	21,
-	21
+static const static_codebook _44c5_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c5_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c5_s_p1_0,
+        0
 };
 
-static static_codebook _44c4_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__44c4_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c4_s_p9_2,
-	NULL,
-	&_vq_auxt__44c4_s_p9_2,
-	NULL,
-	0
+static const long _vq_quantlist__44c5_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _huff_lengthlist__44c4_s_short[] = {
-	 4, 9,13,12,16,11,12,15,15,16, 4, 2,11, 5,10, 6,
-	 8,11,14,14,13,11, 8,11, 7, 8,10,13,17,17,10, 4,
-	11, 5, 9, 6, 9,13,17,17,13, 9, 6, 9, 5, 5, 7,11,
-	15,17,10, 5, 7, 6, 5, 4, 7,10,15,15,10, 7, 9, 8,
-	 7, 6, 7,10,14,13,13,10,11,10, 8, 7, 8,10,14,14,
-	12,11,10, 9, 6, 5, 6, 9,13,17,14,13,11,10, 6, 6,
-	 6, 8,11,16,
+static const char _vq_lengthlist__44c5_s_p2_0[] = {
+         2, 4, 4, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+         8, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
+         8, 0, 0, 0, 8, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+         0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 7, 8, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 8, 8, 0, 0,
+         0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5,
+         7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,
+        10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
+         0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0,
+         0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
+        11,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
+        10, 0, 0, 0,10,10, 0, 0, 0,10,11, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _huff_book__44c4_s_short = {
-	2, 100,
-	_huff_lengthlist__44c4_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _44c5_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c5_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c5_s_p2_0,
+        0
 };
 
-static long _huff_lengthlist__44c5_s_long[] = {
-	 3, 6, 9,14,11,13,12,12,12,12, 6, 3, 5, 8, 6, 8,
-	10,11,12,14, 9, 5, 4,10, 5, 7, 8, 9,11,12,13, 8,
-	10, 9, 9, 9,12,15,16,17,10, 6, 5, 9, 3, 5, 6, 8,
-	10,12,10, 8, 7, 9, 5, 5, 6, 8,10,11,10, 9, 8,11,
-	 6, 6, 6, 7, 8,10,12,11, 9,13, 8, 7, 6, 6, 7, 9,
-	11,13,10,15, 9, 9, 7, 7, 7, 8,10,15,10,17,11,10,
-	 9, 8, 7, 7,
+static const long _vq_quantlist__44c5_s_p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _huff_book__44c5_s_long = {
-	2, 100,
-	_huff_lengthlist__44c5_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p3_0[] = {
+         2, 4, 3, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 5, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c5_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _44c5_s_p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c5_s_p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c5_s_p3_0,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p1_0[] = {
-	 2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 6, 0, 0, 0, 0,
-	 0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
-	 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, 8, 0, 0,
-	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 9, 8, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__44c5_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__44c5_s_p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__44c5_s_p4_0[] = {
+         2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+         0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+         7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__44c5_s_p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _44c5_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c5_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c5_s_p4_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p1_0 = {
-	_vq_quantthresh__44c5_s_p1_0,
-	_vq_quantmap__44c5_s_p1_0,
-	3,
-	3
+static const long _vq_quantlist__44c5_s_p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _44c5_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__44c5_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c5_s_p1_0,
-	NULL,
-	&_vq_auxt__44c5_s_p1_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p5_0[] = {
+         2, 4, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+         9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
+         7, 7, 9, 9, 0, 0, 0, 7, 6, 7, 7, 9, 9, 0, 0, 0,
+         8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+         0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static long _vq_quantlist__44c5_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _44c5_s_p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c5_s_p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c5_s_p5_0,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p2_0[] = {
-	 2, 4, 4, 0, 0, 0, 6, 5, 0, 0, 0, 5, 5, 0, 0, 0,
-	 7, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 5, 0, 0, 0, 8,
-	 7, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
-	 0, 0, 4, 5, 6, 0, 0, 0, 7, 8, 0, 0, 0, 7, 8, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 8, 8, 0, 0,
-	 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6,
-	 7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,
-	10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
-	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 0,
-	 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7, 9, 9, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0,
-	10,10, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,10,
-	10, 0, 0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__44c5_s_p6_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static float _vq_quantthresh__44c5_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__44c5_s_p6_0[] = {
+         2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,11,
+        11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,12,12, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
+        11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 9,10,10,10,
+        10,11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,
+        10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+        10,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9,
+         9, 9,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,11,11,12,12,12,13,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,12,13,13,13,13,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
+        13,
 };
 
-static long _vq_quantmap__44c5_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _44c5_s_p6_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c5_s_p6_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c5_s_p6_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p2_0 = {
-	_vq_quantthresh__44c5_s_p2_0,
-	_vq_quantmap__44c5_s_p2_0,
-	5,
-	5
+static const long _vq_quantlist__44c5_s_p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44c5_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c5_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c5_s_p2_0,
-	NULL,
-	&_vq_auxt__44c5_s_p2_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p7_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+        10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
+         9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static long _vq_quantlist__44c5_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _44c5_s_p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c5_s_p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c5_s_p7_0,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p3_0[] = {
-	 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__44c5_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static float _vq_quantthresh__44c5_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__44c5_s_p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 9,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static long _vq_quantmap__44c5_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _44c5_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c5_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c5_s_p7_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p3_0 = {
-	_vq_quantthresh__44c5_s_p3_0,
-	_vq_quantmap__44c5_s_p3_0,
-	5,
-	5
+static const long _vq_quantlist__44c5_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _44c5_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__44c5_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c5_s_p3_0,
-	NULL,
-	&_vq_auxt__44c5_s_p3_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p8_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+         7, 7, 8, 8, 8, 9,10,10,10,10, 7, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9,10,10,10,10,10,11,11, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
+        10,10,10,10,11,11,11,11, 0, 0, 0,10,10,10,10,10,
+        10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+        12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,12, 0,
+         0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
+         0,12,12,12,12,12,12,13,13,
 };
 
-static long _vq_quantlist__44c5_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _44c5_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c5_s_p8_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c5_s_p8_0,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p4_0[] = {
-	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
-	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
-	 8, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
-	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const long _vq_quantlist__44c5_s_p8_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44c5_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__44c5_s_p8_1[] = {
+         2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static long _vq_quantmap__44c5_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _44c5_s_p8_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c5_s_p8_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c5_s_p8_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p4_0 = {
-	_vq_quantthresh__44c5_s_p4_0,
-	_vq_quantmap__44c5_s_p4_0,
-	9,
-	9
+static const long _vq_quantlist__44c5_s_p9_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static static_codebook _44c5_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__44c5_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c5_s_p4_0,
-	NULL,
-	&_vq_auxt__44c5_s_p4_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p9_0[] = {
+         1, 3, 3,13,13,13,13,13,13,13,13,13,13,13,13, 4,
+         7, 7,13,13,13,13,13,13,13,13,13,13,13,13, 3, 8,
+         6,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,
+        12,
 };
 
-static long _vq_quantlist__44c5_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _44c5_s_p9_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c5_s_p9_0,
+        1, -512522752, 1628852224, 4, 0,
+        (long *)_vq_quantlist__44c5_s_p9_0,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p5_0[] = {
-	 2, 3, 4, 5, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
-	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
-	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
-	 7, 7, 8, 8,10,10, 0, 0, 0, 7, 8, 8, 8,10,10, 0,
-	 0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
+static const long _vq_quantlist__44c5_s_p9_1[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static float _vq_quantthresh__44c5_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _vq_lengthlist__44c5_s_p9_1[] = {
+         1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,11,10,11,
+        11, 6, 5, 5, 7, 7, 8, 9,10,10,11,10,12,11,12,11,
+        13,12, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,13,
+        12,13,13,18, 8, 8, 8, 8, 9, 9,10,11,11,11,12,11,
+        13,11,13,12,18, 8, 8, 8, 8,10,10,11,11,12,12,13,
+        13,13,13,13,14,18,12,12, 9, 9,11,11,11,11,12,12,
+        13,12,13,12,13,13,20,13,12, 9, 9,11,11,11,11,12,
+        12,13,13,13,14,14,13,20,18,19,11,12,11,11,12,12,
+        13,13,13,13,13,13,14,13,18,19,19,12,11,11,11,12,
+        12,13,12,13,13,13,14,14,13,18,17,19,14,15,12,12,
+        12,13,13,13,14,14,14,14,14,14,19,19,19,16,15,12,
+        11,13,12,14,14,14,13,13,14,14,14,19,18,19,18,19,
+        13,13,13,13,14,14,14,13,14,14,14,14,18,17,19,19,
+        19,13,13,13,11,13,11,13,14,14,14,14,14,19,17,17,
+        18,18,16,16,13,13,13,13,14,13,15,15,14,14,19,19,
+        17,17,18,16,16,13,11,14,10,13,12,14,14,14,14,19,
+        19,19,19,19,18,17,13,14,13,11,14,13,14,14,15,15,
+        19,19,19,17,19,18,18,14,13,12,11,14,11,15,15,15,
+        15,
 };
 
-static long _vq_quantmap__44c5_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _44c5_s_p9_1 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c5_s_p9_1,
+        1, -520814592, 1620377600, 5, 0,
+        (long *)_vq_quantlist__44c5_s_p9_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p5_0 = {
-	_vq_quantthresh__44c5_s_p5_0,
-	_vq_quantmap__44c5_s_p5_0,
-	9,
-	9
+static const long _vq_quantlist__44c5_s_p9_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static static_codebook _44c5_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__44c5_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c5_s_p5_0,
-	NULL,
-	&_vq_auxt__44c5_s_p5_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c5_s_p9_2[] = {
+         3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 9,11, 5, 6, 7, 7, 8, 7, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7,
+         7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+         7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,10, 9,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,11,11,
+        11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
+        10,10,10,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
+         9, 9, 9,10, 9,10,10,10,10,10,10,10,10,11,11,11,
+        11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,
+        10,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10,10,10,10,10,10,11,11,11,11,11, 9, 9,10, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
+        11,11,11, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
+        11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+        10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
+        10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+        11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
+        11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+        10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static long _vq_quantlist__44c5_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const static_codebook _44c5_s_p9_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c5_s_p9_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c5_s_p9_2,
+        0
 };
 
-static long _vq_lengthlist__44c5_s_p6_0[] = {
-	 2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
-	12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 0, 6, 6, 7, 7, 8, 8, 9,10,10,10,11,11,
-	11,12,12,12, 0, 0, 0, 7, 7, 8, 8,10,10,10,10,11,
-	11,12,12,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 9,10,10,10,
-	10,11,11,12,12,12,13, 0, 0, 0, 8, 8, 9, 9,10,10,
-	10,10,11,11,12,12,13,12, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8,
-	 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8,
-	 8, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	 9, 9,10,10,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,11,12,12,12,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,12,13,13,13, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,12,13,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
-	13,
+static const char _huff_lengthlist__44c5_s_short[] = {
+         5, 8,10,14,11,11,12,16,15,17, 5, 5, 7, 9, 7, 8,
+        10,13,17,17, 7, 5, 5,10, 5, 7, 8,11,13,15,10, 8,
+        10, 8, 8, 8,11,15,18,18, 8, 5, 5, 8, 3, 4, 6,10,
+        14,16, 9, 7, 6, 7, 4, 3, 5, 9,14,18,10, 9, 8,10,
+         6, 5, 6, 9,14,18,12,12,11,12, 8, 7, 8,11,14,18,
+        14,13,12,10, 7, 5, 6, 9,14,18,14,14,13,10, 6, 5,
+         6, 8,11,16,
 };
 
-static float _vq_quantthresh__44c5_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _huff_book__44c5_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c5_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const char _huff_lengthlist__44c6_s_long[] = {
+         3, 8,11,13,14,14,13,13,16,14, 6, 3, 4, 7, 9, 9,
+        10,11,14,13,10, 4, 3, 5, 7, 7, 9,10,13,15,12, 7,
+         4, 4, 6, 6, 8,10,13,15,12, 8, 6, 6, 6, 6, 8,10,
+        13,14,11, 9, 7, 6, 6, 6, 7, 8,12,11,13,10, 9, 8,
+         7, 6, 6, 7,11,11,13,11,10, 9, 9, 7, 7, 6,10,11,
+        13,13,13,13,13,11, 9, 8,10,12,12,15,15,16,15,12,
+        11,10,10,12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p6_0 = {
-	_vq_quantthresh__44c5_s_p6_0,
-	_vq_quantmap__44c5_s_p6_0,
-	17,
-	17
+static const static_codebook _huff_book__44c6_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c6_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static static_codebook _44c5_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__44c5_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c5_s_p6_0,
-	NULL,
-	&_vq_auxt__44c5_s_p6_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c6_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44c5_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44c6_s_p1_0[] = {
+         1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
+         9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+         0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+         9, 9, 0, 8, 8, 0, 8, 8, 5, 9, 9, 0, 8, 8, 0, 8,
+         8,
 };
-
-static long _vq_lengthlist__44c5_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10,10, 9,11,10,10, 6, 9, 9,
-	10, 9,10,11,10, 9, 7,10,10,11,11,11,11,10,10, 6,
-	 9, 9,10,10, 9,10, 9, 9, 6, 9, 9,10,10,10,11, 9,
-	 9,
+static const static_codebook _44c6_s_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c6_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c6_s_p1_0,
+        0
 };
 
-static float _vq_quantthresh__44c5_s_p7_0[] = {
-	-5.5, 5.5, 
+static const long _vq_quantlist__44c6_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44c5_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c5_s_p7_0 = {
-	_vq_quantthresh__44c5_s_p7_0,
-	_vq_quantmap__44c5_s_p7_0,
-	3,
-	3
+static const char _vq_lengthlist__44c6_s_p2_0[] = {
+         3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+         7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+         8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+        11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
+        10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,11,
+         0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
+         0, 0,14,13, 8, 9, 9,11,11, 0,11,11,12,12, 0,10,
+        11,12,12, 0,14,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+         0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
+         7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+         9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
+        12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
+        13, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
+         0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
+        10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,11,
+        11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,11,
+         0, 0, 0,10,11, 8,10,10,12,12, 0,10,10,12,12, 0,
+        10,10,12,12, 0,12,13,13,13, 0, 0, 0,14,13, 8,10,
+        10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
+        13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         7,10,10,14,13, 0, 9, 9,13,12, 0, 9, 9,12,12, 0,
+        10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
+         9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+        12,12, 9,11,11,14,13, 0,11,10,14,13, 0,11,11,13,
+        13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
+         0,10,11,13,14, 0,11,11,13,13, 0,12,12,13,13, 0,
+         0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+        11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
+        12,13,13, 0, 0, 0,13,13, 9,11,11,14,14, 0,11,11,
+        13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
+        13,
 };
 
-static static_codebook _44c5_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__44c5_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c5_s_p7_0,
-	NULL,
-	&_vq_auxt__44c5_s_p7_0,
-	NULL,
-	0
+static const static_codebook _44c6_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c6_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c6_s_p2_0,
+        0
 };
 
-static long _vq_quantlist__44c5_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44c6_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c5_s_p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
-	 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
-	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
+static const char _vq_lengthlist__44c6_s_p3_0[] = {
+         2, 3, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+         9,10, 0, 4, 4, 6, 6, 7, 7,10, 9, 0, 5, 5, 7, 7,
+         8, 8,10,10, 0, 0, 0, 7, 6, 8, 8,10,10, 0, 0, 0,
+         7, 7, 9, 9,11,11, 0, 0, 0, 7, 7, 9, 9,11,11, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c5_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44c6_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c6_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p3_0,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44c6_s_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p7_1 = {
-	_vq_quantthresh__44c5_s_p7_1,
-	_vq_quantmap__44c5_s_p7_1,
-	11,
-	11
+static const char _vq_lengthlist__44c6_s_p4_0[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,10,
+        10, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,11,11, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
+        11,11,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,
+        10,11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+        10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
+         9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c5_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c5_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c5_s_p7_1,
-	NULL,
-	&_vq_auxt__44c5_s_p7_1,
-	NULL,
-	0
+static const static_codebook _44c6_s_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c6_s_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c6_s_p4_0,
+        0
 };
 
-static long _vq_quantlist__44c5_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c6_s_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c5_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 6, 5, 5,
-	 7, 7, 8, 8, 9, 9,10,10,10,10, 7, 5, 5, 7, 7, 8,
-	 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,11,12, 9, 9, 9, 9, 9,10,10,10,11,11, 0,13,
-	12, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0, 9,10,
-	 9, 9,10,10,11,11,12,11, 0, 0, 0,10,10, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,11,12,
-	12,12, 0, 0, 0,14,14,10,10,11,11,11,11,12,12, 0,
-	 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,11,12,12,13,13,
+static const char _vq_lengthlist__44c6_s_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6, 9, 9,10,10,
+        10, 9, 4, 6, 6, 9,10, 9,10, 9,10, 6, 9, 9,10,12,
+        11,10,11,11, 7,10, 9,11,12,12,12,12,12, 7,10,10,
+        11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
+         9,10,11,12,12,12,12,12, 7,10, 9,12,12,12,12,12,
+        12,
 };
 
-static float _vq_quantthresh__44c5_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44c6_s_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c6_s_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c6_s_p5_0,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c6_s_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p8_0 = {
-	_vq_quantthresh__44c5_s_p8_0,
-	_vq_quantmap__44c5_s_p8_0,
-	13,
-	13
+static const char _vq_lengthlist__44c6_s_p5_1[] = {
+         3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
+         7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 8,
+         8,11, 6, 6, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
+         6, 7, 8, 8, 8, 8, 9,11,11,11, 7, 7, 8, 8, 8, 8,
+         8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 8,11,11,11,
+         8, 8, 8, 8, 8, 8, 8, 8,11,11,11,10,10, 8, 8, 8,
+         8, 8, 8,11,11,11,10,10, 8, 8, 8, 8, 8, 8,11,11,
+        11,10,10, 7, 7, 8, 8, 8, 8,
 };
 
-static static_codebook _44c5_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__44c5_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c5_s_p8_0,
-	NULL,
-	&_vq_auxt__44c5_s_p8_0,
-	NULL,
-	0
+static const static_codebook _44c6_s_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c6_s_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p5_1,
+        0
 };
 
-static long _vq_quantlist__44c5_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c6_s_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c5_s_p8_1[] = {
-	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+static const char _vq_lengthlist__44c6_s_p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 8, 8,10, 9,10,10, 6, 5, 5,
+         7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
+         9,10, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10,
+        11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
+        12, 0,11,11, 8, 8,10,10,11,11,12,12,12,12, 0,11,
+        12, 9, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-static float _vq_quantthresh__44c5_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c6_s_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c6_s_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p6_0,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c6_s_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p8_1 = {
-	_vq_quantthresh__44c5_s_p8_1,
-	_vq_quantmap__44c5_s_p8_1,
-	5,
-	5
+static const char _vq_lengthlist__44c6_s_p6_1[] = {
+         3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static static_codebook _44c5_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__44c5_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c5_s_p8_1,
-	NULL,
-	&_vq_auxt__44c5_s_p8_1,
-	NULL,
-	0
+static const static_codebook _44c6_s_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c6_s_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c6_s_p6_1,
+        0
 };
 
-static long _vq_quantlist__44c5_s_p9_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const long _vq_quantlist__44c6_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c5_s_p9_0[] = {
-	 1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 5,
-	 7, 7,11,11,11,11,11,11,11,11,11,11,11,11, 5, 9,
-	 7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const char _vq_lengthlist__44c6_s_p7_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 8, 8,10,10,11,10, 6, 5, 5,
+         7, 7, 8, 8, 9, 9,10,10,12,11, 6, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,12,11,21, 7, 7, 7, 7, 9, 9,10,10,
+        11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
+        12,21,12,12, 9, 9,10,10,11,11,11,11,12,12,21,12,
+        12, 9, 9,10,10,11,11,12,12,12,12,21,21,21,11,11,
+        10,10,11,12,12,12,13,13,21,21,21,11,11,10,10,12,
+        12,12,12,13,13,21,21,21,15,15,11,11,12,12,13,13,
+        13,13,21,21,21,15,16,11,11,12,12,13,13,14,14,21,
+        21,21,21,20,13,13,13,13,13,13,14,14,20,20,20,20,
+        20,13,13,13,13,13,13,14,14,
 };
 
-static float _vq_quantthresh__44c5_s_p9_0[] = {
-	-2320.5, -1963.5, -1606.5, -1249.5, -892.5, -535.5, -178.5, 178.5, 
-	535.5, 892.5, 1249.5, 1606.5, 1963.5, 2320.5, 
+static const static_codebook _44c6_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c6_s_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p7_0,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p9_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const long _vq_quantlist__44c6_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p9_0 = {
-	_vq_quantthresh__44c5_s_p9_0,
-	_vq_quantmap__44c5_s_p9_0,
-	15,
-	15
+static const char _vq_lengthlist__44c6_s_p7_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6,
+         7, 7, 7, 7, 8, 7, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7,
+         7, 9, 6, 6, 7, 7, 7, 7, 8, 7, 7, 8, 9, 9, 9, 7,
+         7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
+         8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
+         8, 8, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 8, 8, 8, 7,
+         7, 8, 8, 9, 9, 9, 8, 8, 8, 8, 7, 7, 8, 8, 9, 9,
+         9, 8, 8, 7, 7, 7, 7, 8, 8,
 };
 
-static static_codebook _44c5_s_p9_0 = {
-	2, 225,
-	_vq_lengthlist__44c5_s_p9_0,
-	1, -512522752, 1628852224, 4, 0,
-	_vq_quantlist__44c5_s_p9_0,
-	NULL,
-	&_vq_auxt__44c5_s_p9_0,
-	NULL,
-	0
+static const static_codebook _44c6_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c6_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p7_1,
+        0
 };
 
-static long _vq_quantlist__44c5_s_p9_1[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44c6_s_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44c5_s_p9_1[] = {
-	 1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,11,11,12,12,13,
-	13, 6, 5, 5, 6, 6, 8, 8,10,10,11,11,12,12,13,13,
-	13,13, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,13,
-	13,13,13,18, 7, 7, 8, 8, 9, 9,10,11,11,11,12,12,
-	13,13,13,14,18, 7, 7, 8, 8, 9, 9,11,10,12,12,13,
-	13,13,13,14,15,18,12,12, 9, 9,10,10,11,11,12,12,
-	13,13,13,14,14,14,18,12,12, 9, 8,10,10,11,11,12,
-	12,14,13,13,14,15,15,18,16,18,11,11,11,11,12,12,
-	13,13,13,14,14,14,14,15,17,18,17,11,10,11, 9,12,
-	13,13,13,14,14,13,14,14,14,18,18,18,13,14,11,12,
-	12,12,13,14,13,13,14,15,16,15,18,18,18,15,13,12,
-	 9,12,11,13,14,14,15,14,14,16,14,18,18,18,18,18,
-	12,13,13,13,13,14,15,14,15,15,15,15,18,18,18,18,
-	17,14,12,13,11,14,12,15,14,14,15,16,15,18,18,18,
-	17,18,15,18,13,13,14,13,15,14,16,15,17,16,18,18,
-	17,18,18,15,17,14,13,14,12,14,14,15,15,15,15,18,
-	18,18,17,17,18,18,14,15,14,14,14,14,15,14,16,16,
-	17,18,18,18,18,17,17,15,15,13,13,15,13,15,13,15,
-	15,
+static const char _vq_lengthlist__44c6_s_p8_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 7, 9, 8,10, 9, 6,
+         5, 5, 8, 8, 9, 9, 8, 8, 9, 9,11,10,11,10, 6, 5,
+         5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,18, 8, 8,
+         9, 8,10,10, 9, 9,10,10,10,10,11,10,18, 8, 8, 9,
+         9,10,10, 9, 9,10,10,11,11,12,12,18,12,13, 9,10,
+        10,10, 9,10,10,10,11,11,12,11,18,13,13, 9, 9,10,
+        10,10,10,10,10,11,11,12,12,18,18,18,10,10, 9, 9,
+        11,11,11,11,11,12,12,12,18,18,18,10, 9,10, 9,11,
+        10,11,11,11,11,13,12,18,18,18,14,13,10,10,11,11,
+        12,12,12,12,12,12,18,18,18,14,13,10,10,11,10,12,
+        12,12,12,12,12,18,18,18,18,18,12,12,11,11,12,12,
+        13,13,13,14,18,18,18,18,18,12,12,11,11,12,11,13,
+        13,14,13,18,18,18,18,18,16,16,11,12,12,13,13,13,
+        14,13,18,18,18,18,18,16,15,12,11,12,11,13,11,15,
+        14,
 };
 
-static float _vq_quantthresh__44c5_s_p9_1[] = {
-	-157.5, -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 
-	10.5, 31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 157.5, 
+static const static_codebook _44c6_s_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c6_s_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p8_0,
+        0
 };
 
-static long _vq_quantmap__44c5_s_p9_1[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c6_s_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c5_s_p9_1 = {
-	_vq_quantthresh__44c5_s_p9_1,
-	_vq_quantmap__44c5_s_p9_1,
-	17,
-	17
-};
-
-static static_codebook _44c5_s_p9_1 = {
-	2, 289,
-	_vq_lengthlist__44c5_s_p9_1,
-	1, -520814592, 1620377600, 5, 0,
-	_vq_quantlist__44c5_s_p9_1,
-	NULL,
-	&_vq_auxt__44c5_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c5_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__44c5_s_p9_2[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,11, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11, 5, 5, 7, 7, 7,
-	 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
-	 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11, 8, 8, 8, 8,
-	 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,11,11,
-	11, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,
-	10,10,10,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,11,
-	11,11, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
-	10,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
-	 9, 9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
-	11,11,11, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
-	10,11,11,11,11,11,11,11,10, 9,10,10,10,10,10,10,
-	10,10,10, 9,10,10,11,11,11,11,11,11,11, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
-	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	11,11,11,11,11,11,11,11,11,10,10,10,10,10, 9,10,
-	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
-	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
-	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
-	11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
-	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
-	10,10,10,10,10,10,10,10,10,
-};
-
-static float _vq_quantthresh__44c5_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__44c5_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c5_s_p9_2 = {
-	_vq_quantthresh__44c5_s_p9_2,
-	_vq_quantmap__44c5_s_p9_2,
-	21,
-	21
-};
-
-static static_codebook _44c5_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__44c5_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c5_s_p9_2,
-	NULL,
-	&_vq_auxt__44c5_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c5_s_short[] = {
-	 3, 9,10,15,10,10,11,15,15,17, 4, 5, 7, 8, 7, 7,
-	 9,13,15,16, 7, 6, 6,10, 6, 8, 9,12,12,16,10, 8,
-	11, 8, 8, 7,11,15,17,17, 8, 5, 5, 8, 3, 4, 6,10,
-	15,17,10, 7, 7, 7, 4, 4, 5,10,14,17,10, 9, 8, 9,
-	 6, 5, 6,10,14,17,12,12,11,12, 9, 8, 8,11,14,17,
-	13,14,13,10, 7, 5, 6, 9,13,17,14,14,14,10, 7, 5,
-	 6, 7,10,15,
-};
-
-static static_codebook _huff_book__44c5_s_short = {
-	2, 100,
-	_huff_lengthlist__44c5_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c6_s_long[] = {
-	 3, 8,11,13,13,13,12,12,13,18, 6, 3, 4, 7, 9, 9,
-	11,11,13,16, 9, 4, 3, 5, 7, 7, 9,10,14,18,11, 7,
-	 4, 4, 6, 6, 8,10,14,15,11, 9, 6, 6, 6, 6, 8,10,
-	13,15,10, 9, 7, 6, 6, 6, 7, 8,12,12,12,10, 9, 8,
-	 7, 6, 6, 7,11,12,11,10,10, 9, 9, 7, 7, 6, 9,12,
-	12,12,13,13,13,10, 9, 8,10,12,13,14,16,16,17,14,
-	12,11,11,13,
-};
-
-static static_codebook _huff_book__44c6_s_long = {
-	2, 100,
-	_huff_lengthlist__44c6_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c6_s_p1_0[] = {
-	 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 8, 0,
-	 8, 8, 6, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
-	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-	 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
-	 8,
-};
-
-static float _vq_quantthresh__44c6_s_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44c6_s_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p1_0 = {
-	_vq_quantthresh__44c6_s_p1_0,
-	_vq_quantmap__44c6_s_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44c6_s_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44c6_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c6_s_p1_0,
-	NULL,
-	&_vq_auxt__44c6_s_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c6_s_p2_0[] = {
-	 3, 5, 5, 8, 8, 0, 5, 5, 9, 9, 0, 5, 5, 9, 9, 0,
-	 7, 7,10,10, 0, 0, 0,10,10, 5, 7, 7, 9, 9, 0, 8,
-	 7,10, 9, 0, 8, 8,10,10, 0,10,10,11,11, 0, 0, 0,
-	11,11, 5, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8,10,
-	10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
-	 0,11,10,12,12, 0,11,11,12,12, 0,13,13,14,14, 0,
-	 0, 0,14,14, 8, 9, 9,10,11, 0,10,11,12,12, 0,11,
-	11,12,12, 0,13,13,14,14, 0, 0, 0,14,14, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10,
-	 0, 7, 7,10,10, 0, 9, 8,11,10, 0, 0, 0,11,11, 5,
-	 7, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
-	 9,10,11, 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,
-	12,11, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
-	13, 9,10,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
-	 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
-	10,10, 0, 8, 9,11,11, 0, 0, 0,11,10, 5, 7, 8,10,
-	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 8,11,11,
-	 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,12,12, 0,
-	10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,13, 9, 9,
-	10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,12,12,
-	13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7,10,10,13,13, 0, 9, 8,12,12, 0, 8, 9,12,12, 0,
-	10, 9,12,12, 0, 0, 0,12,12, 7,10,10,13,13, 0, 9,
-	 9,12,12, 0, 9, 8,12,12, 0, 9,10,12,12, 0, 0, 0,
-	12,12,10,11,11,14,14, 0,11,10,13,13, 0,11,11,13,
-	13, 0,12,12,13,13, 0, 0, 0,13,13,10,11,11,14,14,
-	 0,10,11,13,13, 0,11,11,13,13, 0,12,12,13,13, 0,
-	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
-	11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
-	12,13,13, 0, 0, 0,13,13,10,11,11,14,14, 0,11,11,
-	13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,13,
-	13,
+static const char _vq_lengthlist__44c6_s_p8_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+         8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,
+         7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,11,11, 8, 7, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,
+        11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,
+        11,11, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9,10, 9, 9,
+        10, 9,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
+        10,10, 9,10,10, 9,10,11,11,11,11,11, 9, 9, 9, 9,
+        10,10,10, 9,10,10,10,10, 9,10,10, 9,11,11,11,11,
+        11,11,11, 9, 9, 9, 9,10,10,10,10, 9,10,10,10,10,
+        10,11,11,11,11,11,11,11,10, 9,10,10,10,10,10,10,
+        10, 9,10, 9,10,10,11,11,11,11,11,11,11,10, 9,10,
+         9,10,10, 9,10,10,10,10,10,10,10,11,11,11,11,11,
+        11,11,10,10,10,10,10,10,10, 9,10,10,10,10,10, 9,
+        11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+        10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
+        10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+        11,11,11,10,10,10,10,10,10,10,10,10, 9,10,10,11,
+        11,11,11,11,11,11,11,11,10,10,10, 9,10,10,10,10,
+        10,10,10,10,10,11,11,11,11,11,11,11,11,10,11, 9,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static float _vq_quantthresh__44c6_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c6_s_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c6_s_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c6_s_p8_1,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c6_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p2_0 = {
-	_vq_quantthresh__44c6_s_p2_0,
-	_vq_quantmap__44c6_s_p2_0,
-	5,
-	5
+static const char _vq_lengthlist__44c6_s_p9_0[] = {
+         1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 7, 7,
+        11,11,11,11,11,11,11,11,11,11, 5, 8, 9,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static static_codebook _44c6_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c6_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c6_s_p2_0,
-	NULL,
-	&_vq_auxt__44c6_s_p2_0,
-	NULL,
-	0
+static const static_codebook _44c6_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c6_s_p9_0,
+        1, -511845376, 1630791680, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p9_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44c6_s_p9_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c6_s_p3_0[] = {
-	 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
-	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
-	 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
-	 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c6_s_p9_1[] = {
+         1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
+         8, 8, 8, 8, 8, 7, 9, 8,10,10, 5, 6, 6, 8, 8, 9,
+         9, 8, 8,10,10,10,10,16, 9, 9, 9, 9, 9, 9, 9, 8,
+        10, 9,11,11,16, 8, 9, 9, 9, 9, 9, 9, 9,10,10,11,
+        11,16,13,13, 9, 9,10, 9, 9,10,11,11,11,12,16,13,
+        14, 9, 8,10, 8, 9, 9,10,10,12,11,16,14,16, 9, 9,
+         9, 9,11,11,12,11,12,11,16,16,16, 9, 7, 9, 6,11,
+        11,11,10,11,11,16,16,16,11,12, 9,10,11,11,12,11,
+        13,13,16,16,16,12,11,10, 7,12,10,12,12,12,12,16,
+        16,15,16,16,10,11,10,11,13,13,14,12,16,16,16,15,
+        15,12,10,11,11,13,11,12,13,
 };
 
-static float _vq_quantthresh__44c6_s_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44c6_s_p9_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c6_s_p9_1,
+        1, -518889472, 1622704128, 4, 0,
+        (long *)_vq_quantlist__44c6_s_p9_1,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44c6_s_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p3_0 = {
-	_vq_quantthresh__44c6_s_p3_0,
-	_vq_quantmap__44c6_s_p3_0,
-	9,
-	9
+static const char _vq_lengthlist__44c6_s_p9_2[] = {
+         2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static static_codebook _44c6_s_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44c6_s_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c6_s_p3_0,
-	NULL,
-	&_vq_auxt__44c6_s_p3_0,
-	NULL,
-	0
+static const static_codebook _44c6_s_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44c6_s_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44c6_s_p9_2,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44c6_s_p4_0[] = {
-	 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 9,10,10,11,11,
-	11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
-	11,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
-	10,11,11,12,12,12,12, 0, 0, 0, 6, 6, 7, 7, 9, 9,
-	10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 7, 7, 9,
-	 9,10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__44c6_s_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44c6_s_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p4_0 = {
-	_vq_quantthresh__44c6_s_p4_0,
-	_vq_quantmap__44c6_s_p4_0,
-	17,
-	17
-};
-
-static static_codebook _44c6_s_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44c6_s_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c6_s_p4_0,
-	NULL,
-	&_vq_auxt__44c6_s_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p5_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44c6_s_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 4, 7, 7, 9,10,10,10,
-	10,10, 4, 7, 7, 9,10,10,10,10,10, 5, 9, 9, 9,11,
-	11, 9,11,11, 7,10,10,11,12,11,12,12,12, 7,10,10,
-	11,12,12,12,12,12, 6,10,10, 9,11,11,10,11,11, 7,
-	10, 9,11,12,12,11,12,11, 7,10,10,11,12,12,11,12,
-	12,
-};
-
-static float _vq_quantthresh__44c6_s_p5_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44c6_s_p5_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p5_0 = {
-	_vq_quantthresh__44c6_s_p5_0,
-	_vq_quantmap__44c6_s_p5_0,
-	3,
-	3
-};
-
-static static_codebook _44c6_s_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44c6_s_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c6_s_p5_0,
-	NULL,
-	&_vq_auxt__44c6_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c6_s_p5_1[] = {
-	 3, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,11, 4, 4, 6, 6,
-	 8, 8, 9, 9, 9, 9,11, 4, 4, 6, 6, 8, 8, 9, 8, 9,
-	 9,12, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,12,12,12, 6,
-	 6, 8, 8, 9, 9, 9, 9,11,11,11, 7, 7, 8, 8, 9, 9,
-	 9, 9,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,
-	 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,11,11, 8, 8, 8,
-	 8, 9, 9,11,11,11,11,11, 7, 7, 8, 8, 8, 8,11,11,
-	11,11,11, 7, 7, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44c6_s_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c6_s_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p5_1 = {
-	_vq_quantthresh__44c6_s_p5_1,
-	_vq_quantmap__44c6_s_p5_1,
-	11,
-	11
-};
-
-static static_codebook _44c6_s_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44c6_s_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c6_s_p5_1,
-	NULL,
-	&_vq_auxt__44c6_s_p5_1,
-	NULL,
-	0
+static const char _huff_lengthlist__44c6_s_short[] = {
+         3, 9,11,11,13,14,19,17,17,19, 5, 4, 5, 8,10,10,
+        13,16,18,19, 7, 4, 4, 5, 8, 9,12,14,17,19, 8, 6,
+         5, 5, 7, 7,10,13,16,18,10, 8, 7, 6, 5, 5, 8,11,
+        17,19,11, 9, 7, 7, 5, 4, 5, 8,17,19,13,11, 8, 7,
+         7, 5, 5, 7,16,18,14,13, 8, 6, 6, 5, 5, 7,16,18,
+        18,16,10, 8, 8, 7, 7, 9,16,18,18,18,12,10,10, 9,
+         9,10,17,18,
 };
 
-static long _vq_quantlist__44c6_s_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _huff_book__44c6_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c6_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__44c6_s_p6_0[] = {
-	 1, 4, 4, 6, 7, 8, 8, 8, 8, 9, 9,10,10, 5, 5, 5,
-	 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
-	 9, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,
-	11,11,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
-	12, 0,11,11, 8, 8,10, 9,10,11,11,11,12,12, 0,12,
-	12, 8, 8,10, 9,11,11,12,11,13,13, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+static const char _huff_lengthlist__44c7_s_long[] = {
+         3, 8,11,13,15,14,14,13,15,14, 6, 4, 5, 7, 9,10,
+        11,11,14,13,10, 4, 3, 5, 7, 8, 9,10,13,13,12, 7,
+         4, 4, 5, 6, 8, 9,12,14,13, 9, 6, 5, 5, 6, 8, 9,
+        12,14,12, 9, 7, 6, 5, 5, 6, 8,11,11,12,11, 9, 8,
+         7, 6, 6, 7,10,11,13,11,10, 9, 8, 7, 6, 6, 9,11,
+        13,13,12,12,12,10, 9, 8, 9,11,12,14,15,15,14,12,
+        11,10,10,12,
 };
 
-static float _vq_quantthresh__44c6_s_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _huff_book__44c7_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c7_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c7_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p6_0 = {
-	_vq_quantthresh__44c6_s_p6_0,
-	_vq_quantmap__44c6_s_p6_0,
-	13,
-	13
+static const char _vq_lengthlist__44c7_s_p1_0[] = {
+         1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
+         9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 5, 9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+         0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+         9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
+         8,
 };
 
-static static_codebook _44c6_s_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44c6_s_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c6_s_p6_0,
-	NULL,
-	&_vq_auxt__44c6_s_p6_0,
-	NULL,
-	0
+static const static_codebook _44c7_s_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c7_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c7_s_p1_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c7_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c6_s_p6_1[] = {
-	 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 4, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c6_s_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c6_s_p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p6_1 = {
-	_vq_quantthresh__44c6_s_p6_1,
-	_vq_quantmap__44c6_s_p6_1,
-	5,
-	5
-};
-
-static static_codebook _44c6_s_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44c6_s_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c6_s_p6_1,
-	NULL,
-	&_vq_auxt__44c6_s_p6_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c6_s_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
-	 7, 7, 8, 8, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9, 9, 9,11,11,12,12,19, 7, 7, 7, 7, 9, 9,10,10,
-	11,11,12,12,19, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
-	12,19,11,11, 8, 8,10,10,11,11,11,12,12,12,19,12,
-	12, 8, 8,10, 9,11,11,12,12,13,12,19,19,19,11,11,
-	10,10,11,11,12,12,13,13,19,19,19,11,11,10,10,11,
-	11,12,12,13,13,19,19,19,14,14,11,11,11,12,13,13,
-	13,13,19,19,19,15,15,11,11,12,12,13,12,14,14,19,
-	19,19,19,18,13,13,12,12,13,13,14,14,18,18,18,18,
-	18,13,12,12,12,13,13,14,14,
-};
-
-static float _vq_quantthresh__44c6_s_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
-};
-
-static long _vq_quantmap__44c6_s_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p7_0 = {
-	_vq_quantthresh__44c6_s_p7_0,
-	_vq_quantmap__44c6_s_p7_0,
-	13,
-	13
-};
-
-static static_codebook _44c6_s_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44c6_s_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44c6_s_p7_0,
-	NULL,
-	&_vq_auxt__44c6_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c6_s_p7_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 7, 7,
-	 7, 7, 7, 7, 8, 8, 9, 5, 5, 6, 6, 7, 7, 7, 7, 7,
-	 7, 9, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 7,
-	 7, 7, 7, 7, 8, 7, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
-	 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9,
-	 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 8, 9, 8, 8, 7,
-	 7, 7, 7, 9, 9, 8, 8, 9, 8, 8, 7, 7, 8, 8, 9, 9,
-	 9, 9, 8, 7, 7, 7, 7, 8, 8,
-};
-
-static float _vq_quantthresh__44c6_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c6_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c6_s_p7_1 = {
-	_vq_quantthresh__44c6_s_p7_1,
-	_vq_quantmap__44c6_s_p7_1,
-	11,
-	11
-};
-
-static static_codebook _44c6_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c6_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c6_s_p7_1,
-	NULL,
-	&_vq_auxt__44c6_s_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c6_s_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__44c6_s_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 9, 9,10,11,11, 6,
-	 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
-	 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,17, 8, 8,
-	 8, 8,10,10, 8, 9,10,10,11,11,12,11,17, 8, 8, 9,
-	 9,10,10, 9, 9,10,10,11,12,12,12,17,12,13, 9, 9,
-	10,10, 9,10,10,10,11,11,13,12,17,13,13,10, 9,10,
-	10,10,10,10,11,12,11,12,12,17,17,17, 9, 9, 9, 9,
-	10,10,11,11,11,12,12,13,17,17,17, 9, 9, 9, 9,11,
-	10,11,11,12,12,12,13,17,17,17,13,13,10,10,11,11,
-	12,11,12,13,13,13,17,17,17,14,13,10, 9,11, 9,12,
-	12,12,13,13,14,17,17,17,17,17,11,12,11,11,12,12,
-	13,14,13,14,17,17,17,17,17,12,10,11, 8,12,11,13,
-	14,14,14,17,17,16,16,16,13,15,11,12,12,13,13,13,
-	14,14,16,16,16,16,16,14,13,12, 9,13,10,14,13,14,
-	13,
+static const char _vq_lengthlist__44c7_s_p2_0[] = {
+         3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+         7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+         8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+        11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
+        10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
+         0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
+         0, 0,14,13, 8, 9, 9,10,11, 0,11,11,12,12, 0,10,
+        11,12,12, 0,13,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+         0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
+         7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+         9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
+        12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
+        13, 8, 9,10,12,12, 0,10,10,12,12, 0,10,10,11,12,
+         0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
+        10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,10,
+        11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,10,
+         0, 0, 0,10,11, 9,10,10,12,12, 0,10,10,12,12, 0,
+        10,10,12,12, 0,12,13,13,13, 0, 0, 0,13,12, 9,10,
+        10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
+        13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         7,10,10,14,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
+        10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
+         9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+        12,12, 9,11,11,14,13, 0,11,10,13,12, 0,11,11,13,
+        13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
+         0,10,11,12,13, 0,11,11,13,13, 0,12,12,13,13, 0,
+         0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+        11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,12,
+        12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
+        13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
+        13,
 };
 
-static float _vq_quantthresh__44c6_s_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const static_codebook _44c7_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c7_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c7_s_p2_0,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const long _vq_quantlist__44c7_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p8_0 = {
-	_vq_quantthresh__44c6_s_p8_0,
-	_vq_quantmap__44c6_s_p8_0,
-	15,
-	15
+static const char _vq_lengthlist__44c7_s_p3_0[] = {
+         2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+         9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
+         8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
+         7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c6_s_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44c6_s_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44c6_s_p8_0,
-	NULL,
-	&_vq_auxt__44c6_s_p8_0,
-	NULL,
-	0
+static const static_codebook _44c7_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c7_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p3_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const long _vq_quantlist__44c7_s_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__44c6_s_p8_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,
-	 9, 8, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
-	 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
-	 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,11,10,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9,11,11,
-	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 9,10, 9,
-	10,10, 9,11,11,11, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10, 9,10, 9, 9, 9, 9,11,11,11,11,11, 8, 8, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,11,11,11,
-	11,11, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,10, 9, 9,
-	 9, 9,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
-	 9,10, 9,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
-	 9, 9,10,10,10,10, 9,10,10, 9,10, 9,11,11,11,11,
-	11,11,11, 9, 9, 9, 9,10, 9,10, 9, 9,10,10,10,10,
-	10,10,11,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,
-	 9,10, 9,10,10, 9,11,11,11,11,11,11,10, 9, 9, 9,
-	 9, 9,10, 9,10,10,10,10,10,10,10,11,11,11,11,11,
-	11,11, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
-	11,11,11,11,11,11,11,11,11, 9,10, 9,10, 9,10,10,
-	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
-	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
-	11,11,11,10,10, 9,10,10,10,10, 9,10, 9,10,10,11,
-	11,11,11,11,11,11,11,11,10,10,10, 9,10,10,10,10,
-	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
-	10, 9,10,10,10,10,10,10,10,
+static const char _vq_lengthlist__44c7_s_p4_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
+        12,12, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+        11,12,12, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
+        11,12,12,12, 0, 0, 0, 6, 6, 8, 7, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,12,12,13,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
+        10,11,11,12,12,12,13, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+         9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c6_s_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const static_codebook _44c7_s_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c7_s_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c7_s_p4_0,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const long _vq_quantlist__44c7_s_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p8_1 = {
-	_vq_quantthresh__44c6_s_p8_1,
-	_vq_quantmap__44c6_s_p8_1,
-	21,
-	21
+static const char _vq_lengthlist__44c7_s_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 7,10,10,10,10,
+        10, 9, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
+        12,10,11,12, 7,10,10,11,12,12,12,12,12, 7,10,10,
+        11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
+        10,10,12,12,12,12,11,12, 7,10,10,11,12,12,12,12,
+        12,
 };
 
-static static_codebook _44c6_s_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44c6_s_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c6_s_p8_1,
-	NULL,
-	&_vq_auxt__44c6_s_p8_1,
-	NULL,
-	0
+static const static_codebook _44c7_s_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c7_s_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c7_s_p5_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c7_s_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44c6_s_p9_0[] = {
-	 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+static const char _vq_lengthlist__44c7_s_p5_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
+         7, 7, 8, 8, 9, 9,11, 4, 4, 6, 6, 7, 7, 8, 8, 9,
+         9,12, 5, 5, 6, 6, 7, 7, 9, 9, 9, 9,12,12,12, 6,
+         6, 7, 7, 9, 9, 9, 9,11,11,11, 7, 7, 7, 7, 8, 8,
+         9, 9,11,11,11, 7, 7, 7, 7, 8, 8, 9, 9,11,11,11,
+         7, 7, 8, 8, 8, 8, 9, 9,11,11,11,11,11, 8, 8, 8,
+         8, 8, 9,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
+        11,11,11, 7, 7, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__44c6_s_p9_0[] = {
-	-3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 
-	1592.5, 2229.5, 2866.5, 3503.5, 
+static const static_codebook _44c7_s_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c7_s_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p5_1,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c7_s_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p9_0 = {
-	_vq_quantthresh__44c6_s_p9_0,
-	_vq_quantmap__44c6_s_p9_0,
-	13,
-	13
+static const char _vq_lengthlist__44c7_s_p6_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 8,10,10, 6, 5, 5,
+         7, 7, 8, 8, 9, 9, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 8, 9, 9,
+        10,10,11,11, 0, 8, 8, 7, 7, 8, 9, 9, 9,10,10,11,
+        11, 0,11,11, 9, 9,10,10,11,10,11,11,12,12, 0,12,
+        12, 9, 9,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-static static_codebook _44c6_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c6_s_p9_0,
-	1, -511845376, 1630791680, 4, 0,
-	_vq_quantlist__44c6_s_p9_0,
-	NULL,
-	&_vq_auxt__44c6_s_p9_0,
-	NULL,
-	0
+static const static_codebook _44c7_s_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c7_s_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p6_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c7_s_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c6_s_p9_1[] = {
-	 1, 4, 4, 7, 7, 7, 7, 7, 7, 8, 9,10,11, 6, 6, 6,
-	 7, 8, 8, 8, 7, 8, 9,10,11,10, 6, 5, 6, 7, 8, 8,
-	 8, 8, 8, 9,10,10,11,14, 9, 8, 8, 8, 9, 8, 8, 9,
-	10,10,12,11,14, 8, 8, 9, 8, 9, 8, 8, 8,11,10,11,
-	11,14,14,13, 8, 9, 9, 9, 9,10,11,11,12,12,13,12,
-	12, 8, 7,10, 9, 9, 9,11,11,11,10,13,13,13, 8, 9,
-	 9, 8,12,11,11,11,13,11,13,13,13, 9, 8, 9, 8,10,
-	10,11,10,11,10,13,13,13,12,12, 9,10,11,11,11,12,
-	13,12,13,13,13,13,12,10,10,10, 9,13,12,12,13,13,
-	13,13,13,13,12,12,10,10,12,12,13,13,13,13,13,13,
-	13,12,12,11,12,12,12,12,13,
+static const char _vq_lengthlist__44c7_s_p6_1[] = {
+         3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__44c6_s_p9_1[] = {
-	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
-	122.5, 171.5, 220.5, 269.5, 
+static const static_codebook _44c7_s_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c7_s_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c7_s_p6_1,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c7_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p9_1 = {
-	_vq_quantthresh__44c6_s_p9_1,
-	_vq_quantmap__44c6_s_p9_1,
-	13,
-	13
+static const char _vq_lengthlist__44c7_s_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 8, 9, 9,10,10,12,11, 6, 5, 5,
+         7, 7, 8, 8, 9,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
+         8,10,10,11,11,12,12,20, 7, 7, 7, 7, 8, 9,10,10,
+        11,11,12,13,20, 7, 7, 7, 7, 9, 9,10,10,11,12,13,
+        13,20,11,11, 8, 8, 9, 9,11,11,12,12,13,13,20,11,
+        11, 8, 8, 9, 9,11,11,12,12,13,13,20,20,20,10,10,
+        10,10,12,12,13,13,13,13,20,20,20,10,10,10,10,12,
+        12,13,13,13,14,20,20,20,14,14,11,11,12,12,13,13,
+        14,14,20,20,20,14,14,11,11,12,12,13,13,14,14,20,
+        20,20,20,19,13,13,13,13,14,14,15,14,19,19,19,19,
+        19,13,13,13,13,14,14,15,15,
 };
 
-static static_codebook _44c6_s_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c6_s_p9_1,
-	1, -518889472, 1622704128, 4, 0,
-	_vq_quantlist__44c6_s_p9_1,
-	NULL,
-	&_vq_auxt__44c6_s_p9_1,
-	NULL,
-	0
+static const static_codebook _44c7_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c7_s_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p7_0,
+        0
 };
 
-static long _vq_quantlist__44c6_s_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
+static const long _vq_quantlist__44c7_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44c6_s_p9_2[] = {
-	 2, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const char _vq_lengthlist__44c7_s_p7_1[] = {
+         4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7,
+         7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+         7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
+         7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+         7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+         7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+         7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+         8, 8, 8, 7, 7, 7, 7, 7, 7,
 };
 
-static float _vq_quantthresh__44c6_s_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+static const static_codebook _44c7_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c7_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p7_1,
+        0
 };
 
-static long _vq_quantmap__44c6_s_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
+static const long _vq_quantlist__44c7_s_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c6_s_p9_2 = {
-	_vq_quantthresh__44c6_s_p9_2,
-	_vq_quantmap__44c6_s_p9_2,
-	49,
-	49
+static const char _vq_lengthlist__44c7_s_p8_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8, 9, 9,10,10, 6,
+         5, 5, 7, 7, 9, 9, 8, 8,10, 9,11,10,12,11, 6, 5,
+         5, 8, 7, 9, 9, 8, 8,10,10,11,11,12,11,19, 8, 8,
+         8, 8,10,10, 9, 9,10,10,11,11,12,11,19, 8, 8, 8,
+         8,10,10, 9, 9,10,10,11,11,12,12,19,12,12, 9, 9,
+        10,10, 9,10,10,10,11,11,12,12,19,12,12, 9, 9,10,
+        10,10,10,10,10,12,12,12,12,19,19,19, 9, 9, 9, 9,
+        11,10,11,11,12,11,13,13,19,19,19, 9, 9, 9, 9,11,
+        10,11,11,11,12,13,13,19,19,19,13,13,10,10,11,11,
+        12,12,12,12,13,12,19,19,19,14,13,10,10,11,11,12,
+        12,12,13,13,13,19,19,19,19,19,12,12,12,11,12,13,
+        14,13,13,13,19,19,19,19,19,12,12,12,11,12,12,13,
+        14,13,14,19,19,19,19,19,16,16,12,13,12,13,13,14,
+        15,14,19,18,18,18,18,16,15,12,11,12,11,14,12,14,
+        14,
 };
 
-static static_codebook _44c6_s_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44c6_s_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44c6_s_p9_2,
-	NULL,
-	&_vq_auxt__44c6_s_p9_2,
-	NULL,
-	0
+static const static_codebook _44c7_s_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c7_s_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p8_0,
+        0
 };
 
-static long _huff_lengthlist__44c6_s_short[] = {
-	 4, 9,11,11,13,13,17,16,17,17, 4, 4, 6, 7, 9, 9,
-	12,15,17,17, 7, 5, 4, 5, 7, 8,11,12,17,17, 9, 6,
-	 4, 3, 5, 6,10,14,17,17,11, 8, 6, 4, 5, 6, 9,13,
-	17,17,11,10, 7, 5, 5, 5, 8,12,17,17,13,12, 9, 8,
-	 7, 6, 8,11,17,17,13,13, 9, 6, 6, 5, 6, 9,17,17,
-	17,16,10, 8, 7, 7, 8, 9,17,17,17,17,14,12,11,11,
-	11,13,17,17,
+static const long _vq_quantlist__44c7_s_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static static_codebook _huff_book__44c6_s_short = {
-	2, 100,
-	_huff_lengthlist__44c6_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44c7_s_p8_1[] = {
+         3, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+        10, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,11,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9, 9,10,11,10,
+        11,10, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9, 9,
+         9, 9,11,10,11,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,
+        10, 9, 9,10, 9, 9,10,11,10,10,11,10, 9, 9, 9, 9,
+         9,10,10, 9,10,10,10,10, 9,10,10,10,10,10,10,11,
+        11,11,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,11,11,10,10,10,10,10,10,10,10,10,10,10,
+        10, 9,10,10, 9,10,11,11,10,11,10,11,10, 9,10,10,
+         9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,
+        11,11,10,10,10,10,10,10, 9,10, 9,10,10, 9,10, 9,
+        10,10,10,11,10,11,10,11,11,10,10,10,10,10,10, 9,
+        10,10,10,10,10,10,10,11,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,11,10,11,
+        11,10,10,10,10, 9, 9,10,10, 9, 9,10, 9,10,10,10,
+        10,11,11,10,10,10,10,10,10,10, 9, 9,10,10,10, 9,
+         9,10,10,10,10,10,11,10,11,10,10,10,10,10,10, 9,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static long _huff_lengthlist__44c7_s_long[] = {
-	 3, 8,11,13,14,13,13,12,14,16, 6, 4, 5, 7, 9,10,
-	11,11,13,15,10, 4, 3, 5, 7, 7,10,10,14,16,11, 7,
-	 4, 4, 5, 6, 8,10,13,15,12, 9, 6, 5, 5, 6, 8, 9,
-	13,15,11, 9, 7, 6, 5, 5, 6, 8,11,13,11,10, 9, 8,
-	 7, 6, 6, 7,11,12,12,11,10, 9, 8, 7, 6, 6, 9,11,
-	12,12,12,12,12,10, 9, 8,10,12,12,14,15,16,16,14,
-	12,10,11,13,
+static const static_codebook _44c7_s_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c7_s_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c7_s_p8_1,
+        0
 };
 
-static static_codebook _huff_book__44c7_s_long = {
-	2, 100,
-	_huff_lengthlist__44c7_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44c7_s_p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44c7_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44c7_s_p9_0[] = {
+         1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 6, 6,
+        11,11,11,11,11,11,11,11,11,11, 4, 7, 7,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,
 };
 
-static long _vq_lengthlist__44c7_s_p1_0[] = {
-	 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 7, 0, 9, 8, 0,
-	 8, 8, 5, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
-	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-	 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
-	 8,
+static const static_codebook _44c7_s_p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c7_s_p9_0,
+        1, -511845376, 1630791680, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p9_0,
+        0
 };
 
-static float _vq_quantthresh__44c7_s_p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44c7_s_p9_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__44c7_s_p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44c7_s_p9_1[] = {
+         1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
+         8, 8, 9, 8, 8, 7, 9, 8,11,10, 5, 6, 6, 8, 8, 9,
+         8, 8, 8,10, 9,11,11,16, 8, 8, 9, 8, 9, 9, 9, 8,
+        10, 9,11,10,16, 8, 8, 9, 9,10,10, 9, 9,10,10,11,
+        11,16,13,13, 9, 9,10,10, 9,10,11,11,12,11,16,13,
+        13, 9, 8,10, 9,10,10,10,10,11,11,16,14,16, 8, 9,
+         9, 9,11,10,11,11,12,11,16,16,16, 9, 7,10, 7,11,
+        10,11,11,12,11,16,16,16,12,12, 9,10,11,11,12,11,
+        12,12,16,16,16,12,10,10, 7,11, 8,12,11,12,12,16,
+        16,15,16,16,11,12,10,10,12,11,12,12,16,16,16,15,
+        15,11,11,10,10,12,12,12,12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p1_0 = {
-	_vq_quantthresh__44c7_s_p1_0,
-	_vq_quantmap__44c7_s_p1_0,
-	3,
-	3
+static const static_codebook _44c7_s_p9_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c7_s_p9_1,
+        1, -518889472, 1622704128, 4, 0,
+        (long *)_vq_quantlist__44c7_s_p9_1,
+        0
 };
 
-static static_codebook _44c7_s_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44c7_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c7_s_p1_0,
-	NULL,
-	&_vq_auxt__44c7_s_p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c7_s_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static long _vq_quantlist__44c7_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44c7_s_p9_2[] = {
+         2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static long _vq_lengthlist__44c7_s_p2_0[] = {
-	 3, 5, 5, 8, 8, 0, 5, 5, 9, 9, 0, 5, 5, 9, 9, 0,
-	 7, 7,10, 9, 0, 0, 0, 9,10, 5, 7, 7, 9, 9, 0, 8,
-	 7,10, 9, 0, 8, 7,10, 9, 0,10, 9,11,11, 0, 0, 0,
-	11,11, 6, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8,10,
-	10, 0, 9, 9,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
-	 0,11,10,12,12, 0,11,11,12,12, 0,13,13,14,14, 0,
-	 0, 0,14,14, 8, 9, 9,10,11, 0,10,11,11,12, 0,11,
-	11,12,12, 0,13,13,14,14, 0, 0, 0,14,14, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 5, 8, 7,11,11, 0, 7, 7,10,10,
-	 0, 7, 7,10,10, 0, 9, 8,11,10, 0, 0, 0,11,11, 5,
-	 7, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
-	 9,10,11, 0, 0, 0,11,11, 9,10,10,12,12, 0,10,10,
-	12,11, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
-	13, 9,10,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
-	 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
-	10,10, 0, 9, 9,11,11, 0, 0, 0,11,10, 5, 7, 8,10,
-	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,11,
-	 0, 0, 0,10,11, 9,10, 9,12,11, 0,10,10,12,12, 0,
-	10,10,12,11, 0,12,12,13,13, 0, 0, 0,13,13, 9, 9,
-	10,11,12, 0,10,10,12,12, 0,10,10,11,12, 0,12,12,
-	13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7, 9, 9,13,13, 0, 9, 8,12,12, 0, 8, 9,12,12, 0,
-	10, 9,12,12, 0, 0, 0,12,12, 7,10, 9,13,13, 0, 9,
-	 9,12,12, 0, 9, 8,12,12, 0, 9,10,12,12, 0, 0, 0,
-	12,12,10,11,11,14,14, 0,11,10,13,12, 0,11,11,13,
-	13, 0,12,12,13,13, 0, 0, 0,13,13,10,11,11,14,14,
-	 0,10,11,12,13, 0,11,11,13,13, 0,12,12,13,13, 0,
-	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
-	11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
-	12,13,13, 0, 0, 0,13,13,10,11,11,14,14, 0,11,11,
-	13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,13,
-	13,
+static const static_codebook _44c7_s_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44c7_s_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44c7_s_p9_2,
+        0
 };
 
-static float _vq_quantthresh__44c7_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _huff_lengthlist__44c7_s_short[] = {
+         4,11,12,14,15,15,17,17,18,18, 5, 6, 6, 8, 9,10,
+        13,17,18,19, 7, 5, 4, 6, 8, 9,11,15,19,19, 8, 6,
+         5, 5, 6, 7,11,14,16,17, 9, 7, 7, 6, 7, 7,10,13,
+        15,19,10, 8, 7, 6, 7, 6, 7, 9,14,16,12,10, 9, 7,
+         7, 6, 4, 5,10,15,14,13,11, 7, 6, 6, 4, 2, 7,13,
+        16,16,15, 9, 8, 8, 8, 6, 9,13,19,19,17,12,11,10,
+        10, 9,11,14,
 };
 
-static long _vq_quantmap__44c7_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _huff_book__44c7_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c7_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p2_0 = {
-	_vq_quantthresh__44c7_s_p2_0,
-	_vq_quantmap__44c7_s_p2_0,
-	5,
-	5
+static const char _huff_lengthlist__44c8_s_long[] = {
+         3, 8,12,13,14,14,14,13,14,14, 6, 4, 5, 8,10,10,
+        11,11,14,13, 9, 5, 4, 5, 7, 8, 9,10,13,13,12, 7,
+         5, 4, 5, 6, 8, 9,12,13,13, 9, 6, 5, 5, 5, 7, 9,
+        11,14,12,10, 7, 6, 5, 4, 6, 7,10,11,12,11, 9, 8,
+         7, 5, 5, 6,10,10,13,12,10, 9, 8, 6, 6, 5, 8,10,
+        14,13,12,12,11,10, 9, 7, 8,10,12,13,14,14,13,12,
+        11, 9, 9,10,
 };
 
-static static_codebook _44c7_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c7_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c7_s_p2_0,
-	NULL,
-	&_vq_auxt__44c7_s_p2_0,
-	NULL,
-	0
+static const static_codebook _huff_book__44c8_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c8_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44c8_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c7_s_p3_0[] = {
-	 2, 4, 4, 5, 5, 7, 7, 8, 8, 0, 4, 4, 6, 6, 7, 7,
-	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
-	 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
-	 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c8_s_p1_0[] = {
+         1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 7, 7, 0, 9, 8, 0,
+         9, 8, 6, 7, 7, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+         0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+         9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
+         8,
 };
 
-static float _vq_quantthresh__44c7_s_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44c8_s_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c8_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c8_s_p1_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44c8_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p3_0 = {
-	_vq_quantthresh__44c7_s_p3_0,
-	_vq_quantmap__44c7_s_p3_0,
-	9,
-	9
+static const char _vq_lengthlist__44c8_s_p2_0[] = {
+         3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+         7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+         7,10, 9, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+        11,11, 5, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8, 9,
+        10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
+         0,11,10,12,11, 0,11,10,12,12, 0,13,13,14,14, 0,
+         0, 0,14,13, 8, 9, 9,10,11, 0,10,11,12,12, 0,10,
+        11,12,12, 0,13,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+         0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,11,10, 5,
+         7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+         9,10,10, 0, 0, 0,10,10, 8,10, 9,12,12, 0,10,10,
+        12,11, 0,10,10,12,12, 0,12,12,13,12, 0, 0, 0,13,
+        12, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,11,12,
+         0,12,12,13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
+        10,10, 0, 9, 9,10,11, 0, 0, 0,10,10, 6, 7, 8,10,
+        11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,10,10,
+         0, 0, 0,10,10, 9,10, 9,12,12, 0,10,10,12,12, 0,
+        10,10,12,11, 0,12,12,13,13, 0, 0, 0,13,12, 8, 9,
+        10,12,12, 0,10,10,12,12, 0,10,10,11,12, 0,12,12,
+        13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         7,10,10,13,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
+        10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,13, 0, 9,
+         9,12,12, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+        12,12, 9,11,11,14,13, 0,10,10,13,12, 0,11,10,13,
+        12, 0,12,12,13,12, 0, 0, 0,13,13, 9,11,11,13,14,
+         0,10,11,12,13, 0,10,11,13,13, 0,12,12,12,13, 0,
+         0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+        11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,11,
+        12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
+        13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,12,
+        13,
 };
 
-static static_codebook _44c7_s_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44c7_s_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c7_s_p3_0,
-	NULL,
-	&_vq_auxt__44c7_s_p3_0,
-	NULL,
-	0
+static const static_codebook _44c8_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c8_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c8_s_p2_0,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44c8_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c7_s_p4_0[] = {
-	 3, 4, 4, 6, 5, 7, 7, 7, 7, 8, 8, 9, 9,10,10,11,
-	11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9,10,10,10,
-	11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10,
-	11,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
-	10,11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
-	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c8_s_p3_0[] = {
+         2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+         9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
+         8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
+         7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c7_s_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44c8_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c8_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p3_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c8_s_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p4_0 = {
-	_vq_quantthresh__44c7_s_p4_0,
-	_vq_quantmap__44c7_s_p4_0,
-	17,
-	17
+static const char _vq_lengthlist__44c8_s_p4_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 8,10,10,11,11,
+        11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+        11,11,11, 0, 6, 5, 6, 6, 7, 7, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 6, 6, 7, 7, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
+        10,11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+         9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c7_s_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44c7_s_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c7_s_p4_0,
-	NULL,
-	&_vq_auxt__44c7_s_p4_0,
-	NULL,
-	0
+static const static_codebook _44c8_s_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c8_s_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c8_s_p4_0,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p5_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c8_s_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44c7_s_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 4, 7, 7,10,11,10,10,
-	11,11, 4, 7, 7,10,10,11,10,10,11, 5,10,10, 9,12,
-	11,10,12,12, 7,11,10,12,12,12,12,13,13, 7,10,11,
-	11,12,12,12,13,13, 5,10,10,10,12,12,10,12,12, 7,
-	11,10,12,13,13,12,12,12, 7,10,11,12,13,13,12,12,
-	12,
+static const char _vq_lengthlist__44c8_s_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6,10,10,10,10,
+        10,10, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
+        11,10,11,11, 7,10,10,11,12,12,12,12,12, 7,10,10,
+        11,12,12,12,12,12, 6,10,10,10,12,12,10,12,12, 7,
+        10,10,11,12,12,12,12,12, 7,10,10,11,12,12,12,12,
+        12,
 };
 
-static float _vq_quantthresh__44c7_s_p5_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _44c8_s_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c8_s_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c8_s_p5_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p5_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c8_s_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p5_0 = {
-	_vq_quantthresh__44c7_s_p5_0,
-	_vq_quantmap__44c7_s_p5_0,
-	3,
-	3
+static const char _vq_lengthlist__44c8_s_p5_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6,
+         6, 7, 7, 8, 8, 9, 9,11,11,11, 6, 6, 7, 7, 8, 8,
+         8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11,
+         7, 7, 7, 8, 8, 8, 8, 8,11,11,11,11,11, 7, 7, 8,
+         8, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 8, 8,11,11,
+        11,11,11, 7, 7, 7, 7, 8, 8,
 };
 
-static static_codebook _44c7_s_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44c7_s_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c7_s_p5_0,
-	NULL,
-	&_vq_auxt__44c7_s_p5_0,
-	NULL,
-	0
+static const static_codebook _44c8_s_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c8_s_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p5_1,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44c8_s_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c7_s_p5_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9,12, 4, 4, 6, 6,
-	 7, 7, 8, 8, 9, 9,11, 5, 5, 6, 6, 7, 7, 8, 8, 9,
-	 9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6,
-	 6, 7, 7, 8, 8, 9, 9,12,12,12, 6, 6, 7, 7, 8, 8,
-	 9, 9,12,11,11, 6, 6, 7, 7, 8, 8, 9, 9,12,12,11,
-	 7, 7, 8, 8, 8, 8, 8, 8,12,12,12,11,11, 8, 8, 8,
-	 8, 8, 8,12,12,12,11,11, 7, 7, 7, 7, 8, 8,12,12,
-	12,11,11, 7, 7, 7, 7, 8, 8,
+static const char _vq_lengthlist__44c8_s_p6_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+         7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 8,
+         8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,
+        10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,10,10,11,
+        11, 0,11,11, 9, 9,10,10,11,11,11,11,12,12, 0,12,
+        12, 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-static float _vq_quantthresh__44c7_s_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44c8_s_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c8_s_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p6_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44c8_s_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p5_1 = {
-	_vq_quantthresh__44c7_s_p5_1,
-	_vq_quantmap__44c7_s_p5_1,
-	11,
-	11
+static const char _vq_lengthlist__44c8_s_p6_1[] = {
+         3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static static_codebook _44c7_s_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44c7_s_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c7_s_p5_1,
-	NULL,
-	&_vq_auxt__44c7_s_p5_1,
-	NULL,
-	0
+static const static_codebook _44c8_s_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c8_s_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c8_s_p6_1,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c8_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c7_s_p6_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10, 9,10,10, 5, 5, 5,
-	 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
-	 9, 9, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10,
-	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
-	12, 0,11,10, 8, 8,10,10,11,11,11,12,12,12, 0,11,
-	11, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+static const char _vq_lengthlist__44c8_s_p7_0[] = {
+         1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,12,12, 6, 5, 5,
+         7, 7, 8, 8,10,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
+         8,10,10,11,11,12,12,21, 7, 7, 7, 7, 8, 9,10,10,
+        11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,12,12,13,
+        13,21,11,11, 8, 8, 9, 9,11,11,12,12,13,13,21,11,
+        11, 8, 8, 9, 9,11,11,12,12,13,13,21,21,21,10,10,
+        10,10,11,11,12,13,13,13,21,21,21,10,10,10,10,11,
+        11,13,13,14,13,21,21,21,13,13,11,11,12,12,13,13,
+        14,14,21,21,21,14,14,11,11,12,12,13,13,14,14,21,
+        21,21,21,20,13,13,13,12,14,14,16,15,20,20,20,20,
+        20,13,13,13,13,14,13,15,15,
 };
 
-static float _vq_quantthresh__44c7_s_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44c8_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c8_s_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p7_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c8_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p6_0 = {
-	_vq_quantthresh__44c7_s_p6_0,
-	_vq_quantmap__44c7_s_p6_0,
-	13,
-	13
+static const char _vq_lengthlist__44c8_s_p7_1[] = {
+         4, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7,
+         7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+         7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
+         7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+         7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+         7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+         7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+         8, 8, 8, 7, 7, 7, 7, 7, 7,
 };
 
-static static_codebook _44c7_s_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44c7_s_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c7_s_p6_0,
-	NULL,
-	&_vq_auxt__44c7_s_p6_0,
-	NULL,
-	0
+static const static_codebook _44c8_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c8_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p7_1,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c8_s_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44c7_s_p6_1[] = {
-	 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 4, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+static const char _vq_lengthlist__44c8_s_p8_0[] = {
+         1, 4, 4, 7, 6, 8, 8, 8, 7, 9, 8,10,10,11,10, 6,
+         5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,12,11, 6, 5,
+         5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8,
+         8, 8, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8, 8,
+         8,10, 9, 9, 9,10,10,11,11,12,12,20,12,12, 9, 9,
+        10,10,10,10,10,11,12,12,12,12,20,12,12, 9, 9,10,
+        10,10,10,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,
+        11,10,11,11,12,12,12,13,20,19,19, 9, 9, 9, 9,11,
+        11,11,12,12,12,13,13,19,19,19,13,13,10,10,11,11,
+        12,12,13,13,13,13,19,19,19,14,13,11,10,11,11,12,
+        12,12,13,13,13,19,19,19,19,19,12,12,12,12,13,13,
+        13,13,14,13,19,19,19,19,19,12,12,12,11,12,12,13,
+        14,14,14,19,19,19,19,19,16,15,13,12,13,13,13,14,
+        14,14,19,19,19,19,19,17,17,13,12,13,11,14,13,15,
+        15,
 };
 
-static float _vq_quantthresh__44c7_s_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c8_s_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c8_s_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44c8_s_p8_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c8_s_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p6_1 = {
-	_vq_quantthresh__44c7_s_p6_1,
-	_vq_quantmap__44c7_s_p6_1,
-	5,
-	5
+static const char _vq_lengthlist__44c8_s_p8_1[] = {
+         4, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+         8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+        10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9,
+         9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,
+        10,10,10, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+         9,10,10,10,10,10,10,10, 9,10,10, 9,10,10,10,10,
+         9,10, 9,10,10, 9,10,10,10,10,10,10,10, 9,10,10,
+        10,10,10,10, 9, 9,10,10, 9,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
+        10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10, 9, 9,10, 9, 9, 9,10,10,10,10,10,10,
+        10,10,10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10, 9,
+         9,10, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+        10, 9, 9,10,10, 9,10, 9, 9,
 };
 
-static static_codebook _44c7_s_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44c7_s_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c7_s_p6_1,
-	NULL,
-	&_vq_auxt__44c7_s_p6_1,
-	NULL,
-	0
+static const static_codebook _44c8_s_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c8_s_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c8_s_p8_1,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44c8_s_p9_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__44c7_s_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
-	 7, 7, 9, 8, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9, 9,10,11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,
-	11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
-	12,20,11,11, 8, 8,10, 9,11,11,11,11,12,12,20,12,
-	12, 8, 8, 9, 9,11,11,12,12,12,12,20,20,20,11,11,
-	10,10,11,11,12,12,13,13,20,20,20,11,11,10,10,11,
-	11,12,12,13,13,20,20,20,14,14,11,11,11,12,13,13,
-	13,13,20,20,20,15,14,11,11,11,11,13,13,14,14,20,
-	20,20,20,19,12,12,12,12,13,13,14,14,19,19,19,19,
-	19,13,12,12,12,13,13,14,14,
+static const char _vq_lengthlist__44c8_s_p9_0[] = {
+         1, 4, 3,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11, 4, 7, 7,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11, 4, 8,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static float _vq_quantthresh__44c7_s_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
+static const static_codebook _44c8_s_p9_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c8_s_p9_0,
+        1, -509798400, 1631393792, 5, 0,
+        (long *)_vq_quantlist__44c8_s_p9_0,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44c8_s_p9_1[] = {
+        9,
+        8,
+        10,
+        7,
+        11,
+        6,
+        12,
+        5,
+        13,
+        4,
+        14,
+        3,
+        15,
+        2,
+        16,
+        1,
+        17,
+        0,
+        18,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p7_0 = {
-	_vq_quantthresh__44c7_s_p7_0,
-	_vq_quantmap__44c7_s_p7_0,
-	13,
-	13
+static const char _vq_lengthlist__44c8_s_p9_1[] = {
+         1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10,
+        10,11,11, 6, 6, 6, 8, 8, 9, 8, 8, 7,10, 8,11,10,
+        12,11,12,12,13,13, 5, 5, 6, 8, 8, 9, 9, 8, 8,10,
+         9,11,11,12,12,13,13,13,13,17, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 9,12,10,12,12,13,12,13,13,17, 9, 8, 9,
+         9, 9, 9, 9, 9,10,10,12,12,12,12,13,13,13,13,17,
+        13,13, 9, 9,10,10,10,10,11,11,12,11,13,12,13,13,
+        14,15,17,13,13, 9, 8,10, 9,10,10,11,11,12,12,14,
+        13,15,13,14,15,17,17,17, 9,10, 9,10,11,11,12,12,
+        12,12,13,13,14,14,15,15,17,17,17, 9, 8, 9, 8,11,
+        11,12,12,12,12,14,13,14,14,14,15,17,17,17,12,14,
+         9,10,11,11,12,12,14,13,13,14,15,13,15,15,17,17,
+        17,13,11,10, 8,11, 9,13,12,13,13,13,13,13,14,14,
+        14,17,17,17,17,17,11,12,11,11,13,13,14,13,15,14,
+        13,15,16,15,17,17,17,17,17,11,11,12, 8,13,12,14,
+        13,17,14,15,14,15,14,17,17,17,17,17,15,15,12,12,
+        12,12,13,14,14,14,15,14,17,14,17,17,17,17,17,16,
+        17,12,12,13,12,13,13,14,14,14,14,14,14,17,17,17,
+        17,17,17,17,14,14,13,12,13,13,15,15,14,13,15,17,
+        17,17,17,17,17,17,17,13,14,13,13,13,13,14,15,15,
+        15,14,15,17,17,17,17,17,17,17,16,15,13,14,13,13,
+        14,14,15,14,14,16,17,17,17,17,17,17,17,16,16,13,
+        14,13,13,14,14,15,14,15,14,
 };
 
-static static_codebook _44c7_s_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44c7_s_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44c7_s_p7_0,
-	NULL,
-	&_vq_auxt__44c7_s_p7_0,
-	NULL,
-	0
+static const static_codebook _44c8_s_p9_1 = {
+        2, 361,
+        (char *)_vq_lengthlist__44c8_s_p9_1,
+        1, -518287360, 1622704128, 5, 0,
+        (long *)_vq_quantlist__44c8_s_p9_1,
+        0
 };
 
-static long _vq_quantlist__44c7_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44c8_s_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static long _vq_lengthlist__44c7_s_p7_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6,
-	 7, 7, 7, 7, 8, 8, 9, 5, 5, 6, 6, 7, 7, 7, 7, 7,
-	 7, 9, 6, 6, 7, 7, 7, 7, 8, 8, 7, 8, 9, 9, 9, 7,
-	 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
-	 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
-	 7, 7, 8, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 7, 7, 7,
-	 7, 8, 7, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
-	 9, 9, 9, 7, 7, 7, 7, 8, 8,
+static const char _vq_lengthlist__44c8_s_p9_2[] = {
+         2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static float _vq_quantthresh__44c7_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44c8_s_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44c8_s_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44c8_s_p9_2,
+        0
 };
 
-static long _vq_quantmap__44c7_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _huff_lengthlist__44c8_s_short[] = {
+         4,11,13,14,15,15,18,17,19,17, 5, 6, 8, 9,10,10,
+        12,15,19,19, 6, 6, 6, 6, 8, 8,11,14,18,19, 8, 6,
+         5, 4, 6, 7,10,13,16,17, 9, 7, 6, 5, 6, 7, 9,12,
+        15,19,10, 8, 7, 6, 6, 6, 7, 9,13,15,12,10, 9, 8,
+         7, 6, 4, 5,10,15,13,13,11, 8, 6, 6, 4, 2, 7,12,
+        17,15,16,10, 8, 8, 7, 6, 9,12,19,18,17,13,11,10,
+        10, 9,11,14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p7_1 = {
-	_vq_quantthresh__44c7_s_p7_1,
-	_vq_quantmap__44c7_s_p7_1,
-	11,
-	11
+static const static_codebook _huff_book__44c8_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c8_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static static_codebook _44c7_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c7_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c7_s_p7_1,
-	NULL,
-	&_vq_auxt__44c7_s_p7_1,
-	NULL,
-	0
+static const char _huff_lengthlist__44c9_s_long[] = {
+         3, 8,12,14,15,15,15,13,15,15, 6, 5, 8,10,12,12,
+        13,12,14,13,10, 6, 5, 6, 8, 9,11,11,13,13,13, 8,
+         5, 4, 5, 6, 8,10,11,13,14,10, 7, 5, 4, 5, 7, 9,
+        11,12,13,11, 8, 6, 5, 4, 5, 7, 9,11,12,11,10, 8,
+         7, 5, 4, 5, 9,10,13,13,11,10, 8, 6, 5, 4, 7, 9,
+        15,14,13,12,10, 9, 8, 7, 8, 9,12,12,14,13,12,11,
+        10, 9, 8, 9,
 };
 
-static long _vq_quantlist__44c7_s_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const static_codebook _huff_book__44c9_s_long = {
+        2, 100,
+        (char *)_huff_lengthlist__44c9_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__44c7_s_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,11,11, 6,
-	 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
-	 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,17, 8, 8,
-	 8, 8,10, 9, 8, 9,10,10,11,11,11,11,17, 8, 8, 8,
-	 8,10,10, 9, 9,10,10,11,11,12,12,17,12,13, 9, 9,
-	10,10, 9, 9,10,11,11,11,12,12,17,13,13, 9, 9,10,
-	10,10,10,10,10,11,11,12,12,17,17,17, 9, 9, 9, 9,
-	10,10,11,11,11,12,12,12,17,17,17, 9, 9, 9, 9,11,
-	10,11,12,11,12,13,12,17,17,17,13,14,10,10,10,11,
-	12,11,12,12,12,13,17,17,17,14,14,10, 9,10, 9,12,
-	12,12,12,13,13,17,17,17,17,17,11,11,11,11,11,12,
-	13,13,13,14,17,17,17,17,17,12,10,11, 9,12,11,13,
-	15,14,14,17,17,17,17,17,14,15,11,12,12,13,13,12,
-	14,14,17,16,16,16,16,15,13,12, 9,12,10,14,12,15,
-	14,
+static const long _vq_quantlist__44c9_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44c7_s_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const char _vq_lengthlist__44c9_s_p1_0[] = {
+         1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0,
+         9, 8, 6, 8, 8, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 5, 8, 8, 0, 7, 7, 0, 8, 8, 5, 8, 8,
+         0, 7, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+         9, 8, 0, 8, 8, 0, 7, 7, 5, 8, 9, 0, 8, 8, 0, 7,
+         7,
 };
 
-static long _vq_quantmap__44c7_s_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const static_codebook _44c9_s_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c9_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c9_s_p1_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p8_0 = {
-	_vq_quantthresh__44c7_s_p8_0,
-	_vq_quantmap__44c7_s_p8_0,
-	15,
-	15
+static const long _vq_quantlist__44c9_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _44c7_s_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44c7_s_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44c7_s_p8_0,
-	NULL,
-	&_vq_auxt__44c7_s_p8_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c9_s_p2_0[] = {
+         3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+         7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8,
+         8, 9, 9, 0, 8, 7, 9, 9, 0, 9,10,10,10, 0, 0, 0,
+        11,10, 6, 7, 7, 8, 9, 0, 8, 8, 9, 9, 0, 7, 8, 9,
+         9, 0,10, 9,11,10, 0, 0, 0,10,10, 8, 9, 8,10,10,
+         0,10,10,12,11, 0,10,10,11,11, 0,12,13,13,13, 0,
+         0, 0,13,12, 8, 8, 9,10,10, 0,10,10,11,12, 0,10,
+        10,11,11, 0,13,12,13,13, 0, 0, 0,13,13, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 6, 8, 7,10,10, 0, 7, 7,10, 9,
+         0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,10,10, 6,
+         7, 8,10,10, 0, 7, 7, 9,10, 0, 7, 7,10,10, 0, 9,
+         9,10,10, 0, 0, 0,10,10, 8, 9, 9,11,11, 0,10,10,
+        11,11, 0,10,10,11,11, 0,12,12,12,12, 0, 0, 0,12,
+        12, 8, 9,10,11,11, 0, 9,10,11,11, 0,10,10,11,11,
+         0,12,12,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 5, 8, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,
+        10, 9, 0, 9, 9,10,10, 0, 0, 0,10,10, 6, 7, 8,10,
+        10, 0, 7, 7,10,10, 0, 7, 7, 9,10, 0, 9, 9,10,10,
+         0, 0, 0,10,10, 8,10, 9,12,11, 0,10,10,12,11, 0,
+        10, 9,11,11, 0,11,12,12,12, 0, 0, 0,12,12, 8, 9,
+        10,11,12, 0,10,10,11,11, 0, 9,10,11,11, 0,12,11,
+        12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         7,10, 9,12,12, 0, 9, 9,12,11, 0, 9, 9,11,11, 0,
+        10,10,12,11, 0, 0, 0,11,12, 7, 9,10,12,12, 0, 9,
+         9,11,12, 0, 9, 9,11,11, 0,10,10,11,12, 0, 0, 0,
+        11,11, 9,11,10,13,12, 0,10,10,12,12, 0,10,10,12,
+        12, 0,11,11,12,12, 0, 0, 0,13,12, 9,10,11,12,13,
+         0,10,10,12,12, 0,10,10,12,12, 0,11,12,12,12, 0,
+         0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+        11,10,13,13, 0,10,10,12,12, 0,10,10,12,12, 0,11,
+        12,12,12, 0, 0, 0,12,12, 9,10,11,13,13, 0,10,10,
+        12,12, 0,10,10,12,12, 0,12,11,13,12, 0, 0, 0,12,
+        12,
 };
 
-static long _vq_quantlist__44c7_s_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const static_codebook _44c9_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c9_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c9_s_p2_0,
+        0
 };
 
-static long _vq_lengthlist__44c7_s_p8_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9,
-	 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
-	 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,11,11,11, 7, 7, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,
-	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9,
-	10,10, 9,11,11,11, 8, 9, 9, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9,10,10, 9, 9,10, 9,11,11,11,11,11, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,11,10,11,
-	11,11, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10, 9,
-	 9,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10, 9, 9,10,10,10,10,11,11,11,11,11, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10, 9,10,10,10,10, 9,11,11,10,11,
-	11,11,11, 9, 9, 9, 9,10,10,10,10,10,10,10, 9,10,
-	10,10,11,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,10,
-	10,10, 9, 9,10, 9,11,10,11,11,11,11,11, 9, 9, 9,
-	 9, 9,10,10, 9,10,10,10,10,10,10,11,11,11,11,11,
-	11,11,10, 9,10, 9,10,10,10,10,10,10,10,10,10, 9,
-	10,11,10,11,11,11,11,11,10, 9, 9,10,10,10,10,10,
-	10,10,10,10,10,11,11,11,11,11,11,11,10,11,10,10,
-	10,10,10,10,10,10, 9,10,10, 9,11,11,11,11,11,10,
-	11,11,11,10,10, 9, 9,10,10,10,10,10, 9,10,10,11,
-	11,11,11,11,10,11,11,11,10,10, 9, 9,10,10,10,10,
-	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11, 9,
-	 9, 9, 9,10,10,10,10,10,10,
+static const long _vq_quantlist__44c9_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__44c7_s_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const char _vq_lengthlist__44c9_s_p3_0[] = {
+         3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 6, 7,
+         8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6,
+         7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0,
+         7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__44c7_s_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const static_codebook _44c9_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c9_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p3_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p8_1 = {
-	_vq_quantthresh__44c7_s_p8_1,
-	_vq_quantmap__44c7_s_p8_1,
-	21,
-	21
+static const long _vq_quantlist__44c9_s_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _44c7_s_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44c7_s_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c7_s_p8_1,
-	NULL,
-	&_vq_auxt__44c7_s_p8_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44c9_s_p4_0[] = {
+         3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10,
+        10, 0, 5, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+        11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+        10,11,11, 0, 6, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,11,12, 0, 0, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9, 9, 9,
+        10,10,11,11,12,12, 0, 0, 0, 7, 7, 7, 8, 9, 9, 9,
+         9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+         9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c7_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44c9_s_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c9_s_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c9_s_p4_0,
+        0
 };
 
-static long _vq_lengthlist__44c7_s_p9_0[] = {
-	 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 8, 8, 8,
+static const long _vq_quantlist__44c9_s_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44c7_s_p9_0[] = {
-	-3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 
-	1592.5, 2229.5, 2866.5, 3503.5, 
+static const char _vq_lengthlist__44c9_s_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6, 9,10,10,10,
+        10, 9, 4, 6, 7, 9,10,10,10, 9,10, 5, 9, 9, 9,11,
+        11,10,11,11, 7,10, 9,11,12,11,12,12,12, 7, 9,10,
+        11,11,12,12,12,12, 6,10,10,10,12,12,10,12,11, 7,
+        10,10,11,12,12,11,12,12, 7,10,10,11,12,12,12,12,
+        12,
 };
 
-static long _vq_quantmap__44c7_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const static_codebook _44c9_s_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c9_s_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c9_s_p5_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c7_s_p9_0 = {
-	_vq_quantthresh__44c7_s_p9_0,
-	_vq_quantmap__44c7_s_p9_0,
-	13,
-	13
+static const long _vq_quantlist__44c9_s_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static static_codebook _44c7_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__44c7_s_p9_0,
-	1, -511845376, 1630791680, 4, 0,
-	_vq_quantlist__44c7_s_p9_0,
-	NULL,
-	&_vq_auxt__44c7_s_p9_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c9_s_p5_1[] = {
+         4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,11, 5, 5, 6, 6,
+         7, 7, 7, 7, 8, 8,11, 5, 5, 6, 6, 7, 7, 7, 7, 8,
+         8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
+         6, 7, 7, 7, 8, 8, 8,11,11,11, 6, 6, 7, 7, 7, 8,
+         8, 8,11,11,11, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11,
+         7, 7, 7, 7, 7, 7, 8, 8,11,11,11,10,10, 7, 7, 7,
+         7, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 7, 7,11,11,
+        11,11,11, 7, 7, 7, 7, 7, 7,
 };
 
-static long _vq_quantlist__44c7_s_p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44c9_s_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c9_s_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p5_1,
+        0
 };
 
-static long _vq_lengthlist__44c7_s_p9_1[] = {
-	 1, 4, 4, 7, 7, 7, 7, 7, 7, 9, 8,10,10, 6, 6, 6,
-	 7, 8, 8, 8, 8, 8, 9, 9,10,11, 6, 5, 6, 8, 7, 8,
-	 8, 8, 8, 9, 9,10,11,14, 9, 8, 9, 8, 9, 8, 8, 9,
-	10,10,11,11,14, 8, 9, 8, 8, 8, 9, 9, 8,12,10,11,
-	11,14,13,13, 8, 9, 9, 9, 9,10,10,12,12,12,14,14,
-	13, 8, 7,10, 9, 9,10,10,11,11,10,14,14,14, 8, 9,
-	 9, 8,11,10,12,11,11,11,14,14,14, 9, 7, 9, 8,10,
-	10,11,11,11,10,14,14,14,12,12,10, 9,11,11,11,13,
-	12,13,14,14,14,12,12,10,10,11, 8,11,11,14,13,14,
-	14,14,14,14,12,13,11,12,12,11,14,13,13,13,13,13,
-	13,12,11,11, 9,12,12,12,13,
+static const long _vq_quantlist__44c9_s_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static float _vq_quantthresh__44c7_s_p9_1[] = {
-	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
-	122.5, 171.5, 220.5, 269.5, 
+static const char _vq_lengthlist__44c9_s_p6_0[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 5, 4, 4,
+         6, 6, 8, 8, 9, 9, 9, 9,10,10, 6, 4, 4, 6, 6, 8,
+         8, 9, 9, 9, 9,10,10, 0, 6, 6, 7, 7, 8, 8, 9, 9,
+        10,10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+        11, 0,10,10, 8, 8, 9, 9,10,10,11,11,12,12, 0,11,
+        11, 8, 8, 9, 9,10,10,11,11,12,12, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
-static long _vq_quantmap__44c7_s_p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c7_s_p9_1 = {
-	_vq_quantthresh__44c7_s_p9_1,
-	_vq_quantmap__44c7_s_p9_1,
-	13,
-	13
-};
-
-static static_codebook _44c7_s_p9_1 = {
-	2, 169,
-	_vq_lengthlist__44c7_s_p9_1,
-	1, -518889472, 1622704128, 4, 0,
-	_vq_quantlist__44c7_s_p9_1,
-	NULL,
-	&_vq_auxt__44c7_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c7_s_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
-};
-
-static long _vq_lengthlist__44c7_s_p9_2[] = {
-	 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
-};
-
-static float _vq_quantthresh__44c7_s_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
-};
-
-static long _vq_quantmap__44c7_s_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c7_s_p9_2 = {
-	_vq_quantthresh__44c7_s_p9_2,
-	_vq_quantmap__44c7_s_p9_2,
-	49,
-	49
-};
-
-static static_codebook _44c7_s_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44c7_s_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44c7_s_p9_2,
-	NULL,
-	&_vq_auxt__44c7_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c7_s_short[] = {
-	 4,10,12,13,15,15,16,16,17,17, 5, 5, 7, 8, 9, 9,
-	12,17,18,18, 7, 5, 4, 5, 7, 8,10,13,18,18, 8, 6,
-	 5, 4, 5, 6, 9,12,17,18,10, 9, 6, 4, 4, 5, 8,12,
-	18,17,11, 9, 7, 5, 4, 4, 6,10,17,17,13,12,10, 8,
-	 6, 5, 6, 9,17,17,14,13,12, 7, 6, 5, 5, 8,16,17,
-	16,15,14, 8, 8, 7, 7, 9,14,17,17,17,17,12,11,11,
-	11,12,16,17,
-};
-
-static static_codebook _huff_book__44c7_s_short = {
-	2, 100,
-	_huff_lengthlist__44c7_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44c8_s_long[] = {
-	 3, 8,12,14,14,13,13,12,13,15, 6, 4, 6, 8,10,10,
-	11,11,13,15, 9, 5, 4, 5, 7, 8, 9,10,13,15,11, 7,
-	 4, 4, 5, 6, 8, 9,13,14,12, 9, 6, 5, 5, 5, 7, 9,
-	12,14,11,10, 7, 6, 5, 4, 6, 7,11,12,11,10, 9, 8,
-	 7, 5, 6, 6,10,11,12,11,10, 9, 8, 6, 6, 5, 8,10,
-	12,12,12,11,11,10, 9, 7, 8,11,12,13,14,14,15,13,
-	10, 9, 9,11,
+static const static_codebook _44c9_s_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c9_s_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p6_0,
+        0
 };
 
-static static_codebook _huff_book__44c8_s_long = {
-	2, 100,
-	_huff_lengthlist__44c8_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44c9_s_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__44c8_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44c9_s_p6_1[] = {
+         4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5,
+         5, 5, 5, 5, 5, 5, 5, 5, 5,
 };
 
-static long _vq_lengthlist__44c8_s_p1_0[] = {
-	 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 7, 7, 0, 9, 8, 0,
-	 8, 8, 6, 7, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 5, 8, 8, 0, 8, 8, 0, 8, 8, 5, 8, 8,
-	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-	 8, 8, 0, 8, 8, 0, 8, 7, 5, 8, 8, 0, 8, 8, 0, 7,
-	 8,
+static const static_codebook _44c9_s_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c9_s_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c9_s_p6_1,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44c9_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__44c8_s_p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44c9_s_p7_0[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8,10,10,11,11, 6, 4, 4,
+         6, 6, 8, 8, 9, 9,10,10,12,12, 6, 4, 5, 6, 6, 8,
+         8, 9, 9,10,10,12,12,20, 6, 6, 6, 6, 8, 8, 9,10,
+        11,11,12,12,20, 6, 6, 6, 6, 8, 8,10,10,11,11,12,
+        12,20,10,10, 7, 7, 9, 9,10,10,11,11,12,12,20,11,
+        11, 7, 7, 9, 9,10,10,11,11,12,12,20,20,20, 9, 9,
+         9, 9,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,11,
+        11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,13,
+        13,13,20,20,20,13,13,10,10,11,11,12,13,13,13,20,
+        20,20,20,19,12,12,12,12,13,13,14,15,19,19,19,19,
+        19,12,12,12,12,13,13,14,14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p1_0 = {
-	_vq_quantthresh__44c8_s_p1_0,
-	_vq_quantmap__44c8_s_p1_0,
-	3,
-	3
+static const static_codebook _44c9_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c9_s_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p7_0,
+        0
 };
 
-static static_codebook _44c8_s_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44c8_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c8_s_p1_0,
-	NULL,
-	&_vq_auxt__44c8_s_p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c9_s_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__44c8_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44c9_s_p7_1[] = {
+         5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6,
+         7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+         7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6,
+         6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+         7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+         7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+         7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+         8, 8, 8, 7, 7, 7, 7, 7, 7,
 };
 
-static long _vq_lengthlist__44c8_s_p2_0[] = {
-	 3, 5, 5, 8, 8, 0, 6, 6, 8, 8, 0, 5, 6, 8, 8, 0,
-	 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 6, 9, 9, 0, 7,
-	 7,10, 9, 0, 7, 7,10, 9, 0, 9, 9,11,11, 0, 0, 0,
-	11,11, 5, 6, 7, 9, 9, 0, 7, 7, 9,10, 0, 7, 7, 9,
-	10, 0, 9, 9,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
-	 0,11,10,12,11, 0,10,10,12,11, 0,13,13,14,13, 0,
-	 0, 0,14,13, 8, 9, 9,10,11, 0,10,11,11,12, 0,10,
-	10,12,12, 0,13,13,13,14, 0, 0, 0,13,14, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 6, 7, 7,10,10, 0, 7, 7,10,10,
-	 0, 7, 7,10,10, 0, 9, 8,10,10, 0, 0, 0,10,10, 6,
-	 7, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 8,
-	 9,10,10, 0, 0, 0,10,10, 8,10, 9,12,12, 0,10, 9,
-	12,11, 0,10,10,11,12, 0,12,11,13,12, 0, 0, 0,13,
-	13, 8, 9,10,11,12, 0, 9,10,11,12, 0,10,10,11,12,
-	 0,11,12,12,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 6, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
-	10, 9, 0, 8, 9,10,10, 0, 0, 0,10,10, 6, 7, 8,10,
-	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 8,10,10,
-	 0, 0, 0,10,10, 8,10, 9,12,11, 0,10,10,12,11, 0,
-	10,10,12,11, 0,11,12,13,12, 0, 0, 0,13,12, 9, 9,
-	10,11,12, 0,10,10,11,12, 0,10,10,11,12, 0,12,11,
-	12,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7, 9, 9,12,13, 0, 9, 8,12,11, 0, 8, 9,11,12, 0,
-	10, 9,12,11, 0, 0, 0,11,12, 7, 9, 9,13,13, 0, 9,
-	 9,11,12, 0, 9, 8,12,11, 0, 9,10,11,12, 0, 0, 0,
-	12,11, 9,11,11,14,13, 0,10,10,13,12, 0,10,10,13,
-	13, 0,12,11,13,12, 0, 0, 0,13,13, 9,11,11,13,14,
-	 0,10,10,12,13, 0,10,10,13,13, 0,11,12,12,13, 0,
-	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
-	11,11,14,13, 0,10,10,13,12, 0,10,10,13,12, 0,11,
-	12,13,13, 0, 0, 0,13,12, 9,11,11,13,14, 0,10,10,
-	13,13, 0,10,10,12,13, 0,12,11,13,13, 0, 0, 0,12,
-	13,
+static const static_codebook _44c9_s_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c9_s_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p7_1,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44c9_s_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__44c8_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44c9_s_p8_0[] = {
+         1, 4, 4, 7, 6, 8, 8, 8, 8, 9, 9,10,10,11,10, 6,
+         5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5,
+         5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,21, 7, 8,
+         8, 8, 9, 9, 9, 9,10,10,11,11,12,12,21, 8, 8, 8,
+         8, 9, 9, 9, 9,10,10,11,11,12,12,21,11,12, 9, 9,
+        10,10,10,10,10,11,11,12,12,12,21,12,12, 9, 8,10,
+        10,10,10,11,11,12,12,13,13,21,21,21, 9, 9, 9, 9,
+        11,11,11,11,12,12,12,13,21,20,20, 9, 9, 9, 9,10,
+        11,11,11,12,12,13,13,20,20,20,13,13,10,10,11,11,
+        12,12,13,13,13,13,20,20,20,13,13,10,10,11,11,12,
+        12,13,13,13,13,20,20,20,20,20,12,12,12,12,12,12,
+        13,13,14,14,20,20,20,20,20,12,12,12,11,13,12,13,
+        13,14,14,20,20,20,20,20,15,16,13,12,13,13,14,13,
+        14,14,20,20,20,20,20,16,15,12,12,13,12,14,13,14,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p2_0 = {
-	_vq_quantthresh__44c8_s_p2_0,
-	_vq_quantmap__44c8_s_p2_0,
-	5,
-	5
+static const static_codebook _44c9_s_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44c9_s_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44c9_s_p8_0,
+        0
 };
 
-static static_codebook _44c8_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c8_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c8_s_p2_0,
-	NULL,
-	&_vq_auxt__44c8_s_p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c9_s_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static long _vq_quantlist__44c8_s_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44c9_s_p8_1[] = {
+         4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+         7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+        10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,
+        10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,
+         9,10,10,10,10,10,10,10, 9, 9, 9,10,10,10,10,10,
+         9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9,10,
+         9,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+        10,10,10,10, 9, 9,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,10, 9, 9,10, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+        10,10,10,10,10, 9, 9,10,10, 9, 9,10, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10, 9, 9,10, 9, 9, 9,
+         9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
+         9, 9, 9,10, 9, 9, 9, 9, 9,
 };
 
-static long _vq_lengthlist__44c8_s_p3_0[] = {
-	 3, 3, 4, 5, 5, 7, 6, 8, 8, 0, 4, 4, 5, 5, 7, 7,
-	 9, 9, 0, 4, 4, 5, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
-	 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
-	 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c9_s_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44c9_s_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c9_s_p8_1,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__44c9_s_p9_0[] = {
+        9,
+        8,
+        10,
+        7,
+        11,
+        6,
+        12,
+        5,
+        13,
+        4,
+        14,
+        3,
+        15,
+        2,
+        16,
+        1,
+        17,
+        0,
+        18,
 };
 
-static long _vq_quantmap__44c8_s_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__44c9_s_p9_0[] = {
+         1, 4, 3,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12, 4, 5, 6,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12, 4, 6, 6,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p3_0 = {
-	_vq_quantthresh__44c8_s_p3_0,
-	_vq_quantmap__44c8_s_p3_0,
-	9,
-	9
+static const static_codebook _44c9_s_p9_0 = {
+        2, 361,
+        (char *)_vq_lengthlist__44c9_s_p9_0,
+        1, -508535424, 1631393792, 5, 0,
+        (long *)_vq_quantlist__44c9_s_p9_0,
+        0
 };
 
-static static_codebook _44c8_s_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44c8_s_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c8_s_p3_0,
-	NULL,
-	&_vq_auxt__44c8_s_p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c9_s_p9_1[] = {
+        9,
+        8,
+        10,
+        7,
+        11,
+        6,
+        12,
+        5,
+        13,
+        4,
+        14,
+        3,
+        15,
+        2,
+        16,
+        1,
+        17,
+        0,
+        18,
 };
 
-static long _vq_quantlist__44c8_s_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const char _vq_lengthlist__44c9_s_p9_1[] = {
+         1, 4, 4, 7, 7, 7, 7, 8, 7, 9, 8, 9, 9,10,10,11,
+        11,11,11, 6, 5, 5, 8, 8, 9, 9, 9, 8,10, 9,11,10,
+        12,12,13,12,13,13, 5, 5, 5, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12,13,12,13,13,17, 8, 8, 9, 9, 9, 9,
+         9, 9,10,10,12,11,13,12,13,13,13,13,18, 8, 8, 9,
+         9, 9, 9, 9, 9,11,11,12,12,13,13,13,13,13,13,17,
+        13,12, 9, 9,10,10,10,10,11,11,12,12,12,13,13,13,
+        14,14,18,13,12, 9, 9,10,10,10,10,11,11,12,12,13,
+        13,13,14,14,14,17,18,18,10,10,10,10,11,11,11,12,
+        12,12,14,13,14,13,13,14,18,18,18,10, 9,10, 9,11,
+        11,12,12,12,12,13,13,15,14,14,14,18,18,16,13,14,
+        10,11,11,11,12,13,13,13,13,14,13,13,14,14,18,18,
+        18,14,12,11, 9,11,10,13,12,13,13,13,14,14,14,13,
+        14,18,18,17,18,18,11,12,12,12,13,13,14,13,14,14,
+        13,14,14,14,18,18,18,18,17,12,10,12, 9,13,11,13,
+        14,14,14,14,14,15,14,18,18,17,17,18,14,15,12,13,
+        13,13,14,13,14,14,15,14,15,14,18,17,18,18,18,15,
+        15,12,10,14,10,14,14,13,13,14,14,14,14,18,16,18,
+        18,18,18,17,14,14,13,14,14,13,13,14,14,14,15,15,
+        18,18,18,18,17,17,17,14,14,14,12,14,13,14,14,15,
+        14,15,14,18,18,18,18,18,18,18,17,16,13,13,13,14,
+        14,14,14,15,16,15,18,18,18,18,18,18,18,17,17,13,
+        13,13,13,14,13,14,15,15,15,
 };
 
-static long _vq_lengthlist__44c8_s_p4_0[] = {
-	 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
-	10, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10,10,
-	11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
-	10,11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
-	10,11,11,12,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
-	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44c9_s_p9_1 = {
+        2, 361,
+        (char *)_vq_lengthlist__44c9_s_p9_1,
+        1, -518287360, 1622704128, 5, 0,
+        (long *)_vq_quantlist__44c9_s_p9_1,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const long _vq_quantlist__44c9_s_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static long _vq_quantmap__44c8_s_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const char _vq_lengthlist__44c9_s_p9_2[] = {
+         2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p4_0 = {
-	_vq_quantthresh__44c8_s_p4_0,
-	_vq_quantmap__44c8_s_p4_0,
-	17,
-	17
+static const static_codebook _44c9_s_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44c9_s_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44c9_s_p9_2,
+        0
 };
 
-static static_codebook _44c8_s_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44c8_s_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c8_s_p4_0,
-	NULL,
-	&_vq_auxt__44c8_s_p4_0,
-	NULL,
-	0
+static const char _huff_lengthlist__44c9_s_short[] = {
+         5,13,18,16,17,17,19,18,19,19, 5, 7,10,11,12,12,
+        13,16,17,18, 6, 6, 7, 7, 9, 9,10,14,17,19, 8, 7,
+         6, 5, 6, 7, 9,12,19,17, 8, 7, 7, 6, 5, 6, 8,11,
+        15,19, 9, 8, 7, 6, 5, 5, 6, 8,13,15,11,10, 8, 8,
+         7, 5, 4, 4,10,14,12,13,11, 9, 7, 6, 4, 2, 6,12,
+        18,16,16,13, 8, 7, 7, 5, 8,13,16,17,18,15,11, 9,
+         9, 8,10,13,
 };
 
-static long _vq_quantlist__44c8_s_p5_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _huff_book__44c9_s_short = {
+        2, 100,
+        (char *)_huff_lengthlist__44c9_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__44c8_s_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
-	10,10, 4, 6, 6,10,10,10,10,10,10, 5,10,10, 9,12,
-	12,10,12,12, 7,10,10,12,12,12,12,12,12, 7,10,10,
-	12,12,12,12,12,13, 6,10,10,10,12,12,11,12,12, 8,
-	10,10,12,13,12,12,12,12, 7,10,10,12,12,13,12,13,
-	12,
+static const char _huff_lengthlist__44c0_s_long[] = {
+         5, 4, 8, 9, 8, 9,10,12,15, 4, 1, 5, 5, 6, 8,11,
+        12,12, 8, 5, 8, 9, 9,11,13,12,12, 9, 5, 8, 5, 7,
+         9,12,13,13, 8, 6, 8, 7, 7, 9,11,11,11, 9, 7, 9,
+         7, 7, 7, 7,10,12,10,10,11, 9, 8, 7, 7, 9,11,11,
+        12,13,12,11, 9, 8, 9,11,13,16,16,15,15,12,10,11,
+        12,
 };
 
-static float _vq_quantthresh__44c8_s_p5_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _huff_book__44c0_s_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44c0_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__44c8_s_p5_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c0_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p5_0 = {
-	_vq_quantthresh__44c8_s_p5_0,
-	_vq_quantmap__44c8_s_p5_0,
-	3,
-	3
+static const char _vq_lengthlist__44c0_s_p1_0[] = {
+         1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+         0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,11,
+         0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _44c8_s_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44c8_s_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c8_s_p5_0,
-	NULL,
-	&_vq_auxt__44c8_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c8_s_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44c8_s_p5_1[] = {
-	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,10, 4, 4, 6, 6,
-	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
-	 6, 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8,
-	 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11,
-	 7, 7, 7, 7, 8, 8, 8, 8,11,11,11,11,11, 7, 7, 8,
-	 8, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 8, 8,11,11,
-	11,11,11, 7, 7, 7, 7, 8, 8,
-};
-
-static float _vq_quantthresh__44c8_s_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44c8_s_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c8_s_p5_1 = {
-	_vq_quantthresh__44c8_s_p5_1,
-	_vq_quantmap__44c8_s_p5_1,
-	11,
-	11
-};
-
-static static_codebook _44c8_s_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44c8_s_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c8_s_p5_1,
-	NULL,
-	&_vq_auxt__44c8_s_p5_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c8_s_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c8_s_p6_0[] = {
-	 1, 4, 4, 7, 6, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
-	 7, 7, 9, 9,10, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9,10,10,11,11,12,12, 0, 6, 6, 7, 7, 9, 9,10,10,
-	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,12,12,12,
-	12, 0,10,10, 8, 8,10,10,11,11,12,12,13,13, 0,11,
-	11, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-static float _vq_quantthresh__44c8_s_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44c8_s_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c8_s_p6_0 = {
-	_vq_quantthresh__44c8_s_p6_0,
-	_vq_quantmap__44c8_s_p6_0,
-	13,
-	13
-};
-
-static static_codebook _44c8_s_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44c8_s_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c8_s_p6_0,
-	NULL,
-	&_vq_auxt__44c8_s_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c8_s_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44c8_s_p6_1[] = {
-	 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
-	 5, 5, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__44c8_s_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44c8_s_p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44c8_s_p6_1 = {
-	_vq_quantthresh__44c8_s_p6_1,
-	_vq_quantmap__44c8_s_p6_1,
-	5,
-	5
-};
-
-static static_codebook _44c8_s_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44c8_s_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c8_s_p6_1,
-	NULL,
-	&_vq_auxt__44c8_s_p6_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44c8_s_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44c8_s_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
-	 7, 7, 9, 9,10,10,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9,10,10,11,11,12,12,20, 6, 7, 7, 7, 9, 9,10,10,
-	11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
-	12,20,11,11, 8, 8,10,10,11,11,12,12,12,12,20,12,
-	12, 8, 8,10, 9,11,11,12,12,13,13,20,20,20,11,10,
-	10,10,11,11,12,12,13,13,20,20,20,10,11,10,10,11,
-	11,12,12,13,13,20,20,20,14,15,11,11,12,12,13,13,
-	14,13,20,20,20,15,15,11,11,12,12,13,13,14,14,20,
-	20,20,20,19,13,13,12,12,13,13,14,14,19,19,19,19,
-	19,13,13,12,12,13,13,14,14,
+static const static_codebook _44c0_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c0_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c0_s_p1_0,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
+static const long _vq_quantlist__44c0_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44c8_s_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__44c0_s_p2_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p7_0 = {
-	_vq_quantthresh__44c8_s_p7_0,
-	_vq_quantmap__44c8_s_p7_0,
-	13,
-	13
+static const static_codebook _44c0_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c0_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c0_s_p2_0,
+        0
 };
 
-static static_codebook _44c8_s_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44c8_s_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44c8_s_p7_0,
-	NULL,
-	&_vq_auxt__44c8_s_p7_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c0_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44c8_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const char _vq_lengthlist__44c0_s_p3_0[] = {
+         1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_lengthlist__44c8_s_p7_1[] = {
-	 4, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 5, 5, 7, 7,
-	 7, 7, 7, 7, 7, 7, 8, 5, 5, 7, 7, 7, 7, 7, 7, 7,
-	 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
-	 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
-	 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
-	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8,
-	 8, 8, 8, 7, 7, 7, 7, 7, 7,
+static const static_codebook _44c0_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c0_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_s_p3_0,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const long _vq_quantlist__44c0_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__44c8_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__44c0_s_p4_0[] = {
+         1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+         9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+         7, 8, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
+         9, 9, 8, 8,10,10, 0, 0, 0, 8, 9, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p7_1 = {
-	_vq_quantthresh__44c8_s_p7_1,
-	_vq_quantmap__44c8_s_p7_1,
-	11,
-	11
+static const static_codebook _44c0_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c0_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_s_p4_0,
+        0
 };
 
-static static_codebook _44c8_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c8_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c8_s_p7_1,
-	NULL,
-	&_vq_auxt__44c8_s_p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__44c0_s_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__44c8_s_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const char _vq_lengthlist__44c0_s_p5_0[] = {
+         1, 4, 3, 6, 6, 8, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10,10,
+        11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
+        10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
+        10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,11,11,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,11,10,11,11,11,11,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,11,12,12,12,12,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,12,12,12,12,13,13,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+        14,
 };
 
-static long _vq_lengthlist__44c8_s_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,11, 6,
-	 5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,11,12, 6, 5,
-	 5, 7, 7, 9, 9, 9, 8,10,10,11,10,11,12,18, 8, 8,
-	 8, 8, 9, 9, 9, 9,10,10,11,11,12,12,18, 8, 8, 8,
-	 8, 9, 9, 9, 9,10,10,11,11,12,13,18,12,12, 9, 9,
-	10,10, 9, 9,10,11,11,12,13,12,18,12,12, 9, 9,10,
-	10,10,10,10,11,11,12,13,13,18,18,18, 9, 9, 9, 9,
-	10,10,11,11,12,12,12,12,18,18,18, 9, 9, 9, 9,10,
-	10,11,11,12,12,13,13,18,18,18,13,13,10,10,11,11,
-	12,11,12,12,13,13,18,18,18,14,14,10, 9,11,10,12,
-	12,12,12,13,13,18,18,18,18,18,11,12,11,11,12,12,
-	13,13,14,13,18,18,18,18,18,12,11,11,10,12,11,13,
-	13,13,14,18,18,18,18,18,15,16,12,12,12,13,13,13,
-	14,14,18,17,17,17,17,16,14,12,11,12,11,13,12,15,
-	14,
+static const static_codebook _44c0_s_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c0_s_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c0_s_p5_0,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const long _vq_quantlist__44c0_s_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44c8_s_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const char _vq_lengthlist__44c0_s_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
+         9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+        11,12,10,11, 6, 9, 9,11,10,11,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,10,12,11,11,11,11,11, 7,
+         9, 9,10,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p8_0 = {
-	_vq_quantthresh__44c8_s_p8_0,
-	_vq_quantmap__44c8_s_p8_0,
-	15,
-	15
+static const static_codebook _44c0_s_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c0_s_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c0_s_p6_0,
+        0
 };
 
-static static_codebook _44c8_s_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44c8_s_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44c8_s_p8_0,
-	NULL,
-	&_vq_auxt__44c8_s_p8_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c0_s_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__44c8_s_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const char _vq_lengthlist__44c0_s_p6_1[] = {
+         2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 8,10,10,10, 6, 6,
+         7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static long _vq_lengthlist__44c8_s_p8_1[] = {
-	 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
-	10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10,11, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,11,11,10,11,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
-	 9, 9,10,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,11,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,11,10,11,10,
-	10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,
-	 9,11,11,11,10,10,11,10, 9, 9, 9, 9, 9, 9,10,10,
-	 9, 9, 9, 9, 9, 9,10,11,10,10,10,11,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,10,10,10,
-	10,10, 9, 9, 9,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,11,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10,11,11,10,11,10,10,10,10,10,10, 9,
-	10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
-	10,10,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
-	 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9, 9,10, 9, 9,10, 9, 9,
-};
-
-static float _vq_quantthresh__44c8_s_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const static_codebook _44c0_s_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c0_s_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_s_p6_1,
+        0
 };
 
-static long _vq_quantmap__44c8_s_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const long _vq_quantlist__44c0_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p8_1 = {
-	_vq_quantthresh__44c8_s_p8_1,
-	_vq_quantmap__44c8_s_p8_1,
-	21,
-	21
+static const char _vq_lengthlist__44c0_s_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+        10,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
+        11,11,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+        13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,11,11,11,11,13,12,13,13, 0, 0, 0, 0,
+         0,12,12,11,11,12,12,13,13,
 };
 
-static static_codebook _44c8_s_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44c8_s_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c8_s_p8_1,
-	NULL,
-	&_vq_auxt__44c8_s_p8_1,
-	NULL,
-	0
+static const static_codebook _44c0_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c0_s_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c0_s_p7_0,
+        0
 };
 
-static long _vq_quantlist__44c8_s_p9_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44c0_s_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c8_s_p9_0[] = {
-	 1, 5, 5,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10, 7,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10, 6, 8,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,
+static const char _vq_lengthlist__44c0_s_p7_1[] = {
+         2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__44c8_s_p9_0[] = {
-	-6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 
-	465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 6982.5, 
+static const static_codebook _44c0_s_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c0_s_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c0_s_p7_1,
+        0
 };
 
-static long _vq_quantmap__44c8_s_p9_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c0_s_p8_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p9_0 = {
-	_vq_quantthresh__44c8_s_p9_0,
-	_vq_quantmap__44c8_s_p9_0,
-	17,
-	17
+static const char _vq_lengthlist__44c0_s_p8_0[] = {
+         1, 5, 5,10,10, 6, 9, 8,10,10, 6,10, 9,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10, 8,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,
 };
 
-static static_codebook _44c8_s_p9_0 = {
-	2, 289,
-	_vq_lengthlist__44c8_s_p9_0,
-	1, -509798400, 1631393792, 5, 0,
-	_vq_quantlist__44c8_s_p9_0,
-	NULL,
-	&_vq_auxt__44c8_s_p9_0,
-	NULL,
-	0
+static const static_codebook _44c0_s_p8_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c0_s_p8_0,
+        1, -518283264, 1627103232, 3, 0,
+        (long *)_vq_quantlist__44c0_s_p8_0,
+        0
 };
 
-static long _vq_quantlist__44c8_s_p9_1[] = {
-	9,
-	8,
-	10,
-	7,
-	11,
-	6,
-	12,
-	5,
-	13,
-	4,
-	14,
-	3,
-	15,
-	2,
-	16,
-	1,
-	17,
-	0,
-	18,
+static const long _vq_quantlist__44c0_s_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c8_s_p9_1[] = {
-	 1, 4, 4, 7, 7, 7, 7, 7, 7, 9, 9,10,10,11,10,13,
-	12,11,12, 6, 6, 6, 8, 8, 8, 8, 8, 8, 9,10,10,10,
-	12,12,12,12,13,15, 5, 5, 5, 8, 8, 8, 8, 8, 8,10,
-	 9,10,11,12,13,12,13,13,12,15, 9, 8, 9, 9, 9, 9,
-	 9, 9,10,10,10,11,14,12,13,15,12,14,15, 8, 9, 9,
-	 9, 9, 9, 9, 9,10,10,12,11,12,11,12,13,13,13,15,
-	13,13, 9, 9,10, 9,10,10,11,10,11,12,12,12,14,13,
-	14,15,15,13,13, 9, 8,10, 9,10,10,11,10,12,12,13,
-	13,14,13,14,15,15,15,15, 9, 9, 9, 9,10,11,12,12,
-	12,13,13,13,14,15,15,14,15,15,15, 9, 7, 9, 8,12,
-	11,11,13,12,12,13,12,14,13,13,14,15,15,15,13,13,
-	10,10,12,11,13,13,12,12,13,13,14,13,13,15,15,15,
-	15,12,13,11, 9,11,10,12,12,15,13,13,13,14,13,14,
-	13,15,15,15,15,15,12,12,11,11,12,13,15,13,13,14,
-	14,14,15,14,15,15,15,15,15,13,11,12,11,12,11,13,
-	14,13,13,14,14,13,14,15,15,15,15,15,15,15,12,12,
-	12,13,15,13,15,14,15,14,13,15,15,15,15,15,15,14,
-	15,13,13,12,11,14,12,15,13,14,14,14,13,15,15,15,
-	15,15,15,15,14,13,14,13,15,13,15,15,15,14,15,14,
-	15,15,15,15,15,15,15,14,14,14,13,13,13,15,15,15,
-	15,14,15,15,15,15,15,15,15,15,15,15,12,13,13,13,
-	14,15,15,13,15,15,15,15,15,15,15,15,15,15,15,15,
-	15,14,14,15,15,15,14,14,15,
+static const char _vq_lengthlist__44c0_s_p8_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 9, 9,11,12,13,12, 6, 5, 5,
+         7, 7, 8, 8,10, 9,12,12,12,12, 6, 5, 5, 7, 7, 8,
+         8,10, 9,12,11,11,13,16, 7, 7, 8, 8, 9, 9,10,10,
+        12,12,13,12,16, 7, 7, 8, 7, 9, 9,10,10,11,12,12,
+        13,16,10,10, 8, 8,10,10,11,12,12,12,13,13,16,11,
+        10, 8, 7,11,10,11,11,12,11,13,13,16,16,16,10,10,
+        10,10,11,11,13,12,13,13,16,16,16,11, 9,11, 9,15,
+        13,12,13,13,13,16,16,16,15,13,11,11,12,13,12,12,
+        14,13,16,16,16,14,13,11,11,13,12,14,13,13,13,16,
+        16,16,16,16,13,13,13,12,14,13,14,14,16,16,16,16,
+        16,13,13,12,12,14,14,15,13,
 };
 
-static float _vq_quantthresh__44c8_s_p9_1[] = {
-	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
-	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
-	367.5, 416.5, 
+static const static_codebook _44c0_s_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c0_s_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c0_s_p8_1,
+        0
 };
 
-static long _vq_quantmap__44c8_s_p9_1[] = {
-	   17,   15,   13,   11,    9,    7,    5,    3,
-	    1,    0,    2,    4,    6,    8,   10,   12,
-	   14,   16,   18,
+static const long _vq_quantlist__44c0_s_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p9_1 = {
-	_vq_quantthresh__44c8_s_p9_1,
-	_vq_quantmap__44c8_s_p9_1,
-	19,
-	19
+static const char _vq_lengthlist__44c0_s_p8_2[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+         9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+         9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 8, 9, 9,
+         9, 9, 9,10, 9,10,10,10,10, 7, 7, 8, 8, 9, 9, 9,
+         9, 9, 9,10, 9,10,10,10,10,10, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 9,11,10,10,10,10, 8, 8, 9,
+         9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9,10, 9, 9,10,11,10,10,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,10,11,
+        11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        11,11,11,11, 9,10, 9,10, 9, 9, 9, 9,10, 9,10,11,
+        10,11,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9,10,11,
+        11,10,11,11,10,11,10,10,10, 9, 9, 9, 9,10, 9, 9,
+        10,11,10,11,11,11,11,10,11,10,10, 9,10, 9, 9, 9,
+        10,
 };
 
-static static_codebook _44c8_s_p9_1 = {
-	2, 361,
-	_vq_lengthlist__44c8_s_p9_1,
-	1, -518287360, 1622704128, 5, 0,
-	_vq_quantlist__44c8_s_p9_1,
-	NULL,
-	&_vq_auxt__44c8_s_p9_1,
-	NULL,
-	0
+static const static_codebook _44c0_s_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c0_s_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c0_s_p8_2,
+        0
 };
 
-static long _vq_quantlist__44c8_s_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
+static const char _huff_lengthlist__44c0_s_short[] = {
+         9, 8,12,11,12,13,14,14,16, 6, 1, 5, 6, 6, 9,12,
+        14,17, 9, 4, 5, 9, 7, 9,13,15,16, 8, 5, 8, 6, 8,
+        10,13,17,17, 9, 6, 7, 7, 8, 9,13,15,17,11, 8, 9,
+         9, 9,10,12,16,16,13, 7, 8, 7, 7, 9,12,14,15,13,
+         6, 7, 5, 5, 7,10,13,13,14, 7, 8, 5, 6, 7, 9,10,
+        12,
 };
 
-static long _vq_lengthlist__44c8_s_p9_2[] = {
-	 3, 4, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const static_codebook _huff_book__44c0_s_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44c0_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c8_s_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+static const char _huff_lengthlist__44c0_sm_long[] = {
+         5, 4, 9,10, 9,10,11,12,13, 4, 1, 5, 7, 7, 9,11,
+        12,14, 8, 5, 7, 9, 8,10,13,13,13,10, 7, 9, 4, 6,
+         7,10,12,14, 9, 6, 7, 6, 6, 7,10,12,12, 9, 8, 9,
+         7, 6, 7, 8,11,12,11,11,11, 9, 8, 7, 8,10,12,12,
+        13,14,12,11, 9, 9, 9,12,12,17,17,15,16,12,10,11,
+        13,
 };
 
-static long _vq_quantmap__44c8_s_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
+static const static_codebook _huff_book__44c0_sm_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44c0_sm_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c8_s_p9_2 = {
-	_vq_quantthresh__44c8_s_p9_2,
-	_vq_quantmap__44c8_s_p9_2,
-	49,
-	49
+static const long _vq_quantlist__44c0_sm_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44c8_s_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44c8_s_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44c8_s_p9_2,
-	NULL,
-	&_vq_auxt__44c8_s_p9_2,
-	NULL,
-	0
+static const char _vq_lengthlist__44c0_sm_p1_0[] = {
+         1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+         0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 9,10,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 9,10,10, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _huff_lengthlist__44c8_s_short[] = {
-	 4,11,13,14,16,15,16,16,17,16, 5, 6, 8, 9,10, 9,
-	11,17,16,17, 6, 6, 6, 6, 7, 8, 9,14,16,17, 8, 6,
-	 5, 4, 6, 7, 9,12,14,17, 9, 7, 6, 5, 5, 5, 8,11,
-	14,17,10, 9, 7, 6, 5, 3, 5, 8,13,17,12,11, 9, 8,
-	 7, 4, 4, 6,14,17,13,13,12, 8, 7, 5, 4, 5,12,17,
-	17,14,15,10, 8, 7, 7, 7,11,17,17,16,17,14,12,10,
-	11,11,15,17,
+static const static_codebook _44c0_sm_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c0_sm_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c0_sm_p1_0,
+        0
 };
 
-static static_codebook _huff_book__44c8_s_short = {
-	2, 100,
-	_huff_lengthlist__44c8_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44c0_sm_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _huff_lengthlist__44c9_s_long[] = {
-	 3, 8,13,14,15,15,13,13,14,14, 6, 5, 8,10,12,12,
-	13,12,13,14,10, 6, 5, 6, 8, 9,11,11,13,14,13, 8,
-	 5, 4, 5, 6, 9,10,13,14,14,11, 7, 5, 4, 5, 8, 9,
-	12,14,12,11, 8, 6, 5, 3, 5, 7,10,13,12,10,10, 8,
-	 7, 5, 4, 6, 9,12,13,12,11,10, 9, 6, 5, 5, 7,10,
-	13,12,12,11,11, 9, 8, 7, 8,10,12,12,13,13,14,12,
-	10, 9, 9,10,
+static const char _vq_lengthlist__44c0_sm_p2_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static static_codebook _huff_book__44c9_s_long = {
-	2, 100,
-	_huff_lengthlist__44c9_s_long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c0_sm_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c0_sm_p2_0,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c0_sm_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44c9_s_p1_0[] = {
-	 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0,
-	 8, 8, 6, 8, 8, 0, 8, 9, 0, 8, 8, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 5, 8, 8, 0, 8, 7, 0, 8, 8, 5, 8, 8,
-	 0, 7, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-	 9, 8, 0, 8, 8, 0, 7, 7, 5, 8, 9, 0, 8, 8, 0, 7,
-	 7,
+static const char _vq_lengthlist__44c0_sm_p3_0[] = {
+         1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 4, 7, 7, 0, 0,
+         0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
+         0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+         9,10, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
+         0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static float _vq_quantthresh__44c9_s_p1_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _44c0_sm_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c0_sm_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p3_0,
+        0
 };
 
-static long _vq_quantmap__44c9_s_p1_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c0_sm_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p1_0 = {
-	_vq_quantthresh__44c9_s_p1_0,
-	_vq_quantmap__44c9_s_p1_0,
-	3,
-	3
+static const char _vq_lengthlist__44c0_sm_p4_0[] = {
+         1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
+         9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+         8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+         9, 9, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
+         0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+        11,
 };
 
-static static_codebook _44c9_s_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44c9_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44c9_s_p1_0,
-	NULL,
-	&_vq_auxt__44c9_s_p1_0,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c0_sm_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p4_0,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c0_sm_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__44c9_s_p2_0[] = {
-	 3, 6, 6, 8, 8, 0, 6, 6, 8, 8, 0, 5, 5, 8, 8, 0,
-	 7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8,
-	 7, 9, 9, 0, 7, 7, 9, 9, 0, 9, 9,11,10, 0, 0, 0,
-	10,10, 6, 7, 7, 8, 9, 0, 7, 8, 9, 9, 0, 7, 7, 9,
-	 9, 0, 9, 9,10,11, 0, 0, 0,10,10, 8, 9, 9,10,10,
-	 0,10,10,11,11, 0,10,10,11,11, 0,12,12,13,12, 0,
-	 0, 0,13,13, 8, 8, 9,10,10, 0,10,10,11,12, 0,10,
-	10,11,11, 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 6, 8, 7,10,10, 0, 7, 7,10, 9,
-	 0, 7, 7,10,10, 0, 9, 8,10,10, 0, 0, 0,10,10, 6,
-	 7, 7,10,10, 0, 7, 7, 9,10, 0, 7, 7,10,10, 0, 8,
-	 9,10,10, 0, 0, 0,10,10, 8, 9, 9,11,11, 0,10, 9,
-	11,11, 0,10,10,11,11, 0,11,11,12,12, 0, 0, 0,12,
-	12, 8, 9, 9,11,11, 0, 9,10,11,11, 0,10,10,11,11,
-	 0,11,11,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 5, 8, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,
-	10, 9, 0, 8, 9,10,10, 0, 0, 0,10, 9, 5, 7, 8,10,
-	10, 0, 7, 7,10,10, 0, 7, 7, 9,10, 0, 9, 8,10,10,
-	 0, 0, 0,10,10, 8, 9, 9,12,11, 0,10,10,11,11, 0,
-	10, 9,11,11, 0,11,11,12,12, 0, 0, 0,12,12, 8, 9,
-	 9,11,11, 0,10,10,11,11, 0, 9,10,11,11, 0,11,11,
-	12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 7, 9, 9,12,12, 0, 9, 9,11,11, 0, 8, 9,11,11, 0,
-	10, 9,12,11, 0, 0, 0,11,11, 7, 9, 9,12,12, 0, 8,
-	 9,11,11, 0, 9, 8,11,11, 0, 9,10,11,11, 0, 0, 0,
-	11,11, 9,11,11,13,13, 0,10,10,12,12, 0,10,10,12,
-	12, 0,12,11,12,12, 0, 0, 0,13,13, 9,10,11,13,13,
-	 0,10,10,12,12, 0,10,10,12,12, 0,11,11,12,12, 0,
-	 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
-	11,10,13,13, 0,10,10,12,12, 0,10, 9,12,12, 0,11,
-	11,12,13, 0, 0, 0,12,11, 9,10,10,12,13, 0,10,10,
-	12,12, 0,10,10,12,12, 0,11,11,13,12, 0, 0, 0,12,
-	12,
+static const char _vq_lengthlist__44c0_sm_p5_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
+        11,11, 0, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+        11,11,11, 0, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+        11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+        10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,12,13,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,11,12,12,13,13,13,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+        14,
 };
 
-static float _vq_quantthresh__44c9_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c0_sm_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c0_sm_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c0_sm_p5_0,
+        0
 };
 
-static long _vq_quantmap__44c9_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c0_sm_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p2_0 = {
-	_vq_quantthresh__44c9_s_p2_0,
-	_vq_quantmap__44c9_s_p2_0,
-	5,
-	5
+static const char _vq_lengthlist__44c0_sm_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+        11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,10,11,11,11,11,11,11, 6,
+         9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
+        11,
 };
 
-static static_codebook _44c9_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44c9_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c9_s_p2_0,
-	NULL,
-	&_vq_auxt__44c9_s_p2_0,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c0_sm_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c0_sm_p6_0,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44c0_sm_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44c9_s_p3_0[] = {
-	 3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 7, 6,
-	 8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6,
-	 7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0,
-	 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c0_sm_p6_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 8, 9, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+         8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__44c9_s_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44c0_sm_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c0_sm_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p6_1,
+        0
 };
 
-static long _vq_quantmap__44c9_s_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44c0_sm_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p3_0 = {
-	_vq_quantthresh__44c9_s_p3_0,
-	_vq_quantmap__44c9_s_p3_0,
-	9,
-	9
+static const char _vq_lengthlist__44c0_sm_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0, 9,10,
+        10,10,11,11,12,11,12,12, 0, 0, 0,10,10, 9, 9,11,
+        11,12,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+        13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,11,12,11,11,13,12,13,13, 0, 0, 0, 0,
+         0,12,12,11,11,13,12,14,14,
 };
 
-static static_codebook _44c9_s_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44c9_s_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44c9_s_p3_0,
-	NULL,
-	&_vq_auxt__44c9_s_p3_0,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c0_sm_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p7_0,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44c0_sm_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44c9_s_p4_0[] = {
-	 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,
-	10, 0, 5, 5, 5, 5, 6, 6, 8, 7, 8, 8, 9, 9,10,10,
-	11,11, 0, 5, 5, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,
-	10,11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9, 9, 9,
-	11,11,11,11,12,12, 0, 0, 0, 7, 7, 7, 8, 9, 9, 9,
-	 9,11,10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 7, 7, 9,
-	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c0_sm_p7_1[] = {
+         2, 4, 4, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__44c9_s_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44c0_sm_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c0_sm_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c0_sm_p7_1,
+        0
 };
 
-static long _vq_quantmap__44c9_s_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44c0_sm_p8_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p4_0 = {
-	_vq_quantthresh__44c9_s_p4_0,
-	_vq_quantmap__44c9_s_p4_0,
-	17,
-	17
+static const char _vq_lengthlist__44c0_sm_p8_0[] = {
+         1, 3, 3,11,11,11,11,11,11, 3, 7, 6,11,11,11,11,
+        11,11, 4, 8, 7,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,
 };
 
-static static_codebook _44c9_s_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44c9_s_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44c9_s_p4_0,
-	NULL,
-	&_vq_auxt__44c9_s_p4_0,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p8_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c0_sm_p8_0,
+        1, -516186112, 1627103232, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p8_0,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p5_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c0_sm_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44c9_s_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
-	10,10, 4, 6, 6,10,10,10,10,10,10, 5,10,10, 9,12,
-	12,10,12,12, 7,10,10,12,12,12,12,12,13, 7,10,10,
-	12,12,12,12,13,13, 6,10,10,10,12,12,11,12,12, 8,
-	10,10,12,12,12,12,12,12, 7,10,10,12,12,13,12,12,
-	12,
+static const char _vq_lengthlist__44c0_sm_p8_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
+         7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
+         8,10,10,12,11,12,12,17, 7, 7, 8, 8, 9, 9,10,10,
+        12,12,13,13,18, 7, 7, 8, 7, 9, 9,10,10,12,12,12,
+        13,19,10,10, 8, 8,10,10,11,11,12,12,13,14,19,11,
+        10, 8, 7,10,10,11,11,12,12,13,12,19,19,19,10,10,
+        10,10,11,11,12,12,13,13,19,19,19,11, 9,11, 9,14,
+        12,13,12,13,13,19,20,18,13,14,11,11,12,12,13,13,
+        14,13,20,20,20,15,13,11,10,13,11,13,13,14,13,20,
+        20,20,20,20,13,14,12,12,13,13,13,13,20,20,20,20,
+        20,13,13,12,12,16,13,15,13,
 };
 
-static float _vq_quantthresh__44c9_s_p5_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _44c0_sm_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c0_sm_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c0_sm_p8_1,
+        0
 };
 
-static long _vq_quantmap__44c9_s_p5_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c0_sm_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p5_0 = {
-	_vq_quantthresh__44c9_s_p5_0,
-	_vq_quantmap__44c9_s_p5_0,
-	3,
-	3
+static const char _vq_lengthlist__44c0_sm_p8_2[] = {
+         2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+         9,10, 9, 9,10,10,10,11, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10,10,10,11,11, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,11,11,11,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,10,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,11,11,
+        11,11,11, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,10,11,10,
+        11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+        11,11,11,11,11, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,11,
+        11,10,11,11,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+        10,11,10,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
+         9,
 };
 
-static static_codebook _44c9_s_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44c9_s_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44c9_s_p5_0,
-	NULL,
-	&_vq_auxt__44c9_s_p5_0,
-	NULL,
-	0
+static const static_codebook _44c0_sm_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c0_sm_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c0_sm_p8_2,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const char _huff_lengthlist__44c0_sm_short[] = {
+         6, 6,12,13,13,14,16,17,17, 4, 2, 5, 8, 7, 9,12,
+        15,15, 9, 4, 5, 9, 7, 9,12,16,18,11, 6, 7, 4, 6,
+         8,11,14,18,10, 5, 6, 5, 5, 7,10,14,17,10, 5, 7,
+         7, 6, 7,10,13,16,11, 5, 7, 7, 7, 8,10,12,15,13,
+         6, 7, 5, 5, 7, 9,12,13,16, 8, 9, 6, 6, 7, 9,10,
+        12,
 };
 
-static long _vq_lengthlist__44c9_s_p5_1[] = {
-	 4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7,10, 5, 5, 6, 6,
-	 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 7, 7, 8,
-	 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
-	 6, 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8,
-	 8, 8,11,11,11, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11,
-	 7, 7, 7, 7, 7, 7, 8, 8,11,11,11,11,11, 7, 7, 7,
-	 7, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 7, 7,11,11,
-	11,11,11, 7, 7, 7, 7, 7, 7,
+static const static_codebook _huff_book__44c0_sm_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44c0_sm_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c9_s_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const char _huff_lengthlist__44c1_s_long[] = {
+         5, 5, 9,10, 9, 9,10,11,12, 5, 1, 5, 6, 6, 7,10,
+        12,14, 9, 5, 6, 8, 8,10,12,14,14,10, 5, 8, 5, 6,
+         8,11,13,14, 9, 5, 7, 6, 6, 8,10,12,11, 9, 7, 9,
+         7, 6, 6, 7,10,10,10, 9,12, 9, 8, 7, 7,10,12,11,
+        11,13,12,10, 9, 8, 9,11,11,14,15,15,13,11, 9, 9,
+        11,
 };
 
-static long _vq_quantmap__44c9_s_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const static_codebook _huff_book__44c1_s_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44c1_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p5_1 = {
-	_vq_quantthresh__44c9_s_p5_1,
-	_vq_quantmap__44c9_s_p5_1,
-	11,
-	11
+static const long _vq_quantlist__44c1_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44c9_s_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44c9_s_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c9_s_p5_1,
-	NULL,
-	&_vq_auxt__44c9_s_p5_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p1_0[] = {
+         2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
+         0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+         0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+         0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+         0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+         0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
+         0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+         0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c9_s_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44c1_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c1_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c1_s_p1_0,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p6_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 5, 4, 4,
-	 6, 6, 8, 8, 9, 9,10,10,11,11, 6, 4, 4, 6, 6, 8,
-	 8, 9, 9,10,10,12,12, 0, 6, 6, 6, 6, 8, 8,10,10,
-	11,11,12,12, 0, 6, 6, 6, 6, 8, 8,10,10,11,11,12,
-	12, 0,10,10, 8, 8, 9, 9,11,11,12,12,13,13, 0,11,
-	11, 8, 8, 9,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+static const long _vq_quantlist__44c1_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44c9_s_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const char _vq_lengthlist__44c1_s_p2_0[] = {
+         2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__44c9_s_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const static_codebook _44c1_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c1_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c1_s_p2_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p6_0 = {
-	_vq_quantthresh__44c9_s_p6_0,
-	_vq_quantmap__44c9_s_p6_0,
-	13,
-	13
+static const long _vq_quantlist__44c1_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _44c9_s_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44c9_s_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44c9_s_p6_0,
-	NULL,
-	&_vq_auxt__44c9_s_p6_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p3_0[] = {
+         1, 3, 2, 7, 7, 0, 0, 0, 0, 0,13,13, 6, 6, 0, 0,
+         0, 0, 0,12, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__44c9_s_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _44c1_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c1_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p3_0,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p6_1[] = {
-	 4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5,
-	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+static const long _vq_quantlist__44c1_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__44c9_s_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__44c1_s_p4_0[] = {
+         1, 3, 3, 6, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+         9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+         8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+         9, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+         0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+        11,
 };
 
-static long _vq_quantmap__44c9_s_p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _44c1_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c1_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p4_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p6_1 = {
-	_vq_quantthresh__44c9_s_p6_1,
-	_vq_quantmap__44c9_s_p6_1,
-	5,
-	5
+static const long _vq_quantlist__44c1_s_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _44c9_s_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44c9_s_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44c9_s_p6_1,
-	NULL,
-	&_vq_auxt__44c9_s_p6_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p5_0[] = {
+         1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,11, 0, 0, 0, 8, 8, 9, 9, 9,10,10,10,
+        10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10, 9,10,
+        10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+        10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+        14,
 };
 
-static long _vq_quantlist__44c9_s_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44c1_s_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c1_s_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c1_s_p5_0,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5,
-	 7, 7, 9, 8,10,10,11,11,12,12, 6, 5, 5, 7, 7, 9,
-	 9,10,10,11,11,12,12,20, 6, 6, 7, 7, 9, 9,10,10,
-	11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,11,11,13,
-	12,20,10,10, 8, 8, 9, 9,11,11,12,12,13,13,20,11,
-	11, 8, 8, 9, 9,11,11,12,12,13,13,20,20,20,10,10,
-	10,10,11,11,12,12,13,13,20,20,20,10,10,10,10,11,
-	11,12,12,13,13,20,20,20,14,14,11,11,12,12,13,13,
-	14,13,20,20,20,14,15,11,11,11,11,13,13,14,13,20,
-	20,20,20,19,12,12,12,12,13,13,14,14,19,19,19,19,
-	19,13,13,12,12,13,13,14,14,
+static const long _vq_quantlist__44c1_s_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44c9_s_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
+static const char _vq_lengthlist__44c1_s_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,11,11,
+        11,11,10,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 7,
+         9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,12,10,
+        11,
 };
 
-static long _vq_quantmap__44c9_s_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const static_codebook _44c1_s_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c1_s_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c1_s_p6_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p7_0 = {
-	_vq_quantthresh__44c9_s_p7_0,
-	_vq_quantmap__44c9_s_p7_0,
-	13,
-	13
+static const long _vq_quantlist__44c1_s_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static static_codebook _44c9_s_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44c9_s_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44c9_s_p7_0,
-	NULL,
-	&_vq_auxt__44c9_s_p7_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p6_1[] = {
+         2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
+         7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static long _vq_quantlist__44c9_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const static_codebook _44c1_s_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c1_s_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p6_1,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p7_1[] = {
-	 5, 6, 6, 6, 6, 7, 6, 7, 7, 7, 7, 8, 6, 6, 6, 6,
-	 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7,
-	 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6,
-	 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
-	 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
-	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
-	 8, 8, 8, 7, 7, 7, 7, 7, 7,
+static const long _vq_quantlist__44c1_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static float _vq_quantthresh__44c9_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const char _vq_lengthlist__44c1_s_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 6,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,11, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
+        10,10,11,11,12,11,12,12, 0, 0, 0,10,10,10, 9,11,
+        11,12,11,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+        13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,11,12,11,11,12,12,14,13, 0, 0, 0, 0,
+         0,12,11,11,11,13,10,14,13,
 };
 
-static long _vq_quantmap__44c9_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const static_codebook _44c1_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_s_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p7_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p7_1 = {
-	_vq_quantthresh__44c9_s_p7_1,
-	_vq_quantmap__44c9_s_p7_1,
-	11,
-	11
+static const long _vq_quantlist__44c1_s_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _44c9_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44c9_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44c9_s_p7_1,
-	NULL,
-	&_vq_auxt__44c9_s_p7_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p7_1[] = {
+         2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static long _vq_quantlist__44c9_s_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const static_codebook _44c1_s_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c1_s_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c1_s_p7_1,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,11, 6,
-	 5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5,
-	 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,19, 7, 8,
-	 8, 8, 9, 9, 9, 9,10,10,11,11,12,13,19, 8, 8, 8,
-	 8, 9, 9, 9, 9,10,10,11,12,12,12,19,12,12, 9, 9,
-	 9,10, 9,10,10,10,12,12,12,12,19,12,12, 9, 9,10,
-	 9,10,10,11,11,12,11,13,13,19,19,19, 9, 9, 9, 9,
-	10,10,11,11,12,12,12,12,19,19,19, 9, 9, 9, 9,10,
-	10,11,11,12,12,13,13,19,19,19,13,13,10,10,10,10,
-	12,12,12,12,13,13,19,19,19,13,13,10,10,10,10,12,
-	12,12,12,13,13,19,19,19,19,19,11,12,11,11,12,12,
-	13,12,13,13,19,19,19,18,18,12,11,11,10,12,11,13,
-	13,13,14,18,18,18,18,18,15,16,12,12,13,12,13,13,
-	14,14,18,18,18,18,18,16,15,12,11,12,11,13,13,14,
-	14,
+static const long _vq_quantlist__44c1_s_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static float _vq_quantthresh__44c9_s_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const char _vq_lengthlist__44c1_s_p8_0[] = {
+         1, 4, 3,10,10,10,10,10,10,10,10,10,10, 4, 8, 6,
+        10,10,10,10,10,10,10,10,10,10, 4, 8, 7,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static long _vq_quantmap__44c9_s_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const static_codebook _44c1_s_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_s_p8_0,
+        1, -514541568, 1627103232, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p8_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p8_0 = {
-	_vq_quantthresh__44c9_s_p8_0,
-	_vq_quantmap__44c9_s_p8_0,
-	15,
-	15
+static const long _vq_quantlist__44c1_s_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _44c9_s_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44c9_s_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44c9_s_p8_0,
-	NULL,
-	&_vq_auxt__44c9_s_p8_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44c1_s_p8_1[] = {
+         1, 4, 4, 6, 5, 7, 7, 9, 9,10,10,12,12, 6, 5, 5,
+         7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
+         8,10,10,11,11,12,12,15, 7, 7, 8, 8, 9, 9,11,11,
+        12,12,13,12,15, 8, 8, 8, 7, 9, 9,10,10,12,12,13,
+        13,16,11,10, 8, 8,10,10,11,11,12,12,13,13,16,11,
+        11, 9, 8,11,10,11,11,12,12,13,12,16,16,16,10,11,
+        10,11,12,12,12,12,13,13,16,16,16,11, 9,11, 9,14,
+        12,12,12,13,13,16,16,16,12,14,11,12,12,12,13,13,
+        14,13,16,16,16,15,13,12,10,13,10,13,14,13,13,16,
+        16,16,16,16,13,14,12,13,13,12,13,13,16,16,16,16,
+        16,13,12,12,11,14,12,15,13,
 };
 
-static long _vq_quantlist__44c9_s_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const static_codebook _44c1_s_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_s_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c1_s_p8_1,
+        0
 };
 
-static long _vq_lengthlist__44c9_s_p8_1[] = {
-	 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
-	10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
-	10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,10,10,10,10,10,10,10, 9, 9, 9, 9,10,10,10,10,
-	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
-	10,10, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
-	10,10, 9, 9, 9,10, 9, 9, 9, 9,10,10,10,10,10,10,
-	10,10,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const long _vq_quantlist__44c1_s_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static float _vq_quantthresh__44c9_s_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const char _vq_lengthlist__44c1_s_p8_2[] = {
+         2, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+         9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+         9,10, 9, 9,10,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10,11,11,11, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11, 8, 8, 9,
+         9, 9, 9,10, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,11,11,
+        11,11,11, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,10,11,11,
+        11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+        11,11,11,11,11, 9,10, 9, 9, 9, 9,10, 9, 9, 9,11,
+        11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
+        11,11,10,11,11,11,11,10,11, 9, 9, 9, 9, 9, 9, 9,
+         9,
 };
 
-static long _vq_quantmap__44c9_s_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const static_codebook _44c1_s_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c1_s_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c1_s_p8_2,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p8_1 = {
-	_vq_quantthresh__44c9_s_p8_1,
-	_vq_quantmap__44c9_s_p8_1,
-	21,
-	21
+static const char _huff_lengthlist__44c1_s_short[] = {
+         6, 8,13,12,13,14,15,16,16, 4, 2, 4, 7, 6, 8,11,
+        13,15,10, 4, 4, 8, 6, 8,11,14,17,11, 5, 6, 5, 6,
+         8,12,14,17,11, 5, 5, 6, 5, 7,10,13,16,12, 6, 7,
+         8, 7, 8,10,13,15,13, 8, 8, 7, 7, 8,10,12,15,15,
+         7, 7, 5, 5, 7, 9,12,14,15, 8, 8, 6, 6, 7, 8,10,
+        11,
 };
 
-static static_codebook _44c9_s_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44c9_s_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44c9_s_p8_1,
-	NULL,
-	&_vq_auxt__44c9_s_p8_1,
-	NULL,
-	0
+static const static_codebook _huff_book__44c1_s_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44c1_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44c9_s_p9_0[] = {
-	9,
-	8,
-	10,
-	7,
-	11,
-	6,
-	12,
-	5,
-	13,
-	4,
-	14,
-	3,
-	15,
-	2,
-	16,
-	1,
-	17,
-	0,
-	18,
+static const char _huff_lengthlist__44c1_sm_long[] = {
+         5, 4, 8,10, 9, 9,10,11,12, 4, 2, 5, 6, 6, 8,10,
+        11,13, 8, 4, 6, 8, 7, 9,12,12,14,10, 6, 8, 4, 5,
+         6, 9,11,12, 9, 5, 6, 5, 5, 6, 9,11,11, 9, 7, 9,
+         6, 5, 5, 7,10,10,10, 9,11, 8, 7, 6, 7, 9,11,11,
+        12,13,10,10, 9, 8, 9,11,11,15,15,12,13,11, 9,10,
+        11,
 };
 
-static long _vq_lengthlist__44c9_s_p9_0[] = {
-	 1, 4, 4,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10, 7, 9,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10, 7, 9,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const static_codebook _huff_book__44c1_sm_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44c1_sm_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44c9_s_p9_0[] = {
-	-7913.5, -6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, 
-	-465.5, 465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 
-	6982.5, 7913.5, 
+static const long _vq_quantlist__44c1_sm_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44c9_s_p9_0[] = {
-	   17,   15,   13,   11,    9,    7,    5,    3,
-	    1,    0,    2,    4,    6,    8,   10,   12,
-	   14,   16,   18,
+static const char _vq_lengthlist__44c1_sm_p1_0[] = {
+         1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+         0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+         0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p9_0 = {
-	_vq_quantthresh__44c9_s_p9_0,
-	_vq_quantmap__44c9_s_p9_0,
-	19,
-	19
+static const static_codebook _44c1_sm_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44c1_sm_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44c1_sm_p1_0,
+        0
 };
 
-static static_codebook _44c9_s_p9_0 = {
-	2, 361,
-	_vq_lengthlist__44c9_s_p9_0,
-	1, -508535424, 1631393792, 5, 0,
-	_vq_quantlist__44c9_s_p9_0,
-	NULL,
-	&_vq_auxt__44c9_s_p9_0,
-	NULL,
-	0
+static const long _vq_quantlist__44c1_sm_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__44c9_s_p9_1[] = {
-	9,
-	8,
-	10,
-	7,
-	11,
-	6,
-	12,
-	5,
-	13,
-	4,
-	14,
-	3,
-	15,
-	2,
-	16,
-	1,
-	17,
-	0,
-	18,
+static const char _vq_lengthlist__44c1_sm_p2_0[] = {
+         2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_lengthlist__44c9_s_p9_1[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9,10,10,10,12,11,12,
-	13,13,12, 6, 5, 5, 8, 8, 8, 9, 8, 9,10,10,11,11,
-	12,12,14,13,13,12, 5, 5, 5, 8, 8, 9, 8, 8, 9,10,
-	10,11,11,12,12,14,12,13,13,16, 8, 8, 9, 9, 9, 9,
-	 9, 9,10,10,11,12,13,13,13,13,14,14,16, 8, 8, 9,
-	 9, 9, 9, 9, 9,11,11,12,11,13,13,14,13,13,13,16,
-	14,13, 9, 9, 9, 9,10,10,11,12,12,13,13,13,14,13,
-	15,14,16,13,13, 9, 8, 9, 9,10,10,12,11,13,13,14,
-	14,14,14,15,14,16,16,16, 9, 9, 9, 9,10,10,12,12,
-	12,13,13,13,15,13,15,15,16,16,16, 9, 7, 9, 8,10,
-	11,11,12,12,13,13,16,15,14,14,14,16,16,16,13,13,
-	10,10,11,11,13,15,13,14,13,14,14,13,14,14,16,16,
-	16,13,12,10, 9,11,11,12,12,14,14,13,14,14,14,14,
-	14,16,16,16,16,16,12,13,11,11,12,13,13,13,14,15,
-	14,14,16,15,16,16,16,16,16,12,11,12,12,15,13,13,
-	13,14,13,15,14,15,14,16,16,16,16,16,14,15,12,13,
-	13,12,14,15,15,14,15,14,15,13,16,16,16,16,16,16,
-	16,13,13,14,12,16,12,16,15,14,15,14,14,16,16,16,
-	16,16,16,16,15,14,14,14,15,16,16,16,16,14,16,16,
-	16,16,16,16,16,16,16,14,14,14,12,15,11,15,13,16,
-	15,16,15,16,16,16,16,16,16,16,15,16,14,14,15,13,
-	15,16,16,16,16,15,16,16,16,16,16,16,16,16,16,15,
-	15,14,13,14,16,16,14,15,16,
+static const static_codebook _44c1_sm_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44c1_sm_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c1_sm_p2_0,
+        0
 };
 
-static float _vq_quantthresh__44c9_s_p9_1[] = {
-	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
-	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
-	367.5, 416.5, 
+static const long _vq_quantlist__44c1_sm_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__44c9_s_p9_1[] = {
-	   17,   15,   13,   11,    9,    7,    5,    3,
-	    1,    0,    2,    4,    6,    8,   10,   12,
-	   14,   16,   18,
+static const char _vq_lengthlist__44c1_sm_p3_0[] = {
+         1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0,
+         0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p9_1 = {
-	_vq_quantthresh__44c9_s_p9_1,
-	_vq_quantmap__44c9_s_p9_1,
-	19,
-	19
+static const static_codebook _44c1_sm_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c1_sm_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p3_0,
+        0
 };
 
-static static_codebook _44c9_s_p9_1 = {
-	2, 361,
-	_vq_lengthlist__44c9_s_p9_1,
-	1, -518287360, 1622704128, 5, 0,
-	_vq_quantlist__44c9_s_p9_1,
-	NULL,
-	&_vq_auxt__44c9_s_p9_1,
-	NULL,
-	0
+static const long _vq_quantlist__44c1_sm_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44c9_s_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
+static const char _vq_lengthlist__44c1_sm_p4_0[] = {
+         1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,
+         9, 9, 0, 6, 6, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+         8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+         8, 8, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
+         0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+        11,
 };
 
-static long _vq_lengthlist__44c9_s_p9_2[] = {
-	 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 7, 6, 6, 7, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const static_codebook _44c1_sm_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44c1_sm_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p4_0,
+        0
 };
 
-static float _vq_quantthresh__44c9_s_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+static const long _vq_quantlist__44c1_sm_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantmap__44c9_s_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
+static const char _vq_lengthlist__44c1_sm_p5_0[] = {
+         2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,10,
+        10,11,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
+        10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+         9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+         9, 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0, 0,
+         0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
+         0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__44c9_s_p9_2 = {
-	_vq_quantthresh__44c9_s_p9_2,
-	_vq_quantmap__44c9_s_p9_2,
-	49,
-	49
+static const static_codebook _44c1_sm_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c1_sm_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c1_sm_p5_0,
+        0
 };
 
-static static_codebook _44c9_s_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44c9_s_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44c9_s_p9_2,
-	NULL,
-	&_vq_auxt__44c9_s_p9_2,
-	NULL,
-	0
+static const long _vq_quantlist__44c1_sm_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _huff_lengthlist__44c9_s_short[] = {
-	 5,13,17,15,16,16,18,17,18,18, 5, 7,10,12,12,12,
-	12,17,18,17, 7, 6, 7, 8, 9, 9, 9,13,17,17, 8, 6,
-	 6, 5, 6, 7, 8,11,16,18, 9, 7, 7, 5, 5, 6, 7,10,
-	15,18, 9, 8, 7, 6, 5, 4, 5, 7,13,17,11,11, 9, 8,
-	 7, 4, 3, 5,12,18,13,13,12,10, 7, 5, 4, 3, 8,13,
-	16,16,16,13, 8, 8, 7, 5, 8,12,15,18,17,15,11,10,
-	 9, 8,10,14,
+static const char _vq_lengthlist__44c1_sm_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+         9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+        11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,11,11,11,11,11,11,11, 6,
+         9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,11,10,
+        11,
 };
 
-static static_codebook _huff_book__44c9_s_short = {
-	2, 100,
-	_huff_lengthlist__44c9_s_short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _44c1_sm_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44c1_sm_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44c1_sm_p6_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44c1_sm_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__8c0_s_p1_0[] = {
-	 1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
-	 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
-	 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,10, 0, 0,
-	 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 9,11,11,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
-	 0, 0, 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,11,11,
-	 0, 0, 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c1_sm_p6_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+         8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 9, 8,10,10,10,10,10, 8, 8, 8,
+         8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+        10,10,10, 8, 8, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__8c0_s_p1_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _44c1_sm_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44c1_sm_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p6_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p1_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44c1_sm_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p1_0 = {
-	_vq_quantthresh__8c0_s_p1_0,
-	_vq_quantmap__8c0_s_p1_0,
-	3,
-	3
+static const char _vq_lengthlist__44c1_sm_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
+         8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0, 9,10,
+         9,10,11,11,12,11,13,12, 0, 0, 0,10,10, 9, 9,11,
+        11,12,12,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+        13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,11,12,11,11,12,13,14,13, 0, 0, 0, 0,
+         0,12,12,11,11,13,12,14,13,
 };
 
-static static_codebook _8c0_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__8c0_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8c0_s_p1_0,
-	NULL,
-	&_vq_auxt__8c0_s_p1_0,
-	NULL,
-	0
+static const static_codebook _44c1_sm_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_sm_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p7_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c1_sm_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__8c0_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c1_sm_p7_1[] = {
+         2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__8c0_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c1_sm_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44c1_sm_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44c1_sm_p7_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c1_sm_p8_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p2_0 = {
-	_vq_quantthresh__8c0_s_p2_0,
-	_vq_quantmap__8c0_s_p2_0,
-	5,
-	5
+static const char _vq_lengthlist__44c1_sm_p8_0[] = {
+         1, 3, 3,13,13,13,13,13,13,13,13,13,13, 3, 6, 6,
+        13,13,13,13,13,13,13,13,13,13, 4, 8, 7,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,
 };
 
-static static_codebook _8c0_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__8c0_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c0_s_p2_0,
-	NULL,
-	&_vq_auxt__8c0_s_p2_0,
-	NULL,
-	0
+static const static_codebook _44c1_sm_p8_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_sm_p8_0,
+        1, -514541568, 1627103232, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p8_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44c1_sm_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__8c0_s_p3_0[] = {
-	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 8, 8,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const char _vq_lengthlist__44c1_sm_p8_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
+         7, 7, 8, 7,10,10,11,11,12,12, 6, 5, 5, 7, 7, 8,
+         8,10,10,11,11,12,12,16, 7, 7, 8, 8, 9, 9,11,11,
+        12,12,13,13,17, 7, 7, 8, 7, 9, 9,11,10,12,12,13,
+        13,19,11,10, 8, 8,10,10,11,11,12,12,13,13,19,11,
+        11, 9, 7,11,10,11,11,12,12,13,12,19,19,19,10,10,
+        10,10,11,12,12,12,13,14,18,19,19,11, 9,11, 9,13,
+        12,12,12,13,13,19,20,19,13,15,11,11,12,12,13,13,
+        14,13,18,19,20,15,13,12,10,13,10,13,13,13,14,20,
+        20,20,20,20,13,14,12,12,13,12,13,13,20,20,20,20,
+        20,13,12,12,12,14,12,14,13,
 };
 
-static float _vq_quantthresh__8c0_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44c1_sm_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44c1_sm_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44c1_sm_p8_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44c1_sm_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p3_0 = {
-	_vq_quantthresh__8c0_s_p3_0,
-	_vq_quantmap__8c0_s_p3_0,
-	5,
-	5
-};
-
-static static_codebook _8c0_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__8c0_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c0_s_p3_0,
-	NULL,
-	&_vq_auxt__8c0_s_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c0_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__8c0_s_p4_0[] = {
-	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__8c0_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__8c0_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c0_s_p4_0 = {
-	_vq_quantthresh__8c0_s_p4_0,
-	_vq_quantmap__8c0_s_p4_0,
-	9,
-	9
+static const char _vq_lengthlist__44c1_sm_p8_2[] = {
+         2, 5, 5, 6, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+         8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9,10,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,11,11,11, 9,
+         8, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,11,
+        11,11,11, 9, 9,10, 9, 9, 9, 9,10, 9,10,10,11,10,
+        11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+        11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,
+        11,10,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
+        10,11,10,11,11,11,11,11,11, 9, 9,10, 9, 9, 9, 9,
+         9,
 };
 
-static static_codebook _8c0_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__8c0_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8c0_s_p4_0,
-	NULL,
-	&_vq_auxt__8c0_s_p4_0,
-	NULL,
-	0
+static const static_codebook _44c1_sm_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44c1_sm_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44c1_sm_p8_2,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _huff_lengthlist__44c1_sm_short[] = {
+         4, 7,13,14,14,15,16,18,18, 4, 2, 5, 8, 7, 9,12,
+        15,15,10, 4, 5,10, 6, 8,11,15,17,12, 5, 7, 5, 6,
+         8,11,14,17,11, 5, 6, 6, 5, 6, 9,13,17,12, 6, 7,
+         6, 5, 6, 8,12,14,14, 7, 8, 6, 6, 7, 9,11,14,14,
+         8, 9, 6, 5, 6, 9,11,13,16,10,10, 7, 6, 7, 8,10,
+        11,
 };
 
-static long _vq_lengthlist__8c0_s_p5_0[] = {
-	 1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
-	 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8,
-	 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0,
-	 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
-	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
+static const static_codebook _huff_book__44c1_sm_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44c1_sm_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__8c0_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _huff_lengthlist__44cn1_s_long[] = {
+         4, 4, 7, 8, 7, 8,10,12,17, 3, 1, 6, 6, 7, 8,10,
+        12,15, 7, 6, 9, 9, 9,11,12,14,17, 8, 6, 9, 6, 7,
+         9,11,13,17, 7, 6, 9, 7, 7, 8, 9,12,15, 8, 8,10,
+         8, 7, 7, 7,10,14, 9,10,12,10, 8, 8, 8,10,14,11,
+        13,15,13,12,11,11,12,16,17,18,18,19,20,18,16,16,
+        20,
 };
 
-static long _vq_quantmap__8c0_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _huff_book__44cn1_s_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44cn1_s_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p5_0 = {
-	_vq_quantthresh__8c0_s_p5_0,
-	_vq_quantmap__8c0_s_p5_0,
-	9,
-	9
+static const long _vq_quantlist__44cn1_s_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _8c0_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__8c0_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8c0_s_p5_0,
-	NULL,
-	&_vq_auxt__8c0_s_p5_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44cn1_s_p1_0[] = {
+         1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+         0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
+         0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0,10,11,11, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
+         0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0,10,11,11,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+         0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11, 0,
+         0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11,
+         0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__8c0_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const static_codebook _44cn1_s_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44cn1_s_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44cn1_s_p1_0,
+        0
 };
 
-static long _vq_lengthlist__8c0_s_p6_0[] = {
-	 1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11,
-	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,11, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,10,10,
-	11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,11,
-	10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,
-	11,11,11,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,
-	10,11,11,12,12,13,13, 0, 0, 0,10,10,10,10,11,11,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10, 9,10,
-	11,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
-	10, 9,10,11,12,12,13,13,14,13, 0, 0, 0, 0, 0, 9,
-	 9, 9,10,10,10,11,11,13,12,13,13, 0, 0, 0, 0, 0,
-	10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
-	 0, 0, 0,10,10,11,11,12,12,13,13,13,14, 0, 0, 0,
-	 0, 0, 0, 0,11,11,11,11,12,12,13,14,14,14, 0, 0,
-	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,13, 0,
-	 0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,14,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
-	14,
+static const long _vq_quantlist__44cn1_s_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__8c0_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const char _vq_lengthlist__44cn1_s_p2_0[] = {
+         1, 4, 4, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__8c0_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const static_codebook _44cn1_s_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44cn1_s_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44cn1_s_p2_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p6_0 = {
-	_vq_quantthresh__8c0_s_p6_0,
-	_vq_quantmap__8c0_s_p6_0,
-	17,
-	17
+static const long _vq_quantlist__44cn1_s_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _8c0_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__8c0_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__8c0_s_p6_0,
-	NULL,
-	&_vq_auxt__8c0_s_p6_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44cn1_s_p3_0[] = {
+         1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+         0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+         0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+         9, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+         0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__8c0_s_p7_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _44cn1_s_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44cn1_s_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_s_p3_0,
+        0
 };
 
-static long _vq_lengthlist__8c0_s_p7_0[] = {
-	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12,
-	 9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11,
-	12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10,
-	11,11,11,11,10,10, 7,10,11,12,11,11,12,11,12, 6,
-	 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10,10,10,11,10,
-	10,
+static const long _vq_quantlist__44cn1_s_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__8c0_s_p7_0[] = {
-	-5.5, 5.5, 
+static const char _vq_lengthlist__44cn1_s_p4_0[] = {
+         1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 6, 7, 7,
+         9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+         8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+         9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+         0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+        11,
 };
 
-static long _vq_quantmap__8c0_s_p7_0[] = {
-	    1,    0,    2,
+static const static_codebook _44cn1_s_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44cn1_s_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_s_p4_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p7_0 = {
-	_vq_quantthresh__8c0_s_p7_0,
-	_vq_quantmap__8c0_s_p7_0,
-	3,
-	3
+static const long _vq_quantlist__44cn1_s_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _8c0_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__8c0_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__8c0_s_p7_0,
-	NULL,
-	&_vq_auxt__8c0_s_p7_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44cn1_s_p5_0[] = {
+         1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
+        10, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+        11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+        10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
+        10,10,11,11,11,12,12, 0, 0, 0, 9, 9,10, 9,10,10,
+        10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+        10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+        10,10,11,10,11,11,11,12,13,12,13,13, 0, 0, 0, 0,
+         0, 0, 0,11,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,13,13,13,13,13,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,12,13,13,14,
+        14,
 };
 
-static long _vq_quantlist__8c0_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const static_codebook _44cn1_s_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44cn1_s_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44cn1_s_p5_0,
+        0
 };
 
-static long _vq_lengthlist__8c0_s_p7_1[] = {
-	 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7,
-	 8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9,
-	 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8,
-	 8, 9, 9, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9,10,
-	10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,11,10,11,
-	 9, 9, 9, 9,10,10,10,10,11,11,11,10,10, 9, 9,10,
-	10,10, 9,11,10,10,10,10,10,10, 9, 9,10,10,11,11,
-	10,10,10, 9, 9, 9,10,10,10,
+static const long _vq_quantlist__44cn1_s_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__8c0_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__8c0_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c0_s_p7_1 = {
-	_vq_quantthresh__8c0_s_p7_1,
-	_vq_quantmap__8c0_s_p7_1,
-	11,
-	11
+static const char _vq_lengthlist__44cn1_s_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 6, 6,10, 9, 9,11,
+         9, 9, 4, 6, 6,10, 9, 9,10, 9, 9, 7,10,10,11,11,
+        11,12,11,11, 7, 9, 9,11,11,10,11,10,10, 7, 9, 9,
+        11,10,11,11,10,10, 7,10,10,11,11,11,12,11,11, 7,
+         9, 9,11,10,10,11,10,10, 7, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static static_codebook _8c0_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__8c0_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__8c0_s_p7_1,
-	NULL,
-	&_vq_auxt__8c0_s_p7_1,
-	NULL,
-	0
+static const static_codebook _44cn1_s_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44cn1_s_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44cn1_s_p6_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44cn1_s_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__8c0_s_p8_0[] = {
-	 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6,
-	 7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8,
-	 7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8,
-	 9, 9,10,10, 0, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9,11,
-	10, 0, 0,13, 9, 8, 9, 9, 9, 9,10,10,11,11, 0,13,
-	 0, 9, 9, 9, 9, 9, 9,11,10,11,11, 0, 0, 0, 8, 9,
-	10, 9,10,10,13,11,12,12, 0, 0, 0, 8, 9, 9, 9,10,
-	10,13,12,12,13, 0, 0, 0,12, 0,10,10,12,11,10,11,
-	12,12, 0, 0, 0,13,13,10,10,10,11,12, 0,13, 0, 0,
-	 0, 0, 0, 0,13,11, 0,12,12,12,13,12, 0, 0, 0, 0,
-	 0, 0,13,13,11,13,13,11,12,
+static const char _vq_lengthlist__44cn1_s_p6_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 6,
+         8, 8, 8, 8, 8, 8,10,10,10, 7, 6, 7, 7, 8, 8, 8,
+         8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 9, 9,
+         9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,
+        10,10,10, 9, 9, 9, 9, 9, 9,
 };
 
-static float _vq_quantthresh__8c0_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44cn1_s_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44cn1_s_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_s_p6_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44cn1_s_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p8_0 = {
-	_vq_quantthresh__8c0_s_p8_0,
-	_vq_quantmap__8c0_s_p8_0,
-	13,
-	13
+static const char _vq_lengthlist__44cn1_s_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,11,11, 7, 5, 5, 7, 7, 8,
+         8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,12, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+        10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+        11,12,12,13,12, 0, 0, 0,14,14,11,10,11,12,12,13,
+        13,14, 0, 0, 0,15,15,11,11,12,11,12,12,14,13, 0,
+         0, 0, 0, 0,12,12,12,12,13,13,14,14, 0, 0, 0, 0,
+         0,13,13,12,12,13,13,13,14,
 };
 
-static static_codebook _8c0_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__8c0_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__8c0_s_p8_0,
-	NULL,
-	&_vq_auxt__8c0_s_p8_0,
-	NULL,
-	0
+static const static_codebook _44cn1_s_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44cn1_s_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44cn1_s_p7_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44cn1_s_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__8c0_s_p8_1[] = {
-	 1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7,
-	 7, 7, 6, 6, 7, 7, 7, 6, 6,
+static const char _vq_lengthlist__44cn1_s_p7_1[] = {
+         2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+         6, 6, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static float _vq_quantthresh__8c0_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44cn1_s_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44cn1_s_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44cn1_s_p7_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44cn1_s_p8_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p8_1 = {
-	_vq_quantthresh__8c0_s_p8_1,
-	_vq_quantmap__8c0_s_p8_1,
-	5,
-	5
+static const char _vq_lengthlist__44cn1_s_p8_0[] = {
+         1, 7, 7,11,11, 8,11,11,11,11, 4,11, 3,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11, 7,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,
 };
 
-static static_codebook _8c0_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__8c0_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c0_s_p8_1,
-	NULL,
-	&_vq_auxt__8c0_s_p8_1,
-	NULL,
-	0
+static const static_codebook _44cn1_s_p8_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44cn1_s_p8_0,
+        1, -518283264, 1627103232, 3, 0,
+        (long *)_vq_quantlist__44cn1_s_p8_0,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p9_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44cn1_s_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__8c0_s_p9_0[] = {
-	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const char _vq_lengthlist__44cn1_s_p8_1[] = {
+         1, 4, 4, 6, 6, 8, 8, 9,10,10,11,11,11, 6, 5, 5,
+         7, 7, 8, 8, 9,10, 9,11,11,12, 5, 5, 5, 7, 7, 8,
+         9,10,10,12,12,14,13,15, 7, 7, 8, 8, 9,10,11,11,
+        10,12,10,11,15, 7, 8, 8, 8, 9, 9,11,11,13,12,12,
+        13,15,10,10, 8, 8,10,10,12,12,11,14,10,10,15,11,
+        11, 8, 8,10,10,12,13,13,14,15,13,15,15,15,10,10,
+        10,10,12,12,13,12,13,10,15,15,15,10,10,11,10,13,
+        11,13,13,15,13,15,15,15,13,13,10,11,11,11,12,10,
+        14,11,15,15,14,14,13,10,10,12,11,13,13,14,14,15,
+        15,15,15,15,11,11,11,11,12,11,15,12,15,15,15,15,
+        15,12,12,11,11,14,12,13,14,
 };
 
-static float _vq_quantthresh__8c0_s_p9_0[] = {
-	-157.5, 157.5, 
+static const static_codebook _44cn1_s_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44cn1_s_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44cn1_s_p8_1,
+        0
 };
 
-static long _vq_quantmap__8c0_s_p9_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44cn1_s_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p9_0 = {
-	_vq_quantthresh__8c0_s_p9_0,
-	_vq_quantmap__8c0_s_p9_0,
-	3,
-	3
+static const char _vq_lengthlist__44cn1_s_p8_2[] = {
+         3, 4, 3, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+         9,10,11,11, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10,10,10, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
+         9, 9,10, 9,10,11,10, 7, 6, 7, 7, 8, 8, 9, 9, 9,
+         9, 9, 9, 9,10,10,10,11, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9,
+         9, 9, 9, 9, 9, 9,10,11,11,11, 8, 8, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 8, 8, 8,
+         9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,10,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,
+        11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11,
+        10,11,11,11, 9,10,10, 9, 9, 9, 9, 9, 9, 9,10,11,
+        11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+        11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+        11,11,11,10,11,11,11,11,11, 9, 9, 9,10, 9, 9, 9,
+         9,
 };
 
-static static_codebook _8c0_s_p9_0 = {
-	4, 81,
-	_vq_lengthlist__8c0_s_p9_0,
-	1, -518803456, 1628680192, 2, 0,
-	_vq_quantlist__8c0_s_p9_0,
-	NULL,
-	&_vq_auxt__8c0_s_p9_0,
-	NULL,
-	0
+static const static_codebook _44cn1_s_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44cn1_s_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44cn1_s_p8_2,
+        0
 };
 
-static long _vq_quantlist__8c0_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const char _huff_lengthlist__44cn1_s_short[] = {
+        10, 9,12,15,12,13,16,14,16, 7, 1, 5,14, 7,10,13,
+        16,16, 9, 4, 6,16, 8,11,16,16,16,14, 4, 7,16, 9,
+        12,14,16,16,10, 5, 7,14, 9,12,14,15,15,13, 8, 9,
+        14,10,12,13,14,15,13, 9, 9, 7, 6, 8,11,12,12,14,
+         8, 8, 5, 4, 5, 8,11,12,16,10,10, 6, 5, 6, 8, 9,
+        10,
 };
 
-static long _vq_lengthlist__8c0_s_p9_1[] = {
-	 1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6,
-	 6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5,
-	 6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8,
-	 8, 8, 9, 9,11,11,11,11,11,11,11,11,11, 9, 8, 7,
-	 8, 9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,
+static const static_codebook _huff_book__44cn1_s_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44cn1_s_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__8c0_s_p9_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const char _huff_lengthlist__44cn1_sm_long[] = {
+         3, 3, 8, 8, 8, 8,10,12,14, 3, 2, 6, 7, 7, 8,10,
+        12,16, 7, 6, 7, 9, 8,10,12,14,16, 8, 6, 8, 4, 5,
+         7, 9,11,13, 7, 6, 8, 5, 6, 7, 9,11,14, 8, 8,10,
+         7, 7, 6, 8,10,13, 9,11,12, 9, 9, 7, 8,10,12,10,
+        13,15,11,11,10, 9,10,13,13,16,17,14,15,14,13,14,
+        17,
 };
 
-static long _vq_quantmap__8c0_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const static_codebook _huff_book__44cn1_sm_long = {
+        2, 81,
+        (char *)_huff_lengthlist__44cn1_sm_long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p9_1 = {
-	_vq_quantthresh__8c0_s_p9_1,
-	_vq_quantmap__8c0_s_p9_1,
-	15,
-	15
+static const long _vq_quantlist__44cn1_sm_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _8c0_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__8c0_s_p9_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__8c0_s_p9_1,
-	NULL,
-	&_vq_auxt__8c0_s_p9_1,
-	NULL,
-	0
+static const char _vq_lengthlist__44cn1_sm_p1_0[] = {
+         1, 4, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+         0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
+         0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+         0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+         0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
+         0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+         0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+         0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+         0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10,
+         0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantlist__8c0_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const static_codebook _44cn1_sm_p1_0 = {
+        8, 6561,
+        (char *)_vq_lengthlist__44cn1_sm_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44cn1_sm_p1_0,
+        0
 };
 
-static long _vq_lengthlist__8c0_s_p9_2[] = {
-	 1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10,
-	11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10,
-	10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7,
-	 7, 8, 9,10,10,10, 9,10,10, 9,10,10,11,11,11,11,
-	11,11, 9, 9, 9, 9, 8, 9,10,10,11,10,10,11,11,12,
-	10,10,12,12,11,11,10, 9, 9,10, 8, 9,10,10,10, 9,
-	10,10,11,11,10,11,10,10,10,12,12,12, 9,10, 9,10,
-	 9, 9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,
-	12,10,11,10,11, 9,10, 9,10, 9,10,10, 9,10,10,11,
-	10,11,11,11,11,12,11, 9,10,10,10,10,11,11,11,11,
-	11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,
-	10, 9,11,10,11, 9,10,11,10,10,10,11,11,11,11,12,
-	12,10, 9, 9,11,10, 9,12,11,10,12,12,11,11,11,11,
-	10,11,11,12,11,10,12, 9,11,10,11,10,10,11,10,11,
-	 9,10,10,10,11,12,11,11,12,11,10,10,11,11, 9,10,
-	10,12,10,11,10,10,10, 9,10,10,10,10, 9,10,10,11,
-	11,11,11,12,11,10,10,10,10,11,11,10,11,11, 9,11,
-	10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,
-	11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,
-	10,11,10,10,11,11,10,12,10, 9,10,10,11,11,11,10,
-	12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,
-	12,11,11,10,10,10,12,10,10,11, 9,10,11,11,11,10,
-	10,11,10,10, 9,11,11,12,12,11,12,11,11,11,11,11,
-	11, 9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,
-	12,10,10,10,10,10, 9,12,10,10,10,10,12, 9,11,10,
-	10,11,10,12,12,10,12,12,12,10,10,10,10, 9,10,11,
-	10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,
-	10,11, 9,11,10, 9,10, 9,10,
+static const long _vq_quantlist__44cn1_sm_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__8c0_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const char _vq_lengthlist__44cn1_sm_p2_0[] = {
+         1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _vq_quantmap__8c0_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const static_codebook _44cn1_sm_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44cn1_sm_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44cn1_sm_p2_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8c0_s_p9_2 = {
-	_vq_quantthresh__8c0_s_p9_2,
-	_vq_quantmap__8c0_s_p9_2,
-	21,
-	21
+static const long _vq_quantlist__44cn1_sm_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _8c0_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__8c0_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__8c0_s_p9_2,
-	NULL,
-	&_vq_auxt__8c0_s_p9_2,
-	NULL,
-	0
+static const char _vq_lengthlist__44cn1_sm_p3_0[] = {
+         1, 3, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0,
+         0, 0, 0, 4, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
+         0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+         9, 9, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0, 0,
+         0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0,
 };
 
-static long _huff_lengthlist__8c0_s_single[] = {
-	 4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5,
-	 6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4,
-	17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9,
-	11,15, 6, 4,17, 6, 6, 4, 5, 8,11,16, 6, 6,17, 8,
-	 6, 5, 6, 9,13,16, 8, 9,17,11, 9, 8, 8,11,13,17,
-	 9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,
-	17,16,17,17,
+static const static_codebook _44cn1_sm_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44cn1_sm_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p3_0,
+        0
 };
 
-static static_codebook _huff_book__8c0_s_single = {
-	2, 100,
-	_huff_lengthlist__8c0_s_single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44cn1_sm_p4_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__8c1_s_p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44cn1_sm_p4_0[] = {
+         1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
+         9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+         8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+         9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+         0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+        11,
 };
 
-static long _vq_lengthlist__8c1_s_p1_0[] = {
-	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
-	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
-	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
-	 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
-	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
-	 0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
-	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
-	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
-	 0, 0, 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44cn1_sm_p4_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44cn1_sm_p4_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p4_0,
+        0
 };
 
-static float _vq_quantthresh__8c1_s_p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44cn1_sm_p5_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantmap__8c1_s_p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44cn1_sm_p5_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
+        11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+        12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+        11,12,12, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,11,
+        11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+        11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+        10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+        10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+        10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+        10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
+         9,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0, 0,
+        10,10,11,11,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
+         0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0, 0, 0,
+         0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
+         0, 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0,
+         0, 0, 0, 0, 0, 0,12,12,12,13,13,13,14,14,14,14,
+         0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,14,14,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c1_s_p1_0 = {
-	_vq_quantthresh__8c1_s_p1_0,
-	_vq_quantmap__8c1_s_p1_0,
-	3,
-	3
+static const static_codebook _44cn1_sm_p5_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44cn1_sm_p5_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44cn1_sm_p5_0,
+        0
 };
 
-static static_codebook _8c1_s_p1_0 = {
-	8, 6561,
-	_vq_lengthlist__8c1_s_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8c1_s_p1_0,
-	NULL,
-	&_vq_auxt__8c1_s_p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44cn1_sm_p6_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__8c1_s_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44cn1_sm_p6_0[] = {
+         1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 6,10, 9, 9,11,
+         9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+        11,11,11,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+        11,10,11,11,10,10, 7,11,11,11,11,11,12,11,11, 7,
+         9, 9,11,10,10,12,10,10, 7, 9, 9,11,10,10,11,10,
+        10,
 };
 
-static long _vq_lengthlist__8c1_s_p2_0[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44cn1_sm_p6_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44cn1_sm_p6_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44cn1_sm_p6_0,
+        0
 };
 
-static float _vq_quantthresh__8c1_s_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44cn1_sm_p6_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantmap__8c1_s_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44cn1_sm_p6_1[] = {
+         2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+         7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+         8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+         8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
+         8, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 8, 9,10,10,
+        10,10,10, 8, 9, 8, 8, 9, 8,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c1_s_p2_0 = {
-	_vq_quantthresh__8c1_s_p2_0,
-	_vq_quantmap__8c1_s_p2_0,
-	5,
-	5
+static const static_codebook _44cn1_sm_p6_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44cn1_sm_p6_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p6_1,
+        0
 };
 
-static static_codebook _8c1_s_p2_0 = {
-	4, 625,
-	_vq_lengthlist__8c1_s_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c1_s_p2_0,
-	NULL,
-	&_vq_auxt__8c1_s_p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44cn1_sm_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__8c1_s_p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44cn1_sm_p7_0[] = {
+         1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5,
+         7, 7, 8, 8, 8, 8,10, 9,11,10, 7, 5, 5, 7, 7, 8,
+         8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+        11, 0,12,12, 9, 9, 9,10,10,10,11,11,12,12, 0,13,
+        13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10,
+        10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+        11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,13,
+        13,13, 0, 0, 0,14,14,11,10,11,11,12,12,13,13, 0,
+         0, 0, 0, 0,12,12,12,12,13,13,13,14, 0, 0, 0, 0,
+         0,13,12,12,12,13,13,13,14,
 };
 
-static long _vq_lengthlist__8c1_s_p3_0[] = {
-	 2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
+static const static_codebook _44cn1_sm_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44cn1_sm_p7_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p7_0,
+        0
 };
 
-static float _vq_quantthresh__8c1_s_p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44cn1_sm_p7_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__8c1_s_p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44cn1_sm_p7_1[] = {
+         2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+         5, 5, 5, 5, 6, 6, 6, 5, 5,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c1_s_p3_0 = {
-	_vq_quantthresh__8c1_s_p3_0,
-	_vq_quantmap__8c1_s_p3_0,
-	5,
-	5
+static const static_codebook _44cn1_sm_p7_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44cn1_sm_p7_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44cn1_sm_p7_1,
+        0
 };
 
-static static_codebook _8c1_s_p3_0 = {
-	4, 625,
-	_vq_lengthlist__8c1_s_p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c1_s_p3_0,
-	NULL,
-	&_vq_auxt__8c1_s_p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__44cn1_sm_p8_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__8c1_s_p4_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44cn1_sm_p8_0[] = {
+         1, 4, 4,12,11,13,13,14,14, 4, 7, 7,11,13,14,14,
+        14,14, 3, 8, 3,14,14,14,14,14,14,14,10,12,14,14,
+        14,14,14,14,14,14, 5,14, 8,14,14,14,14,14,12,14,
+        13,14,14,14,14,14,14,14,13,14,10,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,
 };
 
-static long _vq_lengthlist__8c1_s_p4_0[] = {
-	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
-	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
-	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
-	 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
-	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0,
-};
-
-static float _vq_quantthresh__8c1_s_p4_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__8c1_s_p4_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p4_0 = {
-	_vq_quantthresh__8c1_s_p4_0,
-	_vq_quantmap__8c1_s_p4_0,
-	9,
-	9
-};
-
-static static_codebook _8c1_s_p4_0 = {
-	2, 81,
-	_vq_lengthlist__8c1_s_p4_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8c1_s_p4_0,
-	NULL,
-	&_vq_auxt__8c1_s_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__8c1_s_p5_0[] = {
-	 1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7,
-	 9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10,
-	 8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0,
-	11,10, 8, 8,10,10, 0, 0, 0,11,11, 8, 8,10,10, 0,
-	 0, 0,12,12, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
-	10,
-};
-
-static float _vq_quantthresh__8c1_s_p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__8c1_s_p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p5_0 = {
-	_vq_quantthresh__8c1_s_p5_0,
-	_vq_quantmap__8c1_s_p5_0,
-	9,
-	9
-};
-
-static static_codebook _8c1_s_p5_0 = {
-	2, 81,
-	_vq_lengthlist__8c1_s_p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8c1_s_p5_0,
-	NULL,
-	&_vq_auxt__8c1_s_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p6_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__8c1_s_p6_0[] = {
-	 1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11,
-	11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,11,
-	12,12,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,
-	11,12,12,12,12, 0, 0, 0,10,10, 9, 9,10,10,10,10,
-	11,11,12,12,13,13, 0, 0, 0,10,10, 9, 9,10,10,10,
-	10,11,11,12,12,13,13, 0, 0, 0,11,11, 9, 9,10,10,
-	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
-	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
-	10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
-	 9,10,10,11,11,12,11,12,12,13,13, 0, 0, 0, 0, 0,
-	10,10,11,11,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
-	 0, 0, 0,11,10,11,11,12,12,13,13,13,13, 0, 0, 0,
-	 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
-	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,13, 0,
-	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
-	14,
-};
-
-static float _vq_quantthresh__8c1_s_p6_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__8c1_s_p6_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p6_0 = {
-	_vq_quantthresh__8c1_s_p6_0,
-	_vq_quantmap__8c1_s_p6_0,
-	17,
-	17
-};
-
-static static_codebook _8c1_s_p6_0 = {
-	2, 289,
-	_vq_lengthlist__8c1_s_p6_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__8c1_s_p6_0,
-	NULL,
-	&_vq_auxt__8c1_s_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__8c1_s_p7_0[] = {
-	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
-	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
-	10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9,
-	10, 9, 9,11, 9,10, 7,10,10,11,11,11,11,10,10, 6,
-	 9, 9,10,10,10,11, 9, 9, 6, 9, 9,10,10,10,10, 9,
-	 9,
-};
-
-static float _vq_quantthresh__8c1_s_p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__8c1_s_p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p7_0 = {
-	_vq_quantthresh__8c1_s_p7_0,
-	_vq_quantmap__8c1_s_p7_0,
-	3,
-	3
-};
-
-static static_codebook _8c1_s_p7_0 = {
-	4, 81,
-	_vq_lengthlist__8c1_s_p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__8c1_s_p7_0,
-	NULL,
-	&_vq_auxt__8c1_s_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__8c1_s_p7_1[] = {
-	 2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
-	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
-	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
-	 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
-	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
-	 8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8,10,10,
-	10,10,10, 8, 8, 8, 8, 8, 8,
+static const static_codebook _44cn1_sm_p8_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44cn1_sm_p8_0,
+        1, -516186112, 1627103232, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p8_0,
+        0
 };
 
-static float _vq_quantthresh__8c1_s_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const long _vq_quantlist__44cn1_sm_p8_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__8c1_s_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__44cn1_sm_p8_1[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,11,11, 6, 5, 5,
+         7, 7, 8, 8,10,10,10,11,11,11, 6, 5, 5, 7, 7, 8,
+         8,10,10,11,12,12,12,14, 7, 7, 7, 8, 9, 9,11,11,
+        11,12,11,12,17, 7, 7, 8, 7, 9, 9,11,11,12,12,12,
+        12,14,11,11, 8, 8,10,10,11,12,12,13,11,12,14,11,
+        11, 8, 8,10,10,11,12,12,13,13,12,14,15,14,10,10,
+        10,10,11,12,12,12,12,11,14,13,16,10,10,10, 9,12,
+        11,12,12,13,14,14,15,14,14,13,10,10,11,11,12,11,
+        13,11,14,12,15,13,14,11,10,12,10,12,12,13,13,13,
+        13,14,15,15,12,12,11,11,12,11,13,12,14,14,14,14,
+        17,12,12,11,10,13,11,13,13,
 };
 
-static encode_aux_threshmatch _vq_auxt__8c1_s_p7_1 = {
-	_vq_quantthresh__8c1_s_p7_1,
-	_vq_quantmap__8c1_s_p7_1,
-	11,
-	11
+static const static_codebook _44cn1_sm_p8_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44cn1_sm_p8_1,
+        1, -522616832, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44cn1_sm_p8_1,
+        0
 };
 
-static static_codebook _8c1_s_p7_1 = {
-	2, 121,
-	_vq_lengthlist__8c1_s_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__8c1_s_p7_1,
-	NULL,
-	&_vq_auxt__8c1_s_p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__44cn1_sm_p8_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__8c1_s_p8_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__44cn1_sm_p8_2[] = {
+         3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9,11,10,11, 8, 8, 8, 8, 8, 8,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11, 8, 8, 8,
+         8, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10,11,11, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,10,11,11,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,
+        11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,
+        11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,11,10,
+        11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+        11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+        10,11,11,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
+         9,
 };
 
-static long _vq_lengthlist__8c1_s_p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5,
-	 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
-	 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
-	11, 0,12,12, 9, 9, 9, 9,10, 9,10,11,11,11, 0,13,
-	12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
-	 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
-	10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,11,
-	13,12, 0, 0, 0,14,14,10,10,11,10,11,11,12,12, 0,
-	 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
-	 0,12,12,11,10,12,11,13,12,
+static const static_codebook _44cn1_sm_p8_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44cn1_sm_p8_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44cn1_sm_p8_2,
+        0
 };
 
-static float _vq_quantthresh__8c1_s_p8_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const char _huff_lengthlist__44cn1_sm_short[] = {
+         5, 6,12,14,12,14,16,17,18, 4, 2, 5,11, 7,10,12,
+        14,15, 9, 4, 5,11, 7,10,13,15,18,15, 6, 7, 5, 6,
+         8,11,13,16,11, 5, 6, 5, 5, 6, 9,13,15,12, 5, 7,
+         6, 5, 6, 9,12,14,12, 6, 7, 8, 6, 7, 9,12,13,14,
+         8, 8, 7, 5, 5, 8,10,12,16, 9, 9, 8, 6, 6, 7, 9,
+         9,
 };
 
-static long _vq_quantmap__8c1_s_p8_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p8_0 = {
-	_vq_quantthresh__8c1_s_p8_0,
-	_vq_quantmap__8c1_s_p8_0,
-	13,
-	13
-};
-
-static static_codebook _8c1_s_p8_0 = {
-	2, 169,
-	_vq_lengthlist__8c1_s_p8_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__8c1_s_p8_0,
-	NULL,
-	&_vq_auxt__8c1_s_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p8_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__8c1_s_p8_1[] = {
-	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
-	 6, 6, 5, 5, 6, 6, 6, 5, 5,
-};
-
-static float _vq_quantthresh__8c1_s_p8_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__8c1_s_p8_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p8_1 = {
-	_vq_quantthresh__8c1_s_p8_1,
-	_vq_quantmap__8c1_s_p8_1,
-	5,
-	5
-};
-
-static static_codebook _8c1_s_p8_1 = {
-	2, 25,
-	_vq_lengthlist__8c1_s_p8_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8c1_s_p8_1,
-	NULL,
-	&_vq_auxt__8c1_s_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__8c1_s_p9_0[] = {
-	 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6,
-	10,10,10,10,10,10,10,10,10,10, 6, 7, 8,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10, 9, 9, 9, 9,
-};
-
-static float _vq_quantthresh__8c1_s_p9_0[] = {
-	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
-	787.5, 1102.5, 1417.5, 1732.5, 
-};
-
-static long _vq_quantmap__8c1_s_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p9_0 = {
-	_vq_quantthresh__8c1_s_p9_0,
-	_vq_quantmap__8c1_s_p9_0,
-	13,
-	13
-};
-
-static static_codebook _8c1_s_p9_0 = {
-	2, 169,
-	_vq_lengthlist__8c1_s_p9_0,
-	1, -513964032, 1628680192, 4, 0,
-	_vq_quantlist__8c1_s_p9_0,
-	NULL,
-	&_vq_auxt__8c1_s_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__8c1_s_p9_1[] = {
-	 1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6,
-	 5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5,
-	 5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7,
-	 8, 8,10,10,11,11,12,13,13,13,13,13,17, 7, 7, 8,
-	 8,10,10,11,11,13,13,13,13,14,14,17,11,11, 9, 9,
-	11,11,12,12,12,13,13,14,15,13,17,12,12, 9, 9,11,
-	11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,
-	13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,
-	13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,
-	15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,
-	15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,
-	14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,
-	15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,
-	17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,
-	15,
-};
-
-static float _vq_quantthresh__8c1_s_p9_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__8c1_s_p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p9_1 = {
-	_vq_quantthresh__8c1_s_p9_1,
-	_vq_quantmap__8c1_s_p9_1,
-	15,
-	15
-};
-
-static static_codebook _8c1_s_p9_1 = {
-	2, 225,
-	_vq_lengthlist__8c1_s_p9_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__8c1_s_p9_1,
-	NULL,
-	&_vq_auxt__8c1_s_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8c1_s_p9_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__8c1_s_p9_2[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9,
-	 9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7,
-	 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,11,
-	11,12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,
-	10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9,10,10,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
-	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
-	10,10,10,11,12,11, 9, 9, 8, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
-	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,12,11,
-	12,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
-	10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
-	10,10,10,10,10,10,10,12,11,12,11,11, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,
-	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,
-	10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,
-	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,
-	10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,
-	11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
-	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
-	12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,
-	10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,
-	10,10,10,10,10,10,10,10,10,
-};
-
-static float _vq_quantthresh__8c1_s_p9_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__8c1_s_p9_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__8c1_s_p9_2 = {
-	_vq_quantthresh__8c1_s_p9_2,
-	_vq_quantmap__8c1_s_p9_2,
-	21,
-	21
-};
-
-static static_codebook _8c1_s_p9_2 = {
-	2, 441,
-	_vq_lengthlist__8c1_s_p9_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__8c1_s_p9_2,
-	NULL,
-	&_vq_auxt__8c1_s_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__8c1_s_single[] = {
-	 4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5,
-	 6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5,
-	17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10,
-	10,13, 7, 5,17, 6, 8, 4, 5, 6, 8,10, 6, 5,17, 6,
-	 8, 5, 4, 5, 7, 9, 7, 7,17, 8, 9, 6, 5, 5, 6, 8,
-	 8, 8,17, 9,11, 8, 6, 6, 6, 7, 9,10,17,12,12,10,
-	 9, 7, 7, 8,
-};
-
-static static_codebook _huff_book__8c1_s_single = {
-	2, 100,
-	_huff_lengthlist__8c1_s_single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book__44cn1_sm_short = {
+        2, 81,
+        (char *)_huff_lengthlist__44cn1_sm_short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
--- a/sys/src/cmd/audio/libvorbis/books/floor/floor_books.h
+++ b/sys/src/cmd/audio/libvorbis/books/floor/floor_books.h
@@ -5,1451 +5,1543 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
  * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: static codebooks autogenerated by huff/huffbuld
- last modified: $Id: floor_books.h,v 1.3 2002/07/11 06:41:01 xiphmont Exp $
+ last modified: $Id: floor_books.h 19057 2014-01-22 12:32:31Z xiphmont $
 
  ********************************************************************/
 
 #include "codebook.h"
-static long _huff_lengthlist_line_1024x27_0sub0[] = {
-	 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
-	 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 6,
-	 8, 6, 9, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6,11, 6,
-	11, 6,12, 6,12, 7,12, 7,12, 7,12, 7,12, 7,12, 7,
-	12, 7,12, 7,12, 7,12, 7,12, 8,12, 8,11, 8,11, 8,
-	12, 9,11, 9, 9,10,11, 9,12, 9,12,12,14,13,13,14,
-	13,13,13,12,14,16,20,20,21,14,14,15,21,21,21,20,
-	21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,
+
+static const char _huff_lengthlist_line_256x7_0sub1[] = {
+         0, 2, 3, 3, 3, 3, 4, 3, 4,
 };
 
-static static_codebook _huff_book_line_1024x27_0sub0 = {
-	1, 128,
-	_huff_lengthlist_line_1024x27_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_0sub1 = {
+        1, 9,
+        (char *)_huff_lengthlist_line_256x7_0sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_1sub0[] = {
-	 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 4, 6, 5, 6, 5,
-	 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6,10, 6,10, 6,
+static const char _huff_lengthlist_line_256x7_0sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3,
+         6, 3, 6, 4, 6, 4, 7, 5, 7,
 };
 
-static static_codebook _huff_book_line_1024x27_1sub0 = {
-	1, 32,
-	_huff_lengthlist_line_1024x27_1sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_0sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_256x7_0sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_1sub1[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 9, 5,10, 4,10, 4, 9, 4, 9, 3, 9, 4, 9, 4, 9, 4,
-	 9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 8, 5, 9, 5, 9, 6,
-	 8, 6, 9, 7,10, 8,10, 9,10,10,10,12,11,13,12,13,
-	13,15,13,14,13,14,12,15,13,15,14,15,13,16,14,16,
-	14,15,14,14,14,16,15,18,15,18,16,18,18,18,18,18,
-	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17,
+static const char _huff_lengthlist_line_256x7_0sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3,
+         6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9,
+        11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,
 };
 
-static static_codebook _huff_book_line_1024x27_1sub1 = {
-	1, 128,
-	_huff_lengthlist_line_1024x27_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_0sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_256x7_0sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_2sub0[] = {
-	 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
-	 6, 6, 7, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9,10,10,
+static const char _huff_lengthlist_line_256x7_1sub1[] = {
+         0, 3, 3, 3, 3, 2, 4, 3, 4,
 };
 
-static static_codebook _huff_book_line_1024x27_2sub0 = {
-	1, 32,
-	_huff_lengthlist_line_1024x27_2sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_1sub1 = {
+        1, 9,
+        (char *)_huff_lengthlist_line_256x7_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_2sub1[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 3, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 5, 6, 5, 6, 6,
-	 7, 6, 7, 7, 7, 7, 7, 7, 8, 9, 8, 9, 8,10, 8,11,
-	 8,12, 9,13, 9,14, 9,14, 8,12, 8,14, 9,14, 8,12,
-	 8,11, 8,11, 8,11, 9,11,10,11,10,12,10,12,11,12,
-	12,12,12,12,11,12,11,13,11,13,12,14,14,14,14,14,
-	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+static const char _huff_lengthlist_line_256x7_1sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4,
+         5, 4, 6, 5, 6, 7, 6, 8, 8,
 };
 
-static static_codebook _huff_book_line_1024x27_2sub1 = {
-	1, 128,
-	_huff_lengthlist_line_1024x27_2sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_1sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_256x7_1sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_3sub1[] = {
-	 0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 5, 4,
-	 5, 5,
+static const char _huff_lengthlist_line_256x7_1sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7,
+         3, 8, 5, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
 };
 
-static static_codebook _huff_book_line_1024x27_3sub1 = {
-	1, 18,
-	_huff_lengthlist_line_1024x27_3sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_1sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_256x7_1sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_3sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 3, 3, 3, 3, 4, 4, 4, 5, 4, 6, 5, 6, 5, 7,
-	 5, 9, 5,10, 6,11, 6,12, 7,13, 8,15, 8,15, 9,15,
-	 9,15,
+static const char _huff_lengthlist_line_256x7_class0[] = {
+         7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15,
+         6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15,
+         8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15,
+        14,15,13,13,13,13, 8,11,15,10, 7, 6,11, 9,10,15,
 };
 
-static static_codebook _huff_book_line_1024x27_3sub2 = {
-	1, 50,
-	_huff_lengthlist_line_1024x27_3sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_class0 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_256x7_class0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_3sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 2, 9, 2, 9, 2, 9, 4, 9, 6, 9, 7, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+static const char _huff_lengthlist_line_256x7_class1[] = {
+         5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15,
+         4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15,
+         6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15,
+        15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,
+         4, 6, 7,15, 6, 8, 9,15,10,10,12,15,15,15,15,15,
+         2, 5, 6,15, 5, 6, 7,15, 8, 6, 7,15,15,15,15,15,
+         5, 6, 8,15, 5, 6, 7,15, 9, 6, 7,15,15,15,15,15,
+        14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,
+         7, 8, 9,15, 9,10,10,15,15,14,14,15,15,15,15,15,
+         5, 6, 7,15, 7, 8, 9,15,12, 9,10,15,15,15,15,15,
+         7, 7, 9,15, 7, 7, 8,15,12, 8, 9,15,15,15,15,15,
+        13,13,14,15,12,11,12,15,15,15,15,15,15,15,15,15,
+        15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+        13,13,13,15,15,15,15,15,15,15,15,15,15,15,15,15,
+        15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,
+        15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,
 };
 
-static static_codebook _huff_book_line_1024x27_3sub3 = {
-	1, 128,
-	_huff_lengthlist_line_1024x27_3sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x7_class1 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_256x7_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_4sub1[] = {
-	 0, 4, 5, 4, 5, 4, 6, 3, 6, 3, 5, 3, 5, 3, 6, 4,
-	 6, 4,
+static const char _huff_lengthlist_line_512x17_0sub0[] = {
+         4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+         5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6,
+         7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7,
+         9, 7, 9, 8, 9, 8,10, 8,10, 8,10, 7,10, 6,10, 8,
+        10, 8,11, 7,10, 7,11, 8,11,11,12,12,11,11,12,11,
+        13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,
+        15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,
+        18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
 };
 
-static static_codebook _huff_book_line_1024x27_4sub1 = {
-	1, 18,
-	_huff_lengthlist_line_1024x27_4sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_0sub0 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_512x17_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_4sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 6, 7, 7,
-	 7, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9,10,10,11,
-	10,11,
+static const char _huff_lengthlist_line_512x17_1sub0[] = {
+         2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+         6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7,
 };
 
-static static_codebook _huff_book_line_1024x27_4sub2 = {
-	1, 50,
-	_huff_lengthlist_line_1024x27_4sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_1sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_512x17_1sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_4sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 3, 3, 3, 6, 4, 6, 4, 5, 5, 7, 4, 8, 5, 9,
-	 4, 9, 5, 9, 5, 9, 6, 9, 5, 9, 7, 9, 7, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const char _huff_lengthlist_line_512x17_1sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         4, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
+         6, 5, 7, 5, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
+         9, 7,11, 9,11,11,12,11,14,12,14,16,14,16,13,16,
+        14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,
+        13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,
+        15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
 };
 
-static static_codebook _huff_book_line_1024x27_4sub3 = {
-	1, 128,
-	_huff_lengthlist_line_1024x27_4sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_1sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_512x17_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_class1[] = {
-	 2, 9, 8,14, 7,13,11,14, 1, 5, 3, 7, 4,10, 7,12,
+static const char _huff_lengthlist_line_512x17_2sub1[] = {
+         0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3,
+         5, 3,
 };
 
-static static_codebook _huff_book_line_1024x27_class1 = {
-	1, 16,
-	_huff_lengthlist_line_1024x27_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_2sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_512x17_2sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_class2[] = {
-	 1, 3, 2, 5, 4, 7, 6, 7,
+static const char _huff_lengthlist_line_512x17_2sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5,
+         6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7,
+         9, 8,
 };
 
-static static_codebook _huff_book_line_1024x27_class2 = {
-	1, 8,
-	_huff_lengthlist_line_1024x27_class2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_2sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_512x17_2sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_class3[] = {
-	 1, 5, 6,19, 5, 8,10,19, 9,10,15,19,19,19,19,19,
-	 4, 7, 9,19, 6, 7,10,19,11,11,15,19,19,19,19,19,
-	 8,11,13,19, 8,11,14,19,13,13,17,19,19,19,19,19,
-	19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-	 3, 7, 9,19, 6, 8,11,19,11,11,15,19,19,19,19,19,
-	 5, 7,11,19, 6, 7,11,19,11,10,14,19,19,19,19,19,
-	 8,11,15,19, 8,10,14,19,13,13,16,19,19,19,19,19,
-	19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-	 6, 9,11,19, 8,10,12,19,15,14,17,19,19,19,19,19,
-	 5, 8,11,19, 7, 9,12,19,14,11,16,19,19,19,19,19,
-	 9,10,18,19, 9,10,15,19,14,16,19,19,19,19,19,19,
-	19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-	16,17,19,19,16,17,17,19,19,19,19,19,19,19,19,19,
-	12,14,16,19,12,12,16,19,19,19,19,19,19,19,19,19,
-	18,18,19,19,17,16,19,19,19,19,19,19,19,19,19,19,
-	19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,
+static const char _huff_lengthlist_line_512x17_2sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 3, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 7, 7,
+         7, 8, 8,11, 8, 9, 9, 9,10,11,11,11, 9,10,10,11,
+        11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 };
 
-static static_codebook _huff_book_line_1024x27_class3 = {
-	1, 256,
-	_huff_lengthlist_line_1024x27_class3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_512x17_2sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_512x17_2sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_1024x27_class4[] = {
-	 1, 4, 8,12, 4, 6, 8,21, 9, 8,10,21,20,16,18,20,
-	 2, 6, 8,20, 7, 6, 9,19,11, 9,10,20,17,15,16,20,
-	 5, 8,11,19, 8, 8,10,15,12,10,12,15,20,20,15,20,
-	17,20,20,20,15,20,20,19,20,20,16,19,20,20,20,20,
+static const char _huff_lengthlist_line_512x17_3sub1[] = {
+         0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5,
+         5, 5,
+};
+
+static const static_codebook _huff_book_line_512x17_3sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_512x17_3sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_512x17_3sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7,
+         6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15,
+        11,14,
+};
+
+static const static_codebook _huff_book_line_512x17_3sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_512x17_3sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_512x17_3sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 8, 4, 8, 4, 8, 4, 8, 5, 8, 5, 8, 6, 8,
+         4, 8, 4, 8, 5, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+};
+
+static const static_codebook _huff_book_line_512x17_3sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_512x17_3sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_512x17_class1[] = {
+         1, 2, 3, 6, 5, 4, 7, 7,
+};
+
+static const static_codebook _huff_book_line_512x17_class1 = {
+        1, 8,
+        (char *)_huff_lengthlist_line_512x17_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_512x17_class2[] = {
+         3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17,
+         6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14,
+        10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14,
+        17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,
+};
+
+static const static_codebook _huff_book_line_512x17_class2 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_512x17_class2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_512x17_class3[] = {
+         2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17,
+         3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17,
+         6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17,
+        17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,
+};
+
+static const static_codebook _huff_book_line_512x17_class3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_512x17_class3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_128x4_class0[] = {
+         7, 7, 7,11, 6, 6, 7,11, 7, 6, 6,10,12,10,10,13,
+         7, 7, 8,11, 7, 7, 7,11, 7, 6, 7,10,11,10,10,13,
+        10,10, 9,12, 9, 9, 9,11, 8, 8, 8,11,13,11,10,14,
+        15,15,14,15,15,14,13,14,15,12,12,17,17,17,17,17,
+         7, 7, 6, 9, 6, 6, 6, 9, 7, 6, 6, 8,11,11,10,12,
+         7, 7, 7, 9, 7, 6, 6, 9, 7, 6, 6, 9,13,10,10,11,
+        10, 9, 8,10, 9, 8, 8,10, 8, 8, 7, 9,13,12,10,11,
+        17,14,14,13,15,14,12,13,17,13,12,15,17,17,14,17,
+         7, 6, 6, 7, 6, 6, 5, 7, 6, 6, 6, 6,11, 9, 9, 9,
+         7, 7, 6, 7, 7, 6, 6, 7, 6, 6, 6, 6,10, 9, 8, 9,
+        10, 9, 8, 8, 9, 8, 7, 8, 8, 7, 6, 8,11,10, 9,10,
+        17,17,12,15,15,15,12,14,14,14,10,12,15,13,12,13,
+        11,10, 8,10,11,10, 8, 8,10, 9, 7, 7,10, 9, 9,11,
+        11,11, 9,10,11,10, 8, 9,10, 8, 6, 8,10, 9, 9,11,
+        14,13,10,12,12,11,10,10, 8, 7, 8,10,10,11,11,12,
+        17,17,15,17,17,17,17,17,17,13,12,17,17,17,14,17,
+};
+
+static const static_codebook _huff_book_line_128x4_class0 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_128x4_class0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_128x4_0sub0[] = {
+         2, 2, 2, 2,
+};
+
+static const static_codebook _huff_book_line_128x4_0sub0 = {
+        1, 4,
+        (char *)_huff_lengthlist_line_128x4_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_128x4_0sub1[] = {
+         0, 0, 0, 0, 3, 2, 3, 2, 3, 3,
+};
+
+static const static_codebook _huff_book_line_128x4_0sub1 = {
+        1, 10,
+        (char *)_huff_lengthlist_line_128x4_0sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_128x4_0sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 3,
+         4, 4, 5, 4, 5, 4, 6, 5, 6,
 };
 
-static static_codebook _huff_book_line_1024x27_class4 = {
-	1, 64,
-	_huff_lengthlist_line_1024x27_class4,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x4_0sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_128x4_0sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_0sub0[] = {
-	 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
-	 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6,
-	 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6,
-	 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7, 9, 8,10, 8,
-	10, 8,10, 8,10, 8,10, 9,11, 9,11, 9,10, 9,10,10,
-	11,10,11,11,11,11,12,12,13,14,13,14,16,16,16,16,
-	16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,
-	16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,15,
+static const char _huff_lengthlist_line_128x4_0sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
+         5, 4, 6, 5, 6, 5, 7, 6, 6, 7, 7, 9, 9,11,11,16,
+        11,14,10,11,11,13,16,15,15,15,15,15,15,15,15,15,
 };
 
-static static_codebook _huff_book_line_128x11_0sub0 = {
-	1, 128,
-	_huff_lengthlist_line_128x11_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x4_0sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x4_0sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_1sub0[] = {
-	 2, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-	 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6,
+static const char _huff_lengthlist_line_256x4_class0[] = {
+         6, 7, 7,12, 6, 6, 7,12, 7, 6, 6,10,15,12,11,13,
+         7, 7, 8,13, 7, 7, 8,12, 7, 7, 7,11,12,12,11,13,
+        10, 9, 9,11, 9, 9, 9,10,10, 8, 8,12,14,12,12,14,
+        11,11,12,14,11,12,11,15,15,12,13,15,15,15,15,15,
+         6, 6, 7,10, 6, 6, 6,11, 7, 6, 6, 9,14,12,11,13,
+         7, 7, 7,10, 6, 6, 7, 9, 7, 7, 6,10,13,12,10,12,
+         9, 9, 9,11, 9, 9, 8, 9, 9, 8, 8,10,13,12,10,12,
+        12,12,11,13,12,12,11,12,15,13,12,15,15,15,14,14,
+         6, 6, 6, 8, 6, 6, 5, 6, 7, 7, 6, 5,11,10, 9, 8,
+         7, 6, 6, 7, 6, 6, 5, 6, 7, 7, 6, 6,11,10, 9, 8,
+         8, 8, 8, 9, 8, 8, 7, 8, 8, 8, 6, 7,11,10, 9, 9,
+        14,11,10,14,14,11,10,15,13,11, 9,11,15,12,12,11,
+        11, 9, 8, 8,10, 9, 8, 9,11,10, 9, 8,12,11,12,11,
+        13,10, 8, 9,11,10, 8, 9,10, 9, 8, 9,10, 8,12,12,
+        15,11,10,10,13,11,10,10, 8, 8, 7,12,10, 9,11,12,
+        15,12,11,15,13,11,11,15,12,14,11,13,15,15,13,13,
 };
 
-static static_codebook _huff_book_line_128x11_1sub0 = {
-	1, 32,
-	_huff_lengthlist_line_128x11_1sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x4_class0 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_256x4_class0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_1sub1[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 6, 3, 6, 3, 7, 3, 7, 4, 8, 4, 8, 4, 8, 4, 9, 4,
-	10, 5, 9, 5,10, 5,10, 5,10, 5,12, 6,12, 6,10, 6,
-	10, 7,10, 8,10, 8,10, 9,11, 9,12,11,10,11,11,13,
-	12,12,12,13,10,13,10,13,10,13,10,13,11,13,10,13,
-	10,13,10,13,10,13,10,13,11,12,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+static const char _huff_lengthlist_line_256x4_0sub0[] = {
+         2, 2, 2, 2,
 };
 
-static static_codebook _huff_book_line_128x11_1sub1 = {
-	1, 128,
-	_huff_lengthlist_line_128x11_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x4_0sub0 = {
+        1, 4,
+        (char *)_huff_lengthlist_line_256x4_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_2sub1[] = {
-	 0, 4, 5, 4, 5, 4, 5, 3, 4, 3, 4, 4, 4, 4, 4, 5,
-	 5, 5,
+static const char _huff_lengthlist_line_256x4_0sub1[] = {
+         0, 0, 0, 0, 2, 2, 3, 3, 3, 3,
 };
 
-static static_codebook _huff_book_line_128x11_2sub1 = {
-	1, 18,
-	_huff_lengthlist_line_128x11_2sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x4_0sub1 = {
+        1, 10,
+        (char *)_huff_lengthlist_line_256x4_0sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_2sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 2, 3, 3, 4, 3, 5, 4, 5, 5, 6, 5, 6, 6, 6,
-	 6, 8, 6,10, 7,10, 8,10, 8,10,10,10,10,10,10,10,
-	10,10,
+static const char _huff_lengthlist_line_256x4_0sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 3,
+         5, 3, 5, 4, 5, 4, 6, 4, 6,
 };
 
-static static_codebook _huff_book_line_128x11_2sub2 = {
-	1, 50,
-	_huff_lengthlist_line_128x11_2sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x4_0sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_256x4_0sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_2sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+static const char _huff_lengthlist_line_256x4_0sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
+         6, 4, 7, 4, 7, 5, 7, 6, 7, 6, 7, 8,10,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,
 };
 
-static static_codebook _huff_book_line_128x11_2sub3 = {
-	1, 128,
-	_huff_lengthlist_line_128x11_2sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_256x4_0sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_256x4_0sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_3sub1[] = {
-	 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4,
-	 5, 4,
+static const char _huff_lengthlist_line_128x7_class0[] = {
+        10, 7, 8,13, 9, 6, 7,11,10, 8, 8,12,17,17,17,17,
+         7, 5, 5, 9, 6, 4, 4, 8, 8, 5, 5, 8,16,14,13,16,
+         7, 5, 5, 7, 6, 3, 3, 5, 8, 5, 4, 7,14,12,12,15,
+        10, 7, 8, 9, 7, 5, 5, 6, 9, 6, 5, 5,15,12, 9,10,
 };
 
-static static_codebook _huff_book_line_128x11_3sub1 = {
-	1, 18,
-	_huff_lengthlist_line_128x11_3sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_class0 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x7_class0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_3sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 3, 5, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
-	 8, 4, 9, 4, 9, 4, 9, 5,10, 5,11, 5,12, 6,13, 6,
-	13, 7,
+static const char _huff_lengthlist_line_128x7_class1[] = {
+         8,13,17,17, 8,11,17,17,11,13,17,17,17,17,17,17,
+         6,10,16,17, 6,10,15,17, 8,10,16,17,17,17,17,17,
+         9,13,15,17, 8,11,17,17,10,12,17,17,17,17,17,17,
+        17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
+         6,11,15,17, 7,10,15,17, 8,10,17,17,17,15,17,17,
+         4, 8,13,17, 4, 7,13,17, 6, 8,15,17,16,15,17,17,
+         6,11,15,17, 6, 9,13,17, 8,10,17,17,15,17,17,17,
+        16,17,17,17,12,14,15,17,13,14,15,17,17,17,17,17,
+         5,10,14,17, 5, 9,14,17, 7, 9,15,17,15,15,17,17,
+         3, 7,12,17, 3, 6,11,17, 5, 7,13,17,12,12,17,17,
+         5, 9,14,17, 3, 7,11,17, 5, 8,13,17,13,11,16,17,
+        12,17,17,17, 9,14,15,17,10,11,14,17,16,14,17,17,
+         8,12,17,17, 8,12,17,17,10,12,17,17,17,17,17,17,
+         5,10,17,17, 5, 9,15,17, 7, 9,17,17,13,13,17,17,
+         7,11,17,17, 6,10,15,17, 7, 9,15,17,12,11,17,17,
+        12,15,17,17,11,14,17,17,11,10,15,17,17,16,17,17,
 };
 
-static static_codebook _huff_book_line_128x11_3sub2 = {
-	1, 50,
-	_huff_lengthlist_line_128x11_3sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_class1 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_128x7_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_3sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 7, 2, 6, 2, 7, 3, 8, 4, 7, 6, 9, 7, 9, 7,
-	 9, 9, 9, 8, 9, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+static const char _huff_lengthlist_line_128x7_0sub1[] = {
+         0, 3, 3, 3, 3, 3, 3, 3, 3,
 };
 
-static static_codebook _huff_book_line_128x11_3sub3 = {
-	1, 128,
-	_huff_lengthlist_line_128x11_3sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_0sub1 = {
+        1, 9,
+        (char *)_huff_lengthlist_line_128x7_0sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_class1[] = {
-	 1, 6, 3, 7, 2, 5, 4, 7,
+static const char _huff_lengthlist_line_128x7_0sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4,
+         5, 4, 5, 4, 5, 4, 6, 4, 6,
 };
 
-static static_codebook _huff_book_line_128x11_class1 = {
-	1, 8,
-	_huff_lengthlist_line_128x11_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_0sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_128x7_0sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_class2[] = {
-	 1, 5,11,14, 4,11,13,14,10,14,13,14,14,14,13,13,
-	 2, 6,11,13, 5,11,12,13,11,12,13,13,13,13,13,13,
-	 4, 8,12,13, 5, 9,11,13,12,13,13,13,13,13,13,13,
-	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+static const char _huff_lengthlist_line_128x7_0sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 5, 4,
+         5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         7, 8, 9,11,13,13,13,13,13,13,13,13,13,13,13,13,
 };
 
-static static_codebook _huff_book_line_128x11_class2 = {
-	1, 64,
-	_huff_lengthlist_line_128x11_class2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_0sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x7_0sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x11_class3[] = {
-	 6, 7,11,16, 6, 7,10,16,11, 9,13,15,15,15,15,15,
-	 4, 4, 7,14, 4, 4, 6,14, 8, 6, 8,15,15,15,15,15,
-	 4, 4, 6,15, 3, 2, 4,13, 6, 5, 6,14,15,12,11,14,
-	11,11,13,15, 9, 8,10,15,11,10,11,15,15,15,15,15,
+static const char _huff_lengthlist_line_128x7_1sub1[] = {
+         0, 3, 3, 2, 3, 3, 4, 3, 4,
 };
 
-static static_codebook _huff_book_line_128x11_class3 = {
-	1, 64,
-	_huff_lengthlist_line_128x11_class3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_1sub1 = {
+        1, 9,
+        (char *)_huff_lengthlist_line_128x7_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_0sub0[] = {
-	 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
-	 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 6, 7, 6,
-	 7, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
-	 9, 7, 9, 7, 9, 7, 9, 7, 9, 7,10, 7,10, 8,10, 8,
-	11, 8,11, 8,11, 8,12, 8,12, 8,12, 8,12, 9,12, 9,
-	12, 9,12, 9,13, 9,13,10,13,10,13,11,14,12,14,13,
-	14,14,16,15,17,17,19,18,19,19,19,19,19,19,19,19,
-	19,19,19,19,19,19,19,19,19,19,19,18,18,18,18,18,
+static const char _huff_lengthlist_line_128x7_1sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 6, 3, 6, 3,
+         6, 3, 7, 3, 8, 4, 9, 4, 9,
 };
 
-static static_codebook _huff_book_line_128x17_0sub0 = {
-	1, 128,
-	_huff_lengthlist_line_128x17_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_1sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_128x7_1sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_1sub0[] = {
-	 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
-	 6, 5, 6, 6, 7, 6, 7, 6, 8, 6, 8, 7, 9, 7, 9, 8,
+static const char _huff_lengthlist_line_128x7_1sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 2, 7, 3, 8, 4,
+         9, 5, 9, 8,10,11,11,12,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,
 };
 
-static static_codebook _huff_book_line_128x17_1sub0 = {
-	1, 32,
-	_huff_lengthlist_line_128x17_1sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x7_1sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x7_1sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_1sub1[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 4, 2, 5, 3, 5, 3, 6, 4, 6, 4, 7, 4, 8, 5, 8, 5,
-	 8, 6, 9, 6, 9, 7, 9, 8,10, 8,10, 9,10,10,10,10,
-	10,12,10,14,11,15,12,15,11,15,11,15,11,14,11,15,
-	11,14,11,13,10,12,10,14,10,14,11,13,10,12,11,15,
-	12,15,13,15,12,13,14,15,15,15,15,15,15,15,15,15,
-	15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14,
+static const char _huff_lengthlist_line_128x11_class1[] = {
+         1, 6, 3, 7, 2, 4, 5, 7,
 };
 
-static static_codebook _huff_book_line_128x17_1sub1 = {
-	1, 128,
-	_huff_lengthlist_line_128x17_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_class1 = {
+        1, 8,
+        (char *)_huff_lengthlist_line_128x11_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_2sub1[] = {
-	 0, 4, 5, 4, 7, 3, 8, 3, 9, 3,10, 2,12, 3,12, 4,
-	11, 6,
+static const char _huff_lengthlist_line_128x11_class2[] = {
+         1, 6,12,16, 4,12,15,16, 9,15,16,16,16,16,16,16,
+         2, 5,11,16, 5,11,13,16, 9,13,16,16,16,16,16,16,
+         4, 8,12,16, 5, 9,12,16, 9,13,15,16,16,16,16,16,
+        15,16,16,16,11,14,13,16,12,15,16,16,16,16,16,15,
 };
 
-static static_codebook _huff_book_line_128x17_2sub1 = {
-	1, 18,
-	_huff_lengthlist_line_128x17_2sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_class2 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x11_class2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_2sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 7, 1, 8, 2, 9, 3, 9, 7, 9, 7, 9, 7, 8, 7,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8,
+static const char _huff_lengthlist_line_128x11_class3[] = {
+         7, 6, 9,17, 7, 6, 8,17,12, 9,11,16,16,16,16,16,
+         5, 4, 7,16, 5, 3, 6,14, 9, 6, 8,15,16,16,16,16,
+         5, 4, 6,13, 3, 2, 4,11, 7, 4, 6,13,16,11,10,14,
+        12,12,12,16, 9, 7,10,15,12, 9,11,16,16,15,15,16,
 };
 
-static static_codebook _huff_book_line_128x17_2sub2 = {
-	1, 50,
-	_huff_lengthlist_line_128x17_2sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_class3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x11_class3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_2sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+static const char _huff_lengthlist_line_128x11_0sub0[] = {
+         5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 7, 6,
+         7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7,
+         8, 7, 8, 7, 8, 7, 9, 7, 9, 8, 9, 8, 9, 8,10, 8,
+        10, 9,10, 9,10, 9,11, 9,11, 9,10,10,11,10,11,10,
+        11,11,11,11,11,11,12,13,14,14,14,15,15,16,16,16,
+        17,15,16,15,16,16,17,17,16,17,17,17,17,17,17,17,
+        17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
 };
 
-static static_codebook _huff_book_line_128x17_2sub3 = {
-	1, 128,
-	_huff_lengthlist_line_128x17_2sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_0sub0 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x11_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_3sub1[] = {
-	 0, 4, 4, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 6, 4,
-	 6, 4,
+static const char _huff_lengthlist_line_128x11_1sub0[] = {
+         2, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5,
+         6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6,
 };
 
-static static_codebook _huff_book_line_128x17_3sub1 = {
-	1, 18,
-	_huff_lengthlist_line_128x17_3sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_1sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_128x11_1sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_3sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 5, 3, 6, 3, 6, 3, 7, 4, 8, 4, 8, 4, 9, 4,
-	 9, 4,10, 4,10, 5,11, 5,11, 5,12, 5,12, 6,12, 6,
-	12, 7,
+static const char _huff_lengthlist_line_128x11_1sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         5, 3, 5, 3, 6, 4, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
+         8, 4, 9, 5, 9, 5, 9, 5, 9, 6,10, 6,10, 6,11, 7,
+        10, 7,10, 8,11, 9,11, 9,11,10,11,11,12,11,11,12,
+        15,15,12,14,11,14,12,14,11,14,13,14,12,14,11,14,
+        11,14,12,14,11,14,11,14,13,13,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
 };
 
-static static_codebook _huff_book_line_128x17_3sub2 = {
-	1, 50,
-	_huff_lengthlist_line_128x17_3sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_1sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x11_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_3sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 7, 1, 7, 3, 6, 3, 6, 4, 6, 5, 6, 8, 7,10,
-	 7,11, 7,11, 8,11, 9,11, 7,11, 8,11, 8,11,10,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+static const char _huff_lengthlist_line_128x11_2sub1[] = {
+         0, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4,
+         5, 5,
 };
 
-static static_codebook _huff_book_line_128x17_3sub3 = {
-	1, 128,
-	_huff_lengthlist_line_128x17_3sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_2sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_128x11_2sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_class1[] = {
-	 1, 3, 4, 7, 2, 6, 5, 7,
+static const char _huff_lengthlist_line_128x11_2sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 6, 5, 7,
+         5, 7, 6, 8, 6, 8, 6, 9, 7, 9, 7,10, 7, 9, 8,11,
+         8,11,
 };
 
-static static_codebook _huff_book_line_128x17_class1 = {
-	1, 8,
-	_huff_lengthlist_line_128x17_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_2sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_128x11_2sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_class2[] = {
-	 1, 2, 7,14, 4, 9,13,14, 8,14,14,14,14,14,14,14,
-	 3, 5,10,14, 8,14,14,14,11,14,14,14,14,14,14,14,
-	 7,10,14,14,12,14,14,14,14,14,14,14,14,14,14,14,
-	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,
+static const char _huff_lengthlist_line_128x11_2sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 8, 3, 8, 4, 8, 4, 8, 6, 8, 5, 8, 4, 8,
+         4, 8, 6, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
 };
 
-static static_codebook _huff_book_line_128x17_class2 = {
-	1, 64,
-	_huff_lengthlist_line_128x17_class2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_2sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x11_2sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x17_class3[] = {
-	 2, 6,11,19, 5, 9,12,19,10,11,13,19,19,19,19,19,
-	 2, 5, 8,19, 4, 6, 8,19, 8, 8, 9,19,19,16,19,19,
-	 3, 6, 8,19, 3, 5, 7,18, 8, 8, 9,16,16,11,16,19,
-	14,14,14,19,10,10,11,19,16,12,14,19,19,19,19,19,
+static const char _huff_lengthlist_line_128x11_3sub1[] = {
+         0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4,
+         5, 4,
 };
 
-static static_codebook _huff_book_line_128x17_class3 = {
-	1, 64,
-	_huff_lengthlist_line_128x17_class3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_3sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_128x11_3sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x4_0sub0[] = {
-	 2, 2, 2, 2,
+static const char _huff_lengthlist_line_128x11_3sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 3, 5, 4, 6, 4, 6, 4, 7, 4, 7, 4, 8, 4,
+         8, 4, 9, 4, 9, 4,10, 4,10, 5,10, 5,11, 5,12, 6,
+        12, 6,
 };
 
-static static_codebook _huff_book_line_128x4_0sub0 = {
-	1, 4,
-	_huff_lengthlist_line_128x4_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_3sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_128x11_3sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x4_0sub1[] = {
-	 0, 0, 0, 0, 3, 2, 3, 2, 3, 3,
+static const char _huff_lengthlist_line_128x11_3sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 7, 1, 6, 3, 7, 3, 8, 4, 8, 5, 8, 8, 8, 9,
+         7, 8, 8, 7, 7, 7, 8, 9,10, 9, 9,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
 };
 
-static static_codebook _huff_book_line_128x4_0sub1 = {
-	1, 10,
-	_huff_lengthlist_line_128x4_0sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x11_3sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x11_3sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x4_0sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 4, 4, 4,
-	 4, 3, 4, 4, 5, 3, 6, 4, 6,
+static const char _huff_lengthlist_line_128x17_class1[] = {
+         1, 3, 4, 7, 2, 5, 6, 7,
 };
 
-static static_codebook _huff_book_line_128x4_0sub2 = {
-	1, 25,
-	_huff_lengthlist_line_128x4_0sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_class1 = {
+        1, 8,
+        (char *)_huff_lengthlist_line_128x17_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x4_0sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 2, 6, 3, 6, 3,
-	 7, 4, 7, 5, 7, 5, 7, 6, 8, 8, 9,10,10,16,10,16,
-	10,14,10,14,11,15,15,15,15,15,15,15,15,15,15,15,
+static const char _huff_lengthlist_line_128x17_class2[] = {
+         1, 4,10,19, 3, 8,13,19, 7,12,19,19,19,19,19,19,
+         2, 6,11,19, 8,13,19,19, 9,11,19,19,19,19,19,19,
+         6, 7,13,19, 9,13,19,19,10,13,18,18,18,18,18,18,
+        18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
 };
 
-static static_codebook _huff_book_line_128x4_0sub3 = {
-	1, 64,
-	_huff_lengthlist_line_128x4_0sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_class2 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x17_class2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x4_class0[] = {
-	 8, 8, 8,14, 7, 7, 8,13, 7, 6, 7,11,11,11,10,13,
-	 9, 9,10,16, 8, 8, 9,12, 7, 7, 7,11,11,11,10,12,
-	11,11,11,14,10,10,10,14, 9, 8, 9,12,13,14,12,14,
-	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-	 8, 7, 8,11, 7, 7, 7,11, 6, 6, 6,10,10,10,10,14,
-	 8, 8, 8,12, 7, 7, 8,11, 6, 7, 7,10,10,10,10,13,
-	10,10,10,12,10, 9, 9,12, 9, 9, 9,12,12,13,12,14,
-	16,16,16,16,16,14,16,16,14,14,16,16,16,16,16,16,
-	 7, 6, 5, 7, 6, 6, 5, 6, 6, 5, 5, 5, 9,10, 9,10,
-	 8, 7, 6, 7, 7, 6, 5, 6, 6, 6, 5, 6,10,10, 9, 9,
-	10, 9, 7, 8, 9, 8, 7, 7, 8, 7, 6, 7,11,11,10, 9,
-	16,13,14,16,14,14,13,15,16,14,12,13,16,16,14,16,
-	 9, 8, 7, 8, 8, 8, 7, 8, 8, 7, 6, 7,10,10, 9,12,
-	 9, 9, 8, 8, 9, 8, 7, 8, 8, 8, 6, 7,10,10, 9,12,
-	11,10, 9,10,10, 9, 7, 9, 9, 8, 6, 9,12,11,10,13,
-	12,16,16,16,12,13,12,16,15,12,11,14,16,16,16,16,
+static const char _huff_lengthlist_line_128x17_class3[] = {
+         3, 6,10,17, 4, 8,11,20, 8,10,11,20,20,20,20,20,
+         2, 4, 8,18, 4, 6, 8,17, 7, 8,10,20,20,17,20,20,
+         3, 5, 8,17, 3, 4, 6,17, 8, 8,10,17,17,12,16,20,
+        13,13,15,20,10,10,12,20,15,14,15,20,20,20,19,19,
 };
 
-static static_codebook _huff_book_line_128x4_class0 = {
-	1, 256,
-	_huff_lengthlist_line_128x4_class0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_class3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_128x17_class3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_0sub1[] = {
-	 0, 3, 3, 3, 3, 3, 3, 3, 3,
+static const char _huff_lengthlist_line_128x17_0sub0[] = {
+         5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5,
+         8, 5, 8, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, 9, 6,
+         9, 6, 9, 7, 9, 7, 9, 7, 9, 7,10, 7,10, 8,10, 8,
+        10, 8,10, 8,10, 8,11, 8,11, 8,11, 8,11, 8,11, 9,
+        12, 9,12, 9,12, 9,12, 9,12,10,12,10,13,11,13,11,
+        14,12,14,13,15,14,16,14,17,15,18,16,20,20,20,20,
+        20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
 };
 
-static static_codebook _huff_book_line_128x7_0sub1 = {
-	1, 9,
-	_huff_lengthlist_line_128x7_0sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_0sub0 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x17_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_0sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 4, 4,
-	 5, 4, 5, 4, 5, 4, 6, 4, 6,
+static const char _huff_lengthlist_line_128x17_1sub0[] = {
+         2, 5, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+         6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7,
 };
 
-static static_codebook _huff_book_line_128x7_0sub2 = {
-	1, 25,
-	_huff_lengthlist_line_128x7_0sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_1sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_128x17_1sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_0sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 6, 4,
-	 6, 4, 6, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 5,
-	 6, 7, 8,10,12,12,12,12,12,12,12,12,12,12,12,12,
+static const char _huff_lengthlist_line_128x17_1sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         4, 3, 5, 3, 5, 3, 6, 3, 6, 4, 6, 4, 7, 4, 7, 5,
+         8, 5, 8, 6, 9, 7, 9, 7, 9, 8,10, 9,10, 9,11,10,
+        11,11,11,11,11,11,12,12,12,13,12,13,12,14,12,15,
+        12,14,12,16,13,17,13,17,14,17,14,16,13,17,14,17,
+        14,17,15,17,15,15,16,17,17,17,17,17,17,17,17,17,
+        17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16,
 };
 
-static static_codebook _huff_book_line_128x7_0sub3 = {
-	1, 64,
-	_huff_lengthlist_line_128x7_0sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_1sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x17_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_1sub1[] = {
-	 0, 3, 3, 3, 3, 2, 4, 3, 4,
+static const char _huff_lengthlist_line_128x17_2sub1[] = {
+         0, 4, 5, 4, 6, 4, 8, 3, 9, 3, 9, 2, 9, 3, 8, 4,
+         9, 4,
 };
 
-static static_codebook _huff_book_line_128x7_1sub1 = {
-	1, 9,
-	_huff_lengthlist_line_128x7_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_2sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_128x17_2sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_1sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 6, 3, 7, 3,
-	 8, 3, 9, 3,10, 3,11, 4,11,
+static const char _huff_lengthlist_line_128x17_2sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 1, 5, 3, 5, 3, 5, 4, 7, 5,10, 7,10, 7,
+        12,10,14,10,14, 9,14,11,14,14,14,13,13,13,13,13,
+        13,13,
 };
 
-static static_codebook _huff_book_line_128x7_1sub2 = {
-	1, 25,
-	_huff_lengthlist_line_128x7_1sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_2sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_128x17_2sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_1sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,12, 2, 9, 3,10, 4,
-	12, 5,12, 6,12,10,12,11,12,12,12,12,12,12,12,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+static const char _huff_lengthlist_line_128x17_2sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
+         6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
 };
 
-static static_codebook _huff_book_line_128x7_1sub3 = {
-	1, 64,
-	_huff_lengthlist_line_128x7_1sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_2sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x17_2sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_class0[] = {
-	10, 7, 8,14,10, 7, 7,12,11, 8, 8,13,16,16,16,16,
-	 8, 5, 5,10, 7, 4, 4, 8, 8, 5, 5, 9,16,16,16,16,
-	 7, 4, 5, 7, 6, 3, 3, 6, 8, 5, 5, 7,16,14,13,16,
-	 9, 7, 7,10, 7, 4, 4, 7, 9, 6, 5, 6,15,13,11,14,
+static const char _huff_lengthlist_line_128x17_3sub1[] = {
+         0, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, 5, 4, 6, 4,
+         6, 4,
 };
 
-static static_codebook _huff_book_line_128x7_class0 = {
-	1, 64,
-	_huff_lengthlist_line_128x7_class0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_3sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_128x17_3sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_128x7_class1[] = {
-	 8,12,16,16,10,14,16,16,12,15,16,16,16,16,16,16,
-	 7,11,15,16, 7,11,16,16,10,12,16,16,16,16,16,16,
-	 9,15,16,16, 9,12,16,16,11,15,16,16,16,16,16,16,
-	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-	 6,10,13,16, 7,10,15,16, 9,11,16,16,16,16,16,16,
-	 4, 8,13,16, 5, 8,15,16, 7, 9,15,16,16,16,16,16,
-	 6,12,16,16, 6,10,15,16, 9,10,14,16,16,16,16,16,
-	14,16,16,16,12,14,16,16,15,16,16,16,16,16,16,16,
-	 4, 9,11,16, 5, 9,13,16, 7, 9,15,16,16,16,16,16,
-	 2, 7,11,16, 3, 6,11,16, 5, 7,12,16,16,16,16,16,
-	 4, 9,14,16, 4, 7,13,16, 6, 8,13,16,16,16,16,16,
-	11,14,16,16,10,16,14,16,11,16,16,16,16,16,16,16,
-	 7,13,16,16, 9,13,15,16,11,13,16,16,16,16,16,16,
-	 5,10,14,16, 6,10,15,16, 9,10,16,16,16,16,16,16,
-	 7,13,16,16, 6,10,16,16, 9,12,16,16,16,16,16,16,
-	11,16,16,16,10,16,16,16,13,16,16,16,16,16,16,16,
+static const char _huff_lengthlist_line_128x17_3sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 5, 3, 6, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
+         8, 4, 8, 4, 8, 4, 9, 4, 9, 5,10, 5,10, 7,10, 8,
+        10, 8,
 };
 
-static static_codebook _huff_book_line_128x7_class1 = {
-	1, 256,
-	_huff_lengthlist_line_128x7_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_3sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_128x17_3sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x4_0sub0[] = {
-	 1, 3, 2, 3,
+static const char _huff_lengthlist_line_128x17_3sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 4, 7, 5, 8, 5,11,
+         6,10, 6,12, 7,12, 7,12, 8,12, 8,12,10,12,12,12,
+        12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
 };
 
-static static_codebook _huff_book_line_256x4_0sub0 = {
-	1, 4,
-	_huff_lengthlist_line_256x4_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_128x17_3sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_128x17_3sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x4_0sub1[] = {
-	 0, 0, 0, 0, 2, 2, 3, 3, 3, 3,
+static const char _huff_lengthlist_line_1024x27_class1[] = {
+         2,10, 8,14, 7,12,11,14, 1, 5, 3, 7, 4, 9, 7,13,
 };
 
-static static_codebook _huff_book_line_256x4_0sub1 = {
-	1, 10,
-	_huff_lengthlist_line_256x4_0sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_class1 = {
+        1, 16,
+        (char *)_huff_lengthlist_line_1024x27_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x4_0sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4,
-	 4, 4, 5, 4, 5, 5, 6, 4, 6,
+static const char _huff_lengthlist_line_1024x27_class2[] = {
+         1, 4, 2, 6, 3, 7, 5, 7,
 };
 
-static static_codebook _huff_book_line_256x4_0sub2 = {
-	1, 25,
-	_huff_lengthlist_line_256x4_0sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_class2 = {
+        1, 8,
+        (char *)_huff_lengthlist_line_1024x27_class2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x4_0sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 4, 3, 4, 4,
-	 5, 4, 5, 5, 6, 5, 7, 6, 8, 7, 9, 8, 9, 9,10,12,
-	15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,
+static const char _huff_lengthlist_line_1024x27_class3[] = {
+         1, 5, 7,21, 5, 8, 9,21,10, 9,12,20,20,16,20,20,
+         4, 8, 9,20, 6, 8, 9,20,11,11,13,20,20,15,17,20,
+         9,11,14,20, 8,10,15,20,11,13,15,20,20,20,20,20,
+        20,20,20,20,13,20,20,20,18,18,20,20,20,20,20,20,
+         3, 6, 8,20, 6, 7, 9,20,10, 9,12,20,20,20,20,20,
+         5, 7, 9,20, 6, 6, 9,20,10, 9,12,20,20,20,20,20,
+         8,10,13,20, 8, 9,12,20,11,10,12,20,20,20,20,20,
+        18,20,20,20,15,17,18,20,18,17,18,20,20,20,20,20,
+         7,10,12,20, 8, 9,11,20,14,13,14,20,20,20,20,20,
+         6, 9,12,20, 7, 8,11,20,12,11,13,20,20,20,20,20,
+         9,11,15,20, 8,10,14,20,12,11,14,20,20,20,20,20,
+        20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
+        11,16,18,20,15,15,17,20,20,17,20,20,20,20,20,20,
+         9,14,16,20,12,12,15,20,17,15,18,20,20,20,20,20,
+        16,19,18,20,15,16,20,20,17,17,20,20,20,20,20,20,
+        20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
 };
 
-static static_codebook _huff_book_line_256x4_0sub3 = {
-	1, 64,
-	_huff_lengthlist_line_256x4_0sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_class3 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_1024x27_class3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x4_class0[] = {
-	 4, 5, 6,11, 5, 5, 6,10, 7, 6, 5, 6,14,13,10,10,
-	 6, 6, 6,10, 6, 6, 6,10, 7, 7, 7, 9, 9,10, 9,12,
-	 9, 8, 8,11, 8, 8, 8,10, 8, 8, 9,11, 8, 9, 9,13,
-	18,18,18,18,16,17,18,18,12,13,14,18,14,14,10,12,
-	 5, 5, 6,12, 6, 5, 6,10, 7, 7, 6, 7,13,12, 9,12,
-	 6, 6, 6,11, 6, 6, 6, 9, 7, 7, 7,10,10,10, 9,12,
-	 9, 8, 8,12, 8, 8, 7,11, 8, 8, 8,11, 9, 9, 8,10,
-	18,18,17,18,18,18,15,18,16,14,12,18,14,12,10,11,
-	 8, 7, 7,12, 8, 7, 7,10, 8, 7, 6, 6,11,10, 9,10,
-	 8, 8, 7,11, 8, 7, 7, 9, 8, 8, 7, 9,10,10, 9, 9,
-	10, 9, 8,12, 9, 9, 8,11,10, 9, 8, 9, 8, 8, 7, 9,
-	18,18,18,18,18,18,18,18,17,16,14,18,13,12,11,13,
-	12,12,13,16,11,10,10,16,12,12, 9, 7,15,12,11,11,
-	14,14,14,14,12,11,11,18,14,12,10,11,18,13,11,13,
-	18,18,18,17,17,16,15,17,18,15,16,18,16,12,11,11,
-	18,18,18,18,18,18,18,18,18,18,17,18,18,13,12,15,
+static const char _huff_lengthlist_line_1024x27_class4[] = {
+         2, 3, 7,13, 4, 4, 7,15, 8, 6, 9,17,21,16,15,21,
+         2, 5, 7,11, 5, 5, 7,14, 9, 7,10,16,17,15,16,21,
+         4, 7,10,17, 7, 7, 9,15,11, 9,11,16,21,18,15,21,
+        18,21,21,21,15,17,17,19,21,19,18,20,21,21,21,20,
 };
 
-static static_codebook _huff_book_line_256x4_class0 = {
-	1, 256,
-	_huff_lengthlist_line_256x4_class0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_class4 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_1024x27_class4,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_0sub1[] = {
-	 0, 2, 3, 3, 3, 3, 4, 3, 4,
+static const char _huff_lengthlist_line_1024x27_0sub0[] = {
+         5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5,
+         8, 6, 8, 6, 8, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6,
+        11, 7,11, 7,12, 7,12, 7,12, 7,12, 7,12, 7,12, 7,
+        12, 7,12, 8,13, 8,12, 8,12, 8,13, 8,13, 9,13, 9,
+        13, 9,13, 9,12,10,12,10,13,10,14,11,14,12,14,13,
+        14,13,14,14,15,16,15,15,15,14,15,17,21,22,22,21,
+        22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,
 };
 
-static static_codebook _huff_book_line_256x7_0sub1 = {
-	1, 9,
-	_huff_lengthlist_line_256x7_0sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_0sub0 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_1024x27_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_0sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3,
-	 6, 3, 6, 4, 6, 4, 7, 5, 7,
+static const char _huff_lengthlist_line_1024x27_1sub0[] = {
+         2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 5, 6, 5, 6, 5,
+         6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6,
 };
 
-static static_codebook _huff_book_line_256x7_0sub2 = {
-	1, 25,
-	_huff_lengthlist_line_256x7_0sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_1sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_1024x27_1sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_0sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3,
-	 6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9,
-	11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,
+static const char _huff_lengthlist_line_1024x27_1sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         8, 5, 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4,
+         9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 9, 5, 9, 5, 9, 5,
+         9, 5, 9, 6,10, 6,10, 7,10, 8,11, 9,11,11,12,13,
+        12,14,13,15,13,15,14,16,14,17,15,17,15,15,16,16,
+        15,16,16,16,15,18,16,15,17,17,19,19,19,19,19,19,
+        19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
 };
 
-static static_codebook _huff_book_line_256x7_0sub3 = {
-	1, 64,
-	_huff_lengthlist_line_256x7_0sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_1sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_1024x27_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_1sub1[] = {
-	 0, 3, 3, 3, 3, 2, 4, 3, 4,
+static const char _huff_lengthlist_line_1024x27_2sub0[] = {
+         1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 8,10, 9,10, 9,
 };
 
-static static_codebook _huff_book_line_256x7_1sub1 = {
-	1, 9,
-	_huff_lengthlist_line_256x7_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_2sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_1024x27_2sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_1sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4,
-	 5, 4, 6, 5, 6, 7, 6, 8, 8,
+static const char _huff_lengthlist_line_1024x27_2sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 5, 5, 6, 5, 6, 5,
+         7, 5, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 9, 8, 9, 9,
+         9, 9,10,10,10,11, 9,12, 9,12, 9,15,10,14, 9,13,
+        10,13,10,12,10,12,10,13,10,12,11,13,11,14,12,13,
+        13,14,14,13,14,15,14,16,13,13,14,16,16,16,16,16,
+        16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,
 };
 
-static static_codebook _huff_book_line_256x7_1sub2 = {
-	1, 25,
-	_huff_lengthlist_line_256x7_1sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_2sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_1024x27_2sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_1sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7,
-	 3, 8, 5, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
+static const char _huff_lengthlist_line_1024x27_3sub1[] = {
+         0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 4, 5,
+         5, 5,
 };
 
-static static_codebook _huff_book_line_256x7_1sub3 = {
-	1, 64,
-	_huff_lengthlist_line_256x7_1sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_3sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_1024x27_3sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_class0[] = {
-	 7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15,
-	 6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15,
-	 8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15,
-	14,15,13,13,13,13, 8,11,15,10, 7, 6,11, 9,10,15,
+static const char _huff_lengthlist_line_1024x27_3sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 3, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6,
+         5, 7, 5, 8, 6, 8, 6, 9, 7,10, 7,10, 8,10, 8,11,
+         9,11,
 };
 
-static static_codebook _huff_book_line_256x7_class0 = {
-	1, 64,
-	_huff_lengthlist_line_256x7_class0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_3sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_1024x27_3sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_256x7_class1[] = {
-	 5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15,
-	 4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15,
-	 6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15,
-	15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,
-	 4, 6, 7,15, 6, 8, 9,15,10,10,12,15,15,15,15,15,
-	 2, 5, 6,15, 5, 6, 7,15, 8, 6, 7,15,15,15,15,15,
-	 5, 6, 8,15, 5, 6, 7,15, 9, 6, 7,15,15,15,15,15,
-	14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,
-	 7, 8, 9,15, 9,10,10,15,15,14,14,15,15,15,15,15,
-	 5, 6, 7,15, 7, 8, 9,15,12, 9,10,15,15,15,15,15,
-	 7, 7, 9,15, 7, 7, 8,15,12, 8, 9,15,15,15,15,15,
-	13,13,14,15,12,11,12,15,15,15,15,15,15,15,15,15,
-	15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-	13,13,13,15,15,15,15,15,15,15,15,15,15,15,15,15,
-	15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,
-	15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,
+static const char _huff_lengthlist_line_1024x27_3sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 7, 3, 8, 3,10, 3, 8, 3, 9, 3, 8, 4, 9,
+         4, 9, 5, 9, 6,10, 6, 9, 7,11, 7,12, 9,13,10,13,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
 };
 
-static static_codebook _huff_book_line_256x7_class1 = {
-	1, 256,
-	_huff_lengthlist_line_256x7_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_3sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_1024x27_3sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_0sub0[] = {
-	 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-	 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6,
-	 7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7,
-	 9, 7, 9, 8, 9, 8,10, 8,10, 8,10, 7,10, 6,10, 8,
-	10, 8,11, 7,10, 7,11, 8,11,11,12,12,11,11,12,11,
-	13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,
-	15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,
-	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+static const char _huff_lengthlist_line_1024x27_4sub1[] = {
+         0, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4,
+         5, 4,
 };
 
-static static_codebook _huff_book_line_512x17_0sub0 = {
-	1, 128,
-	_huff_lengthlist_line_512x17_0sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_4sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_1024x27_4sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_1sub0[] = {
-	 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
-	 6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7,
+static const char _huff_lengthlist_line_1024x27_4sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 7, 7, 8,
+         7, 8, 7, 8, 7, 9, 8, 9, 8, 9, 8,10, 8,11, 9,12,
+         9,12,
 };
 
-static static_codebook _huff_book_line_512x17_1sub0 = {
-	1, 32,
-	_huff_lengthlist_line_512x17_1sub0,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_4sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_1024x27_4sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_1sub1[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 4, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
-	 6, 5, 7, 5, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
-	 9, 7,11, 9,11,11,12,11,14,12,14,16,14,16,13,16,
-	14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,
-	13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,
-	15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+static const char _huff_lengthlist_line_1024x27_4sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 2, 5, 2, 6, 3, 6, 4, 7, 4, 7, 5, 9, 5,11,
+         6,11, 6,11, 7,11, 6,11, 6,11, 9,11, 8,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
 };
 
-static static_codebook _huff_book_line_512x17_1sub1 = {
-	1, 128,
-	_huff_lengthlist_line_512x17_1sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_1024x27_4sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_1024x27_4sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_2sub1[] = {
-	 0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3,
-	 5, 3,
+static const char _huff_lengthlist_line_2048x27_class1[] = {
+         2, 6, 8, 9, 7,11,13,13, 1, 3, 5, 5, 6, 6,12,10,
 };
 
-static static_codebook _huff_book_line_512x17_2sub1 = {
-	1, 18,
-	_huff_lengthlist_line_512x17_2sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_class1 = {
+        1, 16,
+        (char *)_huff_lengthlist_line_2048x27_class1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_2sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5,
-	 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7,
-	 9, 8,
+static const char _huff_lengthlist_line_2048x27_class2[] = {
+         1, 2, 3, 6, 4, 7, 5, 7,
 };
 
-static static_codebook _huff_book_line_512x17_2sub2 = {
-	1, 50,
-	_huff_lengthlist_line_512x17_2sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_class2 = {
+        1, 8,
+        (char *)_huff_lengthlist_line_2048x27_class2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_2sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 3, 3, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 7, 7,
-	 7, 8, 8,11, 8, 9, 9, 9,10,11,11,11, 9,10,10,11,
-	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+static const char _huff_lengthlist_line_2048x27_class3[] = {
+         3, 3, 6,16, 5, 5, 7,16, 9, 8,11,16,16,16,16,16,
+         5, 5, 8,16, 5, 5, 7,16, 8, 7, 9,16,16,16,16,16,
+         9, 9,12,16, 6, 8,11,16, 9,10,11,16,16,16,16,16,
+        16,16,16,16,13,16,16,16,15,16,16,16,16,16,16,16,
+         5, 4, 7,16, 6, 5, 8,16, 9, 8,10,16,16,16,16,16,
+         5, 5, 7,15, 5, 4, 6,15, 7, 6, 8,16,16,16,16,16,
+         9, 9,11,15, 7, 7, 9,16, 8, 8, 9,16,16,16,16,16,
+        16,16,16,16,15,15,15,16,15,15,14,16,16,16,16,16,
+         8, 8,11,16, 8, 9,10,16,11,10,14,16,16,16,16,16,
+         6, 8,10,16, 6, 7,10,16, 8, 8,11,16,14,16,16,16,
+        10,11,14,16, 9, 9,11,16,10,10,11,16,16,16,16,16,
+        16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+        16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,
+        12,16,15,16,12,14,16,16,16,16,16,16,16,16,16,16,
+        16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+        16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
 };
 
-static static_codebook _huff_book_line_512x17_2sub3 = {
-	1, 128,
-	_huff_lengthlist_line_512x17_2sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_class3 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_2048x27_class3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_3sub1[] = {
-	 0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5,
-	 5, 5,
+static const char _huff_lengthlist_line_2048x27_class4[] = {
+         2, 4, 7,13, 4, 5, 7,15, 8, 7,10,16,16,14,16,16,
+         2, 4, 7,16, 3, 4, 7,14, 8, 8,10,16,16,16,15,16,
+         6, 8,11,16, 7, 7, 9,16,11, 9,13,16,16,16,15,16,
+        16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,
 };
 
-static static_codebook _huff_book_line_512x17_3sub1 = {
-	1, 18,
-	_huff_lengthlist_line_512x17_3sub1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_class4 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_2048x27_class4,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_3sub2[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7,
-	 6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15,
-	11,14,
+static const char _huff_lengthlist_line_2048x27_0sub0[] = {
+         5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+         6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5, 8, 5, 9, 5,
+         9, 6,10, 6,10, 6,11, 6,11, 6,11, 6,11, 6,11, 6,
+        11, 6,11, 6,12, 7,11, 7,11, 7,11, 7,11, 7,10, 7,
+        11, 7,11, 7,12, 7,11, 8,11, 8,11, 8,11, 8,13, 8,
+        12, 9,11, 9,11, 9,11,10,12,10,12, 9,12,10,12,11,
+        14,12,16,12,12,11,14,16,17,17,17,17,17,17,17,17,
+        17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,
 };
 
-static static_codebook _huff_book_line_512x17_3sub2 = {
-	1, 50,
-	_huff_lengthlist_line_512x17_3sub2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_0sub0 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_2048x27_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_3sub3[] = {
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	 0, 0, 4, 8, 4, 8, 4, 8, 4, 8, 5, 8, 5, 8, 6, 8,
-	 4, 8, 4, 8, 5, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+static const char _huff_lengthlist_line_2048x27_1sub0[] = {
+         4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
+         5, 5, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6,
 };
 
-static static_codebook _huff_book_line_512x17_3sub3 = {
-	1, 128,
-	_huff_lengthlist_line_512x17_3sub3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_1sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_2048x27_1sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_class1[] = {
-	 1, 2, 3, 6, 5, 4, 7, 7,
+static const char _huff_lengthlist_line_2048x27_1sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         6, 5, 7, 5, 7, 4, 7, 4, 8, 4, 8, 4, 8, 4, 8, 3,
+         8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 5, 9, 5, 9, 6,
+         9, 7, 9, 8, 9, 9, 9,10, 9,11, 9,14, 9,15,10,15,
+        10,15,10,15,10,15,11,15,10,14,12,14,11,14,13,14,
+        13,15,15,15,12,15,15,15,13,15,13,15,13,15,15,15,
+        15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,
 };
 
-static static_codebook _huff_book_line_512x17_class1 = {
-	1, 8,
-	_huff_lengthlist_line_512x17_class1,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_1sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_2048x27_1sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_class2[] = {
-	 3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17,
-	 6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14,
-	10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14,
-	17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,
+static const char _huff_lengthlist_line_2048x27_2sub0[] = {
+         2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+         6, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
 };
 
-static static_codebook _huff_book_line_512x17_class2 = {
-	1, 64,
-	_huff_lengthlist_line_512x17_class2,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_2sub0 = {
+        1, 32,
+        (char *)_huff_lengthlist_line_2048x27_2sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist_line_512x17_class3[] = {
-	 2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17,
-	 3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17,
-	 6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17,
-	17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,
+static const char _huff_lengthlist_line_2048x27_2sub1[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         3, 4, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 6, 6, 6, 7,
+         6, 8, 6, 8, 6, 9, 7,10, 7,10, 7,10, 7,12, 7,12,
+         7,12, 9,12,11,12,10,12,10,12,11,12,12,12,10,12,
+        10,12,10,12, 9,12,11,12,12,12,12,12,11,12,11,12,
+        12,12,12,12,12,12,12,12,10,10,12,12,12,12,12,10,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
 };
 
-static static_codebook _huff_book_line_512x17_class3 = {
-	1, 64,
-	_huff_lengthlist_line_512x17_class3,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book_line_2048x27_2sub1 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_2048x27_2sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_3sub1[] = {
+         0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+         5, 5,
+};
+
+static const static_codebook _huff_book_line_2048x27_3sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_2048x27_3sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_3sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6,
+         6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7, 9, 9,11, 9,12,
+        10,12,
+};
+
+static const static_codebook _huff_book_line_2048x27_3sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_2048x27_3sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_3sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 6, 3, 7, 3, 7, 5, 7, 7, 7, 7, 7, 6, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+};
+
+static const static_codebook _huff_book_line_2048x27_3sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_2048x27_3sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_4sub1[] = {
+         0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4,
+         4, 5,
+};
+
+static const static_codebook _huff_book_line_2048x27_4sub1 = {
+        1, 18,
+        (char *)_huff_lengthlist_line_2048x27_4sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_4sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 5, 6, 5, 6, 5, 7,
+         6, 6, 6, 7, 7, 7, 8, 9, 9, 9,12,10,11,10,10,12,
+        10,10,
+};
+
+static const static_codebook _huff_book_line_2048x27_4sub2 = {
+        1, 50,
+        (char *)_huff_lengthlist_line_2048x27_4sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_2048x27_4sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 3, 6, 5, 7, 5, 7, 7, 7, 7, 7, 5, 7, 5, 7,
+         5, 7, 5, 7, 7, 7, 7, 7, 4, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+};
+
+static const static_codebook _huff_book_line_2048x27_4sub3 = {
+        1, 128,
+        (char *)_huff_lengthlist_line_2048x27_4sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_256x4low_class0[] = {
+         4, 5, 6,11, 5, 5, 6,10, 7, 7, 6, 6,14,13, 9, 9,
+         6, 6, 6,10, 6, 6, 6, 9, 8, 7, 7, 9,14,12, 8,11,
+         8, 7, 7,11, 8, 8, 7,11, 9, 9, 7, 9,13,11, 9,13,
+        19,19,18,19,15,16,16,19,11,11,10,13,10,10, 9,15,
+         5, 5, 6,13, 6, 6, 6,11, 8, 7, 6, 7,14,11,10,11,
+         6, 6, 6,12, 7, 6, 6,11, 8, 7, 7,11,13,11, 9,11,
+         9, 7, 6,12, 8, 7, 6,12, 9, 8, 8,11,13,10, 7,13,
+        19,19,17,19,17,14,14,19,12,10, 8,12,13,10, 9,16,
+         7, 8, 7,12, 7, 7, 7,11, 8, 7, 7, 8,12,12,11,11,
+         8, 8, 7,12, 8, 7, 6,11, 8, 7, 7,10,10,11,10,11,
+         9, 8, 8,13, 9, 8, 7,12,10, 9, 7,11, 9, 8, 7,11,
+        18,18,15,18,18,16,17,18,15,11,10,18,11, 9, 9,18,
+        16,16,13,16,12,11,10,16,12,11, 9, 6,15,12,11,13,
+        16,16,14,14,13,11,12,16,12, 9, 9,13,13,10,10,12,
+        17,18,17,17,14,15,14,16,14,12,14,15,12,10,11,12,
+        18,18,18,18,18,18,18,18,18,12,13,18,16,11, 9,18,
+};
+
+static const static_codebook _huff_book_line_256x4low_class0 = {
+        1, 256,
+        (char *)_huff_lengthlist_line_256x4low_class0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_256x4low_0sub0[] = {
+         1, 3, 2, 3,
+};
+
+static const static_codebook _huff_book_line_256x4low_0sub0 = {
+        1, 4,
+        (char *)_huff_lengthlist_line_256x4low_0sub0,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_256x4low_0sub1[] = {
+         0, 0, 0, 0, 2, 3, 2, 3, 3, 3,
+};
+
+static const static_codebook _huff_book_line_256x4low_0sub1 = {
+        1, 10,
+        (char *)_huff_lengthlist_line_256x4low_0sub1,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_256x4low_0sub2[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4,
+         4, 4, 4, 4, 5, 5, 5, 6, 6,
+};
+
+static const static_codebook _huff_book_line_256x4low_0sub2 = {
+        1, 25,
+        (char *)_huff_lengthlist_line_256x4low_0sub2,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
+};
+
+static const char _huff_lengthlist_line_256x4low_0sub3[] = {
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 2, 4, 3, 5, 4,
+         5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 6, 9,
+         7,12,11,16,13,16,12,15,13,15,12,14,12,15,15,15,
+};
+
+static const static_codebook _huff_book_line_256x4low_0sub3 = {
+        1, 64,
+        (char *)_huff_lengthlist_line_256x4low_0sub3,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
--- a/sys/src/cmd/audio/libvorbis/books/uncoupled/res_books_uncoupled.h
+++ b/sys/src/cmd/audio/libvorbis/books/uncoupled/res_books_uncoupled.h
@@ -5,1463 +5,975 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
  * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: static codebooks autogenerated by huff/huffbuld
- last modified: $Id: res_books_uncoupled.h,v 1.2 2002/07/11 10:27:53 xiphmont Exp $
+ last modified: $Id: res_books_uncoupled.h 19057 2014-01-22 12:32:31Z xiphmont $
 
  ********************************************************************/
 
 #include "codebook.h"
-static long _vq_quantlist__16u0__p1_0[] = {
-	1,
-	0,
-	2,
-};
 
-static long _vq_lengthlist__16u0__p1_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8,
-	10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12,
-	11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11,
-	10,14,12,11,14,14, 4, 9, 9, 8,11,11, 9,11,12, 7,
-	11,11,10,13,14,10,12,14, 8,11,12,10,14,14,10,13,
-	12,
+static const long _vq_quantlist__16u0__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__16u0__p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__16u0__p1_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8,
+        10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12,
+        11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11,
+        10,14,12,11,14,14, 4, 9, 9, 8,11,11, 9,11,12, 7,
+        11,11,10,13,14,10,12,14, 8,11,12,10,14,14,10,13,
+        12,
 };
 
-static long _vq_quantmap__16u0__p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _16u0__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u0__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16u0__p1_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p1_0 = {
-	_vq_quantthresh__16u0__p1_0,
-	_vq_quantmap__16u0__p1_0,
-	3,
-	3
+static const long _vq_quantlist__16u0__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _16u0__p1_0 = {
-	4, 81,
-	_vq_lengthlist__16u0__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16u0__p1_0,
-	NULL,
-	&_vq_auxt__16u0__p1_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16u0__p2_0[] = {
+         2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7,
+         8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9,
+         9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9,
+         8,11, 8, 9,10,11, 4, 7, 7, 7, 8, 8, 7, 9, 9, 6,
+         9, 8, 9,11,10, 8, 8,11, 6, 8, 9, 9,10,11, 8,11,
+         8,
 };
 
-static long _vq_quantlist__16u0__p2_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _16u0__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u0__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16u0__p2_0,
+        0
 };
 
-static long _vq_lengthlist__16u0__p2_0[] = {
-	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7,
-	 8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9,
-	 9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9,
-	 8,11, 8, 9,10,11, 4, 7, 7, 7, 8, 8, 7, 9, 9, 6,
-	 9, 8, 9,11,10, 8, 8,11, 6, 8, 9, 9,10,11, 8,11,
-	 8,
+static const long _vq_quantlist__16u0__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__16u0__p2_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__16u0__p3_0[] = {
+         1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8,
+         9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10,
+        10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10,
+        13,13, 6, 8, 9,10,10, 8,10,10,11,11, 8,10,10,11,
+        11, 9,10,11,13,12,10,10,11,12,12, 8,11,11,14,13,
+        10,12,11,15,13, 9,12,11,15,14,12,14,13,16,14,12,
+        13,13,17,14, 8,11,11,13,14, 9,11,12,14,15,10,11,
+        12,13,15,11,13,13,14,16,12,13,14,14,16, 5, 9, 9,
+        11,11, 9,11,11,12,12, 8,11,11,12,12,11,12,12,15,
+        14,10,12,12,15,15, 8,11,11,13,12,10,12,12,13,13,
+        10,12,12,14,13,12,12,13,14,15,11,13,13,17,16, 7,
+        11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,
+        12,15,14,11,13,13,15,14, 9,12,12,16,15,11,13,13,
+        17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,
+        17, 9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,
+        13,14,13,17,15,12,15,15,16,17, 5, 9, 9,11,11, 8,
+        11,11,13,12, 9,11,11,12,12,10,12,12,14,15,11,12,
+        12,14,14, 7,11,10,13,12,10,12,12,14,13,10,11,12,
+        13,13,11,13,13,15,16,12,12,13,15,15, 7,11,11,13,
+        13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,
+        12,13,13,15,14, 9,12,12,15,15,10,13,13,17,16,11,
+        12,13,15,15,12,15,14,18,18,13,14,14,16,17, 9,12,
+        12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,
+        17,17,13,15,14,16,15, 7,11,11,15,16,10,13,12,16,
+        17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,
+         8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,
+        17,16,17,19,14,15,15,17,16, 8,12,12,16,15,11,14,
+        13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,
+        18,18,11,15,14,18,17,13,14,15,18, 0,12,15,15, 0,
+        17,17,16,17,17,18,14,16,18,18, 0,11,14,14,17, 0,
+        12,15,14,17,19,12,15,14,18, 0,15,18,16, 0,17,14,
+        18,16,18, 0, 7,11,11,16,15,10,12,12,18,16,10,13,
+        13,16,15,13,15,14,17,17,14,16,16,19,18, 8,12,12,
+        16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,
+        18,15,16,16, 0,19, 8,12,12,16,17,11,13,13,17,17,
+        11,14,13,17,17,13,15,15,17,19,15,17,17,19, 0,11,
+        14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,
+        17, 0,18,16,16,19,17, 0,11,14,14,18,19,12,15,14,
+        17,17,13,16,14,17,16,14,17,16,18,18,15,18,15, 0,
+        18,
 };
 
-static long _vq_quantmap__16u0__p2_0[] = {
-	    1,    0,    2,
+static const static_codebook _16u0__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16u0__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16u0__p3_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p2_0 = {
-	_vq_quantthresh__16u0__p2_0,
-	_vq_quantmap__16u0__p2_0,
-	3,
-	3
+static const long _vq_quantlist__16u0__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _16u0__p2_0 = {
-	4, 81,
-	_vq_lengthlist__16u0__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16u0__p2_0,
-	NULL,
-	&_vq_auxt__16u0__p2_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16u0__p4_0[] = {
+         3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9,
+        10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7,
+         8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
+        11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 8, 7,10,
+        10,10,11,10,12,11,10,10,10,13,10, 9,10,10,12,12,
+        10,11,10,14,12, 9,11,11,13,13,11,12,13,13,13,11,
+        12,12,15,13, 9,10,10,12,13, 9,11,10,12,13,10,10,
+        11,12,13,11,12,12,12,13,11,12,12,13,13, 5, 7, 7,
+        10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
+        13,10,10,11,12,12, 6, 8, 8,11,10, 7, 8, 9,10,12,
+         8, 9, 9,11,11,11,10,11,11,12,10,11,11,13,12, 7,
+         8, 8,10,11, 8, 9, 8,11,10, 8, 9, 9,11,11,10,12,
+        10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,
+        13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,
+        14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,
+        12,12,12,14,12,12,13,12,17,15, 5, 7, 7,10,10, 7,
+         8, 8,10,10, 7, 8, 8,11,10,10,10,11,12,12,10,11,
+        11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,11,11,11,12,12,10,10,11,12,13, 6, 8, 8,10,
+        11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,12,12,13,13,
+        11,11,10,13,11, 9,11,10,14,13,11,11,11,15,13,10,
+        10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,
+        11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,
+        14, 0,12,13,11,13,11, 8,10,10,13,13,10,11,11,14,
+        13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,
+         9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,
+        12,14,15,16,13,13,13,14,13, 9,11,11,12,12,10,12,
+        11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,
+        17,15,11,12,12,14,14,10,11,12,13,15,12,13,13, 0,
+        15,13,11,14,12,16,14,16,14, 0,15,11,12,12,14,16,
+        11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,
+        14,14,16,16, 8,10,10,13,13,10,11,10,13,14,10,11,
+        11,13,13,13,13,12,14,14,14,13,13,16,17, 9,10,10,
+        12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,
+        15,13,13,13,14,14, 9,10,10,13,13,10,11,12,12,14,
+        10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,
+        12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,
+        14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,
+        14,17,11,12,11,14,14,13,16,14,16, 0,14,15,11,15,
+        11,
 };
 
-static long _vq_quantlist__16u0__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _16u0__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16u0__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16u0__p4_0,
+        0
 };
 
-static long _vq_lengthlist__16u0__p3_0[] = {
-	 1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10,
-	10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10,
-	13,13, 6, 8, 9,10,10, 8,10,10,11,11, 8,10,10,11,
-	11, 9,10,11,13,12,10,10,11,12,12, 8,11,11,14,13,
-	10,12,11,15,13, 9,12,11,15,14,12,14,13,16,14,12,
-	13,13,17,14, 8,11,11,13,14, 9,11,12,14,15,10,11,
-	12,13,15,11,13,13,14,16,12,13,14,14,16, 5, 9, 9,
-	11,11, 9,11,11,12,12, 8,11,11,12,12,11,12,12,15,
-	14,10,12,12,15,15, 8,11,11,13,12,10,12,12,13,13,
-	10,12,12,14,13,12,12,13,14,15,11,13,13,17,16, 7,
-	11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,
-	12,15,14,11,13,13,15,14, 9,12,12,16,15,11,13,13,
-	17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,
-	17, 9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,
-	13,14,13,17,15,12,15,15,16,17, 5, 9, 9,11,11, 8,
-	11,11,13,12, 9,11,11,12,12,10,12,12,14,15,11,12,
-	12,14,14, 7,11,10,13,12,10,12,12,14,13,10,11,12,
-	13,13,11,13,13,15,16,12,12,13,15,15, 7,11,11,13,
-	13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,
-	12,13,13,15,14, 9,12,12,15,15,10,13,13,17,16,11,
-	12,13,15,15,12,15,14,18,18,13,14,14,16,17, 9,12,
-	12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,
-	17,17,13,15,14,16,15, 7,11,11,15,16,10,13,12,16,
-	17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,
-	 8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,
-	17,16,17,19,14,15,15,17,16, 8,12,12,16,15,11,14,
-	13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,
-	18,18,11,15,14,18,17,13,14,15,18, 0,12,15,15, 0,
-	17,17,16,17,17,18,14,16,18,18, 0,11,14,14,17, 0,
-	12,15,14,17,19,12,15,14,18, 0,15,18,16, 0,17,14,
-	18,16,18, 0, 7,11,11,16,15,10,12,12,18,16,10,13,
-	13,16,15,13,15,14,17,17,14,16,16,19,18, 8,12,12,
-	16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,
-	18,15,16,16, 0,19, 8,12,12,16,17,11,13,13,17,17,
-	11,14,13,17,17,13,15,15,17,19,15,17,17,19, 0,11,
-	14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,
-	17, 0,18,16,16,19,17, 0,11,14,14,18,19,12,15,14,
-	17,17,13,16,14,17,16,14,17,16,18,18,15,18,15, 0,
-	18,
+static const long _vq_quantlist__16u0__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__16u0__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _vq_lengthlist__16u0__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+         9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+         9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8,
+         9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+         9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
+        12,
 };
 
-static long _vq_quantmap__16u0__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _16u0__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16u0__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16u0__p5_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p3_0 = {
-	_vq_quantthresh__16u0__p3_0,
-	_vq_quantmap__16u0__p3_0,
-	5,
-	5
+static const long _vq_quantlist__16u0__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _16u0__p3_0 = {
-	4, 625,
-	_vq_lengthlist__16u0__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u0__p3_0,
-	NULL,
-	&_vq_auxt__16u0__p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u0__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__16u0__p4_0[] = {
-	 3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9,
-	10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7,
-	 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
-	11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 8, 7,10,
-	10,10,11,10,12,11,10,10,10,13,10, 9,10,10,12,12,
-	10,11,10,14,12, 9,11,11,13,13,11,12,13,13,13,11,
-	12,12,15,13, 9,10,10,12,13, 9,11,10,12,13,10,10,
-	11,12,13,11,12,12,12,13,11,12,12,13,13, 5, 7, 7,
-	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
-	13,10,10,11,12,12, 6, 8, 8,11,10, 7, 8, 9,10,12,
-	 8, 9, 9,11,11,11,10,11,11,12,10,11,11,13,12, 7,
-	 8, 8,10,11, 8, 9, 8,11,10, 8, 9, 9,11,11,10,12,
-	10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,
-	13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,
-	14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,
-	12,12,12,14,12,12,13,12,17,15, 5, 7, 7,10,10, 7,
-	 8, 8,10,10, 7, 8, 8,11,10,10,10,11,12,12,10,11,
-	11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
-	10,11,11,11,11,12,12,10,10,11,12,13, 6, 8, 8,10,
-	11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,12,12,13,13,
-	11,11,10,13,11, 9,11,10,14,13,11,11,11,15,13,10,
-	10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,
-	11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,
-	14, 0,12,13,11,13,11, 8,10,10,13,13,10,11,11,14,
-	13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,
-	 9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,
-	12,14,15,16,13,13,13,14,13, 9,11,11,12,12,10,12,
-	11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,
-	17,15,11,12,12,14,14,10,11,12,13,15,12,13,13, 0,
-	15,13,11,14,12,16,14,16,14, 0,15,11,12,12,14,16,
-	11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,
-	14,14,16,16, 8,10,10,13,13,10,11,10,13,14,10,11,
-	11,13,13,13,13,12,14,14,14,13,13,16,17, 9,10,10,
-	12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,
-	15,13,13,13,14,14, 9,10,10,13,13,10,11,12,12,14,
-	10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,
-	12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,
-	14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,
-	14,17,11,12,11,14,14,13,16,14,16, 0,14,15,11,15,
-	11,
-};
-
-static float _vq_quantthresh__16u0__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16u0__p4_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u0__p4_0 = {
-	_vq_quantthresh__16u0__p4_0,
-	_vq_quantmap__16u0__p4_0,
-	5,
-	5
+static const char _vq_lengthlist__16u0__p6_0[] = {
+         1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6,
+         9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11,
+        11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14,
+        15,15, 0, 0, 7, 9, 9,11,11,13,13,14,14,15,16,19,
+        18,10,11,11,13,13,14,14,16,15,17,18, 0, 0,10,11,
+        11,13,13,14,14,15,15,16,18, 0, 0,11,13,13,14,14,
+        15,15,17,17, 0,19, 0, 0,11,13,13,14,14,14,15,16,
+        18, 0,19, 0, 0,13,14,14,15,15,18,17,18,18, 0,19,
+         0, 0,13,14,14,15,16,16,16,18,18,19, 0, 0, 0,16,
+        17,17, 0,17,19,19, 0,19, 0, 0, 0, 0,16,19,16,17,
+        18, 0,19, 0, 0, 0, 0, 0, 0,
 };
 
-static static_codebook _16u0__p4_0 = {
-	4, 625,
-	_vq_lengthlist__16u0__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u0__p4_0,
-	NULL,
-	&_vq_auxt__16u0__p4_0,
-	NULL,
-	0
+static const static_codebook _16u0__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__16u0__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__16u0__p6_0,
+        0
 };
 
-static long _vq_quantlist__16u0__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__16u0__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__16u0__p5_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
-	 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
-	 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8,
-	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
-	 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
-	12,
+static const char _vq_lengthlist__16u0__p6_1[] = {
+         1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6,
+         6, 6, 7, 7, 6, 6, 6, 7, 7,
 };
 
-static float _vq_quantthresh__16u0__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _16u0__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__16u0__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16u0__p6_1,
+        0
 };
 
-static long _vq_quantmap__16u0__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__16u0__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p5_0 = {
-	_vq_quantthresh__16u0__p5_0,
-	_vq_quantmap__16u0__p5_0,
-	9,
-	9
+static const char _vq_lengthlist__16u0__p7_0[] = {
+         1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static static_codebook _16u0__p5_0 = {
-	2, 81,
-	_vq_lengthlist__16u0__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16u0__p5_0,
-	NULL,
-	&_vq_auxt__16u0__p5_0,
-	NULL,
-	0
+static const static_codebook _16u0__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u0__p7_0,
+        1, -518803456, 1628680192, 2, 0,
+        (long *)_vq_quantlist__16u0__p7_0,
+        0
 };
 
-static long _vq_quantlist__16u0__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__16u0__p7_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__16u0__p6_0[] = {
-	 1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6,
-	 9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11,
-	11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14,
-	15,15, 0, 0, 7, 9, 9,11,11,13,13,14,14,15,16,19,
-	18,10,11,11,13,13,14,14,16,15,17,18, 0, 0,10,11,
-	11,13,13,14,14,15,15,16,18, 0, 0,11,13,13,14,14,
-	15,15,17,17, 0,19, 0, 0,11,13,13,14,14,14,15,16,
-	18, 0,19, 0, 0,13,14,14,15,15,18,17,18,18, 0,19,
-	 0, 0,13,14,14,15,16,16,16,18,18,19, 0, 0, 0,16,
-	17,17, 0,17,19,19, 0,19, 0, 0, 0, 0,16,19,16,17,
-	18, 0,19, 0, 0, 0, 0, 0, 0,
+static const char _vq_lengthlist__16u0__p7_1[] = {
+         1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5,
+         8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8,
+         9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8,
+        10,10,10,10,10,10,10,10,10,10,10,10, 4, 8, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static float _vq_quantthresh__16u0__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _16u0__p7_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__16u0__p7_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__16u0__p7_1,
+        0
 };
 
-static long _vq_quantmap__16u0__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__16u0__p7_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p6_0 = {
-	_vq_quantthresh__16u0__p6_0,
-	_vq_quantmap__16u0__p6_0,
-	13,
-	13
+static const char _vq_lengthlist__16u0__p7_2[] = {
+         1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10,
+         9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11,
+        11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8,
+         8,11, 9,11,11,12,11,12,12,10,11,11,10,10,11, 7,
+        10, 9, 9, 9, 9, 9,10, 9,10, 9,10,10,12,10,10,10,
+        11,12,10,10, 7, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9,
+        11,11,10,10,10,10, 9, 9,12, 7, 9,10, 9,11, 9,10,
+         9,10,11,11,11,10,11,12, 9,12,11,10,10,10, 7, 9,
+         9, 9, 9,10,12,10, 9,11,12,10,11,12,12,11, 9,10,
+        11,10,11, 7, 9,10,10,11,10, 9,10,11,11,11,10,12,
+        12,12,11,11,10,11,11,12, 8, 9,10,12,11,10,10,12,
+        12,12,12,12,10,11,11, 9,11,10,12,11,11, 8, 9,10,
+        10,11,12,11,11,10,10,10,12,12,12, 9,10,12,12,12,
+        12,12, 8,10,11,10,10,12, 9,11,12,12,11,12,12,12,
+        12,10,12,10,10,10,10, 8,12,11,11,11,10,10,11,12,
+        12,12,12,11,12,12,12,11,11,11,12,10, 9,10,10,12,
+        10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,
+        11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,
+        12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,
+        12,12,12,11,12,11,10,11,11,12,11,11, 9,10,10,10,
+        12,10,10,11, 9,11,12,11,12,11,12,12,10,11,10,12,
+         9, 9, 9,12,11,10,11,10,12,10,12,10,12,12,12,11,
+        11,11,11,11,10, 9,10,10,11,10,11,11,12,11,10,11,
+        12,12,12,11,11, 9,12,10,12, 9,10,12,10,10,11,10,
+        11,11,12,11,10,11,10,11,11,11,11,12,11,11,10, 9,
+        10,10,10, 9,11,11,10, 9,12,10,11,12,11,12,12,11,
+        12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,
+        10,10,12,11,10,11,11,11,10,
 };
 
-static static_codebook _16u0__p6_0 = {
-	2, 169,
-	_vq_lengthlist__16u0__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__16u0__p6_0,
-	NULL,
-	&_vq_auxt__16u0__p6_0,
-	NULL,
-	0
+static const static_codebook _16u0__p7_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__16u0__p7_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16u0__p7_2,
+        0
 };
 
-static long _vq_quantlist__16u0__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _huff_lengthlist__16u0__single[] = {
+         3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19,
+         8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19,
+        12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19,
+         8, 8,10, 7, 7, 4, 5,19,12,17,19,15,18,13,11,18,
 };
 
-static long _vq_lengthlist__16u0__p6_1[] = {
-	 1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6,
-	 6, 6, 7, 7, 6, 6, 6, 7, 7,
+static const static_codebook _huff_book__16u0__single = {
+        2, 64,
+        (char *)_huff_lengthlist__16u0__single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__16u0__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _huff_lengthlist__16u1__long[] = {
+         3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6,
+        11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4,
+         7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9,
+        18,18, 7, 5, 8, 5, 7, 5, 8, 6,18,18,12, 9,10, 9,
+         9, 9, 8, 9,18,18, 8, 7,10, 6, 8, 5, 6, 4,11,18,
+        11,15,16,12,11, 8, 8, 6, 9,18,14,18,18,18,16,16,
+        16,13,16,18,
 };
 
-static long _vq_quantmap__16u0__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _huff_book__16u1__long = {
+        2, 100,
+        (char *)_huff_lengthlist__16u1__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p6_1 = {
-	_vq_quantthresh__16u0__p6_1,
-	_vq_quantmap__16u0__p6_1,
-	5,
-	5
+static const long _vq_quantlist__16u1__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _16u0__p6_1 = {
-	2, 25,
-	_vq_lengthlist__16u0__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u0__p6_1,
-	NULL,
-	&_vq_auxt__16u0__p6_1,
-	NULL,
-	0
+static const char _vq_lengthlist__16u1__p1_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7,
+         9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10,
+        10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10,
+         9,13,11,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
+        10,10,10,12,12, 9,11,12, 7,10,11,10,12,12,10,13,
+        11,
 };
 
-static long _vq_quantlist__16u0__p7_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _16u1__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u1__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16u1__p1_0,
+        0
 };
 
-static long _vq_lengthlist__16u0__p7_0[] = {
-	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const long _vq_quantlist__16u1__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__16u0__p7_0[] = {
-	-157.5, 157.5, 
+static const char _vq_lengthlist__16u1__p2_0[] = {
+         3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
+         7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
+         8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8,
+         7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+         8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 7,10,
+         8,
 };
 
-static long _vq_quantmap__16u0__p7_0[] = {
-	    1,    0,    2,
+static const static_codebook _16u1__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u1__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__16u1__p2_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p7_0 = {
-	_vq_quantthresh__16u0__p7_0,
-	_vq_quantmap__16u0__p7_0,
-	3,
-	3
+static const long _vq_quantlist__16u1__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _16u0__p7_0 = {
-	4, 81,
-	_vq_lengthlist__16u0__p7_0,
-	1, -518803456, 1628680192, 2, 0,
-	_vq_quantlist__16u0__p7_0,
-	NULL,
-	&_vq_auxt__16u0__p7_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16u1__p3_0[] = {
+         1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
+        10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9,
+        10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11,
+        13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
+        11,10,11,11,13,13,10,11,11,13,12, 9,11,11,14,13,
+        10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,
+        13,13,16,14, 9,11,11,13,14,10,11,12,14,14,10,12,
+        12,14,15,12,13,13,14,15,12,13,14,15,16, 5, 8, 8,
+        11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+        14,11,12,12,14,14, 8,10,10,12,12, 9,11,12,12,13,
+        10,12,12,13,13,12,12,13,14,15,11,13,13,15,15, 7,
+        10,10,12,12, 9,12,11,13,12,10,11,12,13,13,12,13,
+        12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,
+        16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,
+        17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,
+        13,15,13,16,15,13,15,15,16,17, 5, 8, 8,11,11, 8,
+        10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+        12,14,14, 7,10,10,12,12,10,12,12,14,13, 9,11,12,
+        12,13,12,13,13,15,15,12,12,13,13,15, 7,10,10,12,
+        13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,
+        12,13,12,15,14, 9,12,12,15,14,11,13,13,15,15,11,
+        12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,
+        12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,
+        17,18,14,15,13,16,15, 8,11,11,15,14,10,12,12,16,
+        15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,
+         9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,
+        15,15,17,18,14,15,16,17,17, 9,12,12,15,15,11,14,
+        13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,
+        17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,
+        17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,
+        13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,
+        17,16,19,18, 8,11,11,14,15,10,12,12,15,15,10,12,
+        12,16,16,13,14,14,17,16,14,15,15,17,17, 9,12,12,
+        15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,
+        17,14,16,16,17,17, 9,12,12,15,16,11,13,13,16,17,
+        11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,
+        14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,
+        16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,
+        17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,
+        16,
 };
 
-static long _vq_quantlist__16u0__p7_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const static_codebook _16u1__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16u1__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16u1__p3_0,
+        0
 };
 
-static long _vq_lengthlist__16u0__p7_1[] = {
-	 1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5,
-	 8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8,
-	 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8,
-	10,10,10,10,10,10,10,10,10,10,10,10, 4, 8, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const long _vq_quantlist__16u1__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__16u0__p7_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const char _vq_lengthlist__16u1__p4_0[] = {
+         4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9,
+        10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7,
+         8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10,
+        11,12, 6, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 7,10,
+        10, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
+        10,10,10,12,12, 9,10,10,12,12,12,11,12,13,13,11,
+        11,12,12,13, 9,10,10,11,12, 9,10,10,12,12,10,10,
+        10,12,12,11,12,11,14,13,11,12,12,14,13, 5, 7, 7,
+        10,10, 7, 8, 8,10,10, 7, 8, 7,10,10,10,10,10,12,
+        12,10,10,10,12,12, 6, 8, 7,10,10, 7, 7, 9,10,11,
+         8, 9, 9,11,10,10,10,11,11,13,10,10,11,12,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,10,11,10,11,
+        10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,
+        12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,
+        14, 9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,
+        11,12,11,14,12,12,13,13,15,14, 5, 7, 7,10,10, 7,
+         7, 8,10,10, 7, 8, 8,10,10,10,10,10,11,12,10,10,
+        10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
+        10,11,10,11,11,12,12,10,10,11,11,13, 7, 7, 8,10,
+        10, 8, 8, 9,10,11, 7, 9, 7,11,10,10,11,11,13,12,
+        11,11,10,13,11, 9,10,10,12,12,10,11,11,13,12,10,
+        10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,
+        11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,
+        15,14,12,13,10,14,11, 8,10,10,12,12,10,11,10,13,
+        13, 9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,
+         9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,
+        12,13,14,15,12,13,12,15,13, 9,10,10,12,13,10,11,
+        10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,
+        14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,
+        14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,
+        11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,
+        14,14,15,15, 8,10,10,12,12, 9,10,10,12,12,10,10,
+        11,13,13,11,12,12,13,13,12,13,13,14,15, 9,10,10,
+        13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,
+        14,12,12,13,13,16, 9, 9,10,12,13,10,10,11,12,13,
+        10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,
+        12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,
+        14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,
+        14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,
+        11,
 };
 
-static long _vq_quantmap__16u0__p7_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const static_codebook _16u1__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__16u1__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__16u1__p4_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p7_1 = {
-	_vq_quantthresh__16u0__p7_1,
-	_vq_quantmap__16u0__p7_1,
-	15,
-	15
+static const long _vq_quantlist__16u1__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static static_codebook _16u0__p7_1 = {
-	2, 225,
-	_vq_lengthlist__16u0__p7_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__16u0__p7_1,
-	NULL,
-	&_vq_auxt__16u0__p7_1,
-	NULL,
-	0
+static const char _vq_lengthlist__16u1__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+        10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+         9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
+        10, 9,11,11,12,11, 7, 8, 8, 9, 9,11,11,12,12, 9,
+        10,10,11,11,12,12,13,12, 9,10,10,11,11,12,12,12,
+        13,
 };
 
-static long _vq_quantlist__16u0__p7_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
+static const static_codebook _16u1__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16u1__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16u1__p5_0,
+        0
 };
 
-static long _vq_lengthlist__16u0__p7_2[] = {
-	 1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10,
-	 9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11,
-	11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8,
-	 8,11, 9,11,11,12,11,12,12,10,11,11,10,10,11, 7,
-	10, 9, 9, 9, 9, 9,10, 9,10, 9,10,10,12,10,10,10,
-	11,12,10,10, 7, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9,
-	11,11,10,10,10,10, 9, 9,12, 7, 9,10, 9,11, 9,10,
-	 9,10,11,11,11,10,11,12, 9,12,11,10,10,10, 7, 9,
-	 9, 9, 9,10,12,10, 9,11,12,10,11,12,12,11, 9,10,
-	11,10,11, 7, 9,10,10,11,10, 9,10,11,11,11,10,12,
-	12,12,11,11,10,11,11,12, 8, 9,10,12,11,10,10,12,
-	12,12,12,12,10,11,11, 9,11,10,12,11,11, 8, 9,10,
-	10,11,12,11,11,10,10,10,12,12,12, 9,10,12,12,12,
-	12,12, 8,10,11,10,10,12, 9,11,12,12,11,12,12,12,
-	12,10,12,10,10,10,10, 8,12,11,11,11,10,10,11,12,
-	12,12,12,11,12,12,12,11,11,11,12,10, 9,10,10,12,
-	10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,
-	11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,
-	12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,
-	12,12,12,11,12,11,10,11,11,12,11,11, 9,10,10,10,
-	12,10,10,11, 9,11,12,11,12,11,12,12,10,11,10,12,
-	 9, 9, 9,12,11,10,11,10,12,10,12,10,12,12,12,11,
-	11,11,11,11,10, 9,10,10,11,10,11,11,12,11,10,11,
-	12,12,12,11,11, 9,12,10,12, 9,10,12,10,10,11,10,
-	11,11,12,11,10,11,10,11,11,11,11,12,11,11,10, 9,
-	10,10,10, 9,11,11,10, 9,12,10,11,12,11,12,12,11,
-	12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,
-	10,10,12,11,10,11,11,11,10,
+static const long _vq_quantlist__16u1__p6_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static float _vq_quantthresh__16u0__p7_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const char _vq_lengthlist__16u1__p6_0[] = {
+         3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8,
+         9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
+         8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
+         8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
+         9, 9,10,10,10,10,11,11, 9, 9, 9,10,10,10,10,11,
+        11,
 };
 
-static long _vq_quantmap__16u0__p7_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const static_codebook _16u1__p6_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__16u1__p6_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16u1__p6_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__16u0__p7_2 = {
-	_vq_quantthresh__16u0__p7_2,
-	_vq_quantmap__16u0__p7_2,
-	21,
-	21
+static const long _vq_quantlist__16u1__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _16u0__p7_2 = {
-	2, 441,
-	_vq_lengthlist__16u0__p7_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__16u0__p7_2,
-	NULL,
-	&_vq_auxt__16u0__p7_2,
-	NULL,
-	0
+static const char _vq_lengthlist__16u1__p7_0[] = {
+         1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8,
+        12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14,
+        13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14,
+        13,16,14,12,15,16, 4,11,11,10,14,13,11,14,14, 8,
+        15,14,12,15,15,12,14,16, 8,14,14,11,16,15,12,15,
+        13,
 };
 
-static long _huff_lengthlist__16u0__single[] = {
-	 3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19,
-	 8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19,
-	12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19,
-	 8, 8,10, 7, 7, 4, 5,19,12,17,19,15,18,13,11,18,
+static const static_codebook _16u1__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__16u1__p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__16u1__p7_0,
+        0
 };
 
-static static_codebook _huff_book__16u0__single = {
-	2, 64,
-	_huff_lengthlist__16u0__single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__16u1__p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _huff_lengthlist__16u1__long[] = {
-	 3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6,
-	11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4,
-	 7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9,
-	18,18, 7, 5, 8, 5, 7, 5, 8, 6,18,18,12, 9,10, 9,
-	 9, 9, 8, 9,18,18, 8, 7,10, 6, 8, 5, 6, 4,11,18,
-	11,15,16,12,11, 8, 8, 6, 9,18,14,18,18,18,16,16,
-	16,13,16,18,
+static const char _vq_lengthlist__16u1__p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7,
+         8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8,
+         8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 9, 9,10,
+         9,10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10, 9, 8, 8, 8,
+         9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,10,
+        10,10,10, 8, 8, 8, 9, 9, 9,10,10,10,10,10, 8, 8,
+         8, 9, 9,10,10,10,10,10,10,
 };
 
-static static_codebook _huff_book__16u1__long = {
-	2, 100,
-	_huff_lengthlist__16u1__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _16u1__p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__16u1__p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16u1__p7_1,
+        0
 };
 
-static long _vq_quantlist__16u1__p1_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__16u1__p8_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__16u1__p1_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7,
-	 9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10,
-	10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10,
-	 9,13,11,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
-	10,10,10,12,12, 9,11,12, 7,10,11,10,12,12,10,13,
-	11,
+static const char _vq_lengthlist__16u1__p8_0[] = {
+         1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8,
+         9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13,
+        12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9,
+         9,11,11,13,13,17,15, 8, 9,10,11,11,12,13,17,14,
+        17,16, 8,10, 9,11,11,12,12,13,15,15,17,10,11,11,
+        12,13,14,15,15,16,16,17, 9,11,11,12,12,14,15,17,
+        15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,
+        13,14,14,15,15,16,16,15,16,
 };
 
-static float _vq_quantthresh__16u1__p1_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _16u1__p8_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__16u1__p8_0,
+        1, -524582912, 1618345984, 4, 0,
+        (long *)_vq_quantlist__16u1__p8_0,
+        0
 };
 
-static long _vq_quantmap__16u1__p1_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__16u1__p8_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__16u1__p1_0 = {
-	_vq_quantthresh__16u1__p1_0,
-	_vq_quantmap__16u1__p1_0,
-	3,
-	3
+static const char _vq_lengthlist__16u1__p8_1[] = {
+         2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7,
+         8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8,
+         8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7,
+         7, 8, 8, 8, 8, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
+         8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8,
+         8, 9, 9, 9, 9, 9, 9, 9, 9,
 };
 
-static static_codebook _16u1__p1_0 = {
-	4, 81,
-	_vq_lengthlist__16u1__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16u1__p1_0,
-	NULL,
-	&_vq_auxt__16u1__p1_0,
-	NULL,
-	0
+static const static_codebook _16u1__p8_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__16u1__p8_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__16u1__p8_1,
+        0
 };
 
-static long _vq_quantlist__16u1__p2_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__16u1__p9_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__16u1__p2_0[] = {
-	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
-	 8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8,
-	 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
-	 8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 7,10,
-	 8,
+static const char _vq_lengthlist__16u1__p9_0[] = {
+         1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8,
 };
 
-static float _vq_quantthresh__16u1__p2_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _16u1__p9_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__16u1__p9_0,
+        1, -514071552, 1627381760, 4, 0,
+        (long *)_vq_quantlist__16u1__p9_0,
+        0
 };
 
-static long _vq_quantmap__16u1__p2_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__16u1__p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static encode_aux_threshmatch _vq_auxt__16u1__p2_0 = {
-	_vq_quantthresh__16u1__p2_0,
-	_vq_quantmap__16u1__p2_0,
-	3,
-	3
+static const char _vq_lengthlist__16u1__p9_1[] = {
+         1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5,
+        10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8,
+         9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10,
+        10,10,10,10, 9, 9,10,10,10,10,10,10, 9, 9, 8, 9,
+        10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10, 8,10,10,10,10,
+        10,10,10,10,10,10,10,10,10, 6, 8, 8,10,10,10, 8,
+        10,10,10,10,10,10,10,10, 5, 8, 8,10,10,10, 9, 9,
+        10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,
 };
 
-static static_codebook _16u1__p2_0 = {
-	4, 81,
-	_vq_lengthlist__16u1__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16u1__p2_0,
-	NULL,
-	&_vq_auxt__16u1__p2_0,
-	NULL,
-	0
+static const static_codebook _16u1__p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__16u1__p9_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__16u1__p9_1,
+        0
 };
 
-static long _vq_quantlist__16u1__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__16u1__p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__16u1__p3_0[] = {
-	 1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
-	10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9,
-	10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11,
-	13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
-	11,10,11,11,13,13,10,11,11,13,12, 9,11,11,14,13,
-	10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,
-	13,13,16,14, 9,11,11,13,14,10,11,12,14,14,10,12,
-	12,14,15,12,13,13,14,15,12,13,14,15,16, 5, 8, 8,
-	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
-	14,11,12,12,14,14, 8,10,10,12,12, 9,11,12,12,13,
-	10,12,12,13,13,12,12,13,14,15,11,13,13,15,15, 7,
-	10,10,12,12, 9,12,11,13,12,10,11,12,13,13,12,13,
-	12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,
-	16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,
-	17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,
-	13,15,13,16,15,13,15,15,16,17, 5, 8, 8,11,11, 8,
-	10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
-	12,14,14, 7,10,10,12,12,10,12,12,14,13, 9,11,12,
-	12,13,12,13,13,15,15,12,12,13,13,15, 7,10,10,12,
-	13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,
-	12,13,12,15,14, 9,12,12,15,14,11,13,13,15,15,11,
-	12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,
-	12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,
-	17,18,14,15,13,16,15, 8,11,11,15,14,10,12,12,16,
-	15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,
-	 9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,
-	15,15,17,18,14,15,16,17,17, 9,12,12,15,15,11,14,
-	13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,
-	17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,
-	17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,
-	13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,
-	17,16,19,18, 8,11,11,14,15,10,12,12,15,15,10,12,
-	12,16,16,13,14,14,17,16,14,15,15,17,17, 9,12,12,
-	15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,
-	17,14,16,16,17,17, 9,12,12,15,16,11,13,13,16,17,
-	11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,
-	14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,
-	16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,
-	17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,
-	16,
-};
-
-static float _vq_quantthresh__16u1__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16u1__p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p3_0 = {
-	_vq_quantthresh__16u1__p3_0,
-	_vq_quantmap__16u1__p3_0,
-	5,
-	5
-};
-
-static static_codebook _16u1__p3_0 = {
-	4, 625,
-	_vq_lengthlist__16u1__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u1__p3_0,
-	NULL,
-	&_vq_auxt__16u1__p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__16u1__p4_0[] = {
-	 4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9,
-	10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7,
-	 8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 7,10,
-	10, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
-	10,10,10,12,12, 9,10,10,12,12,12,11,12,13,13,11,
-	11,12,12,13, 9,10,10,11,12, 9,10,10,12,12,10,10,
-	10,12,12,11,12,11,14,13,11,12,12,14,13, 5, 7, 7,
-	10,10, 7, 8, 8,10,10, 7, 8, 7,10,10,10,10,10,12,
-	12,10,10,10,12,12, 6, 8, 7,10,10, 7, 7, 9,10,11,
-	 8, 9, 9,11,10,10,10,11,11,13,10,10,11,12,13, 6,
-	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,10,11,10,11,
-	10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,
-	12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,
-	14, 9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,
-	11,12,11,14,12,12,13,13,15,14, 5, 7, 7,10,10, 7,
-	 7, 8,10,10, 7, 8, 8,10,10,10,10,10,11,12,10,10,
-	10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
-	10,11,10,11,11,12,12,10,10,11,11,13, 7, 7, 8,10,
-	10, 8, 8, 9,10,11, 7, 9, 7,11,10,10,11,11,13,12,
-	11,11,10,13,11, 9,10,10,12,12,10,11,11,13,12,10,
-	10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,
-	11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,
-	15,14,12,13,10,14,11, 8,10,10,12,12,10,11,10,13,
-	13, 9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,
-	 9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,
-	12,13,14,15,12,13,12,15,13, 9,10,10,12,13,10,11,
-	10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,
-	14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,
-	14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,
-	11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,
-	14,14,15,15, 8,10,10,12,12, 9,10,10,12,12,10,10,
-	11,13,13,11,12,12,13,13,12,13,13,14,15, 9,10,10,
-	13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,
-	14,12,12,13,13,16, 9, 9,10,12,13,10,10,11,12,13,
-	10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,
-	12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,
-	14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,
-	14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,
-	11,
-};
-
-static float _vq_quantthresh__16u1__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16u1__p4_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p4_0 = {
-	_vq_quantthresh__16u1__p4_0,
-	_vq_quantmap__16u1__p4_0,
-	5,
-	5
-};
-
-static static_codebook _16u1__p4_0 = {
-	4, 625,
-	_vq_lengthlist__16u1__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u1__p4_0,
-	NULL,
-	&_vq_auxt__16u1__p4_0,
-	NULL,
-	0
+static const char _vq_lengthlist__16u1__p9_2[] = {
+         1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11,
+         9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10,
+        11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11,
+         9,10,11, 8, 9, 6, 8, 8, 9, 9,10,10,11,11,11, 9,
+        11,10, 9,11, 8, 8, 8, 9, 8, 9,10,11, 9, 9,11,11,
+        10, 9, 9,11,10, 8,11, 8, 9, 8,11, 9,10, 9,10,11,
+        11,10,10, 9,10,10, 8, 8, 9,10,10,10, 9,11, 9,10,
+        11,11,11,11,10, 9,11, 9, 9,11,11,10, 8,11,11,11,
+         9,10,10,11,10,11,11, 9,11,10, 9,11,10,10,10,10,
+         9,11,10,11,10, 9, 9,10,11, 9, 8,10,11,11,10,10,
+        11, 9,11,10,11,11,10,11, 9, 9, 8,10, 8, 9,11, 9,
+         8,10,10, 9,11,10,11,10,11, 9,11, 8,10,11,11,11,
+        11,10,10,11,11,11,11,10,11,11,10, 9, 8,10,10, 9,
+        11,10,11,11,11, 9, 9, 9,11,11,11,10,10, 9, 9,10,
+         9,11,11,11,11, 8,10,11,10,11,11,10,11,11, 9, 9,
+         9,10, 9,11, 9,11,11,11,11,11,10,11,11,10,11,10,
+        11,11, 9,11,10,11,10, 9,10, 9,10,10,11,11,11,11,
+         9,10, 9,10,11,11,10,11,11,11,11,11,11,10,11,11,
+        10,
 };
 
-static long _vq_quantlist__16u1__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const static_codebook _16u1__p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__16u1__p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__16u1__p9_2,
+        0
 };
 
-static long _vq_lengthlist__16u1__p5_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
-	10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
-	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
-	10, 9,11,11,12,11, 7, 8, 8, 9, 9,11,11,12,12, 9,
-	10,10,11,11,12,12,13,12, 9,10,10,11,11,12,12,12,
-	13,
+static const char _huff_lengthlist__16u1__short[] = {
+         5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7,
+        10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6,
+         7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9,
+        15,16, 9, 6, 6, 5, 6, 6, 9, 8,14,16,12, 7, 6, 6,
+         5, 6, 6, 7,13,16, 8, 6, 7, 6, 5, 5, 4, 4,11,16,
+         9, 8, 9, 9, 7, 7, 6, 5,13,16,14,14,16,15,16,15,
+        16,16,16,16,
 };
 
-static float _vq_quantthresh__16u1__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _huff_book__16u1__short = {
+        2, 100,
+        (char *)_huff_lengthlist__16u1__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__16u1__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _huff_lengthlist__16u2__long[] = {
+	 5, 8,10,10,10,11,11,12,14,18, 7, 5, 5, 6, 8, 9,
+	10,12,14,17, 9, 5, 4, 5, 6, 8,10,11,13,19, 9, 5,
+	 4, 4, 5, 6, 9,10,12,17, 8, 6, 5, 4, 4, 5, 7,10,
+	11,15, 8, 7, 7, 6, 5, 5, 6, 9,11,14, 8, 9, 8, 7,
+	 6, 5, 6, 7,11,14, 9,11,11, 9, 7, 6, 6, 6, 9,14,
+	11,14,15,13, 9, 8, 7, 7, 9,14,13,15,19,17,12,11,
+	10, 9,10,14,
 };
 
-static encode_aux_threshmatch _vq_auxt__16u1__p5_0 = {
-	_vq_quantthresh__16u1__p5_0,
-	_vq_quantmap__16u1__p5_0,
-	9,
-	9
-};
-
-static static_codebook _16u1__p5_0 = {
-	2, 81,
-	_vq_lengthlist__16u1__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16u1__p5_0,
-	NULL,
-	&_vq_auxt__16u1__p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p6_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__16u1__p6_0[] = {
-	 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8,
-	 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
-	 8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
-	 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
-	 9, 9,10,10,10,10,11,11, 9, 9, 9,10,10,10,10,11,
-	11,
-};
-
-static float _vq_quantthresh__16u1__p6_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__16u1__p6_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p6_0 = {
-	_vq_quantthresh__16u1__p6_0,
-	_vq_quantmap__16u1__p6_0,
-	9,
-	9
-};
-
-static static_codebook _16u1__p6_0 = {
-	2, 81,
-	_vq_lengthlist__16u1__p6_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16u1__p6_0,
-	NULL,
-	&_vq_auxt__16u1__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__16u1__p7_0[] = {
-	 1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8,
-	12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14,
-	13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14,
-	13,16,14,12,15,16, 4,11,11,10,14,13,11,14,14, 8,
-	15,14,12,15,15,12,14,16, 8,14,14,11,16,15,12,15,
-	13,
-};
-
-static float _vq_quantthresh__16u1__p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__16u1__p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p7_0 = {
-	_vq_quantthresh__16u1__p7_0,
-	_vq_quantmap__16u1__p7_0,
-	3,
-	3
-};
-
-static static_codebook _16u1__p7_0 = {
-	4, 81,
-	_vq_lengthlist__16u1__p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__16u1__p7_0,
-	NULL,
-	&_vq_auxt__16u1__p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__16u1__p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7,
-	 8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8,
-	 8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 9, 9,10,
-	 9,10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10, 9, 8, 8, 8,
-	 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,10,
-	10,10,10, 8, 8, 8, 9, 9, 9,10,10,10,10,10, 8, 8,
-	 8, 9, 9,10,10,10,10,10,10,
-};
-
-static float _vq_quantthresh__16u1__p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16u1__p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p7_1 = {
-	_vq_quantthresh__16u1__p7_1,
-	_vq_quantmap__16u1__p7_1,
-	11,
-	11
-};
-
-static static_codebook _16u1__p7_1 = {
-	2, 121,
-	_vq_lengthlist__16u1__p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16u1__p7_1,
-	NULL,
-	&_vq_auxt__16u1__p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p8_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__16u1__p8_0[] = {
-	 1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8,
-	 9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13,
-	12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9,
-	 9,11,11,13,13,17,15, 8, 9,10,11,11,12,13,17,14,
-	17,16, 8,10, 9,11,11,12,12,13,15,15,17,10,11,11,
-	12,13,14,15,15,16,16,17, 9,11,11,12,12,14,15,17,
-	15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,
-	13,14,14,15,15,16,16,15,16,
-};
-
-static float _vq_quantthresh__16u1__p8_0[] = {
-	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
-	38.5, 49.5, 
-};
-
-static long _vq_quantmap__16u1__p8_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p8_0 = {
-	_vq_quantthresh__16u1__p8_0,
-	_vq_quantmap__16u1__p8_0,
-	11,
-	11
-};
-
-static static_codebook _16u1__p8_0 = {
-	2, 121,
-	_vq_lengthlist__16u1__p8_0,
-	1, -524582912, 1618345984, 4, 0,
-	_vq_quantlist__16u1__p8_0,
-	NULL,
-	&_vq_auxt__16u1__p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p8_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__16u1__p8_1[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7,
-	 8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8,
-	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7,
-	 7, 8, 8, 8, 8, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
-	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8,
-	 8, 9, 9, 9, 9, 9, 9, 9, 9,
-};
-
-static float _vq_quantthresh__16u1__p8_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16u1__p8_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p8_1 = {
-	_vq_quantthresh__16u1__p8_1,
-	_vq_quantmap__16u1__p8_1,
-	11,
-	11
-};
-
-static static_codebook _16u1__p8_1 = {
-	2, 121,
-	_vq_lengthlist__16u1__p8_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16u1__p8_1,
-	NULL,
-	&_vq_auxt__16u1__p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p9_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__16u1__p9_0[] = {
-	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8,
-};
-
-static float _vq_quantthresh__16u1__p9_0[] = {
-	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
-	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
-};
-
-static long _vq_quantmap__16u1__p9_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p9_0 = {
-	_vq_quantthresh__16u1__p9_0,
-	_vq_quantmap__16u1__p9_0,
-	15,
-	15
-};
-
-static static_codebook _16u1__p9_0 = {
-	2, 225,
-	_vq_lengthlist__16u1__p9_0,
-	1, -514071552, 1627381760, 4, 0,
-	_vq_quantlist__16u1__p9_0,
-	NULL,
-	&_vq_auxt__16u1__p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__16u1__p9_1[] = {
-	 1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5,
-	10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8,
-	 9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10,
-	10,10,10,10, 9, 9,10,10,10,10,10,10, 9, 9, 8, 9,
-	10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10, 8,10,10,10,10,
-	10,10,10,10,10,10,10,10,10, 6, 8, 8,10,10,10, 8,
-	10,10,10,10,10,10,10,10, 5, 8, 8,10,10,10, 9, 9,
-	10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__16u1__p9_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
-};
-
-static long _vq_quantmap__16u1__p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p9_1 = {
-	_vq_quantthresh__16u1__p9_1,
-	_vq_quantmap__16u1__p9_1,
-	15,
-	15
-};
-
-static static_codebook _16u1__p9_1 = {
-	2, 225,
-	_vq_lengthlist__16u1__p9_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__16u1__p9_1,
-	NULL,
-	&_vq_auxt__16u1__p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u1__p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__16u1__p9_2[] = {
-	 1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11,
-	 9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10,
-	11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11,
-	 9,10,11, 8, 9, 6, 8, 8, 9, 9,10,10,11,11,11, 9,
-	11,10, 9,11, 8, 8, 8, 9, 8, 9,10,11, 9, 9,11,11,
-	10, 9, 9,11,10, 8,11, 8, 9, 8,11, 9,10, 9,10,11,
-	11,10,10, 9,10,10, 8, 8, 9,10,10,10, 9,11, 9,10,
-	11,11,11,11,10, 9,11, 9, 9,11,11,10, 8,11,11,11,
-	 9,10,10,11,10,11,11, 9,11,10, 9,11,10,10,10,10,
-	 9,11,10,11,10, 9, 9,10,11, 9, 8,10,11,11,10,10,
-	11, 9,11,10,11,11,10,11, 9, 9, 8,10, 8, 9,11, 9,
-	 8,10,10, 9,11,10,11,10,11, 9,11, 8,10,11,11,11,
-	11,10,10,11,11,11,11,10,11,11,10, 9, 8,10,10, 9,
-	11,10,11,11,11, 9, 9, 9,11,11,11,10,10, 9, 9,10,
-	 9,11,11,11,11, 8,10,11,10,11,11,10,11,11, 9, 9,
-	 9,10, 9,11, 9,11,11,11,11,11,10,11,11,10,11,10,
-	11,11, 9,11,10,11,10, 9,10, 9,10,10,11,11,11,11,
-	 9,10, 9,10,11,11,10,11,11,11,11,11,11,10,11,11,
-	10,
-};
-
-static float _vq_quantthresh__16u1__p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__16u1__p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u1__p9_2 = {
-	_vq_quantthresh__16u1__p9_2,
-	_vq_quantmap__16u1__p9_2,
-	17,
-	17
-};
-
-static static_codebook _16u1__p9_2 = {
-	2, 289,
-	_vq_lengthlist__16u1__p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__16u1__p9_2,
-	NULL,
-	&_vq_auxt__16u1__p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16u1__short[] = {
-	 5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7,
-	10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6,
-	 7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9,
-	15,16, 9, 6, 6, 5, 6, 6, 9, 8,14,16,12, 7, 6, 6,
-	 5, 6, 6, 7,13,16, 8, 6, 7, 6, 5, 5, 4, 4,11,16,
-	 9, 8, 9, 9, 7, 7, 6, 5,13,16,14,14,16,15,16,15,
-	16,16,16,16,
-};
-
-static static_codebook _huff_book__16u1__short = {
+static const static_codebook _huff_book__16u2__long = {
 	2, 100,
-	_huff_lengthlist__16u1__short,
+	(char *)_huff_lengthlist__16u2__long,
 	0, 0, 0, 0, 0,
 	NULL,
-	NULL,
-	NULL,
-	NULL,
 	0
 };
 
-static long _huff_lengthlist__16u2__long[] = {
-	 5, 7,10,10,10,11,11,13,18,19, 6, 5, 5, 6, 7, 8,
-	 9,12,19,19, 8, 5, 4, 4, 6, 7, 9,13,19,19, 8, 5,
-	 4, 4, 5, 6, 8,12,17,19, 7, 5, 5, 4, 4, 5, 7,12,
-	18,18, 8, 7, 7, 6, 5, 5, 6,10,18,18, 9, 9, 9, 8,
-	 6, 5, 6, 9,18,18,11,13,13,13, 8, 7, 7, 9,16,18,
-	13,17,18,16,11, 9, 9, 9,17,18,15,18,18,18,15,13,
-	13,14,18,18,
-};
-
-static static_codebook _huff_book__16u2__long = {
-	2, 100,
-	_huff_lengthlist__16u2__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__16u2__short[] = {
-	 8,11,12,12,14,15,16,16,16,16, 9, 7, 7, 8, 9,11,
-	13,14,16,16,13, 7, 6, 6, 7, 9,12,13,15,16,15, 7,
-	 6, 5, 4, 6,10,11,14,16,12, 8, 7, 4, 2, 4, 7,10,
-	14,16,11, 9, 7, 5, 3, 4, 6, 9,14,16,11,10, 9, 7,
-	 5, 5, 6, 9,16,16,10,10, 9, 8, 6, 6, 7,10,16,16,
-	11,11,11,10,10,10,11,14,16,16,16,14,14,13,14,16,
-	16,16,16,16,
-};
-
-static static_codebook _huff_book__16u2__short = {
-	2, 100,
-	_huff_lengthlist__16u2__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__16u2_p1_0[] = {
+static const long _vq_quantlist__16u2_p1_0[] = {
 	1,
 	0,
 	2,
 };
 
-static long _vq_lengthlist__16u2_p1_0[] = {
+static const char _vq_lengthlist__16u2_p1_0[] = {
 	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
-	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 8, 9,
-	 9, 7, 9, 9, 7, 9, 9, 9,10,10, 9,10,10, 7, 9, 9,
-	 9,10,10, 9,10,11, 5, 7, 8, 8, 9, 9, 8, 9, 9, 7,
-	 9, 9, 9,10,10, 9, 9,10, 7, 9, 9, 9,10,10, 9,11,
+	 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 8, 9,
+	 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,10,10, 7, 9, 9,
+	 9,10, 9, 9,10,11, 5, 8, 7, 7, 9, 9, 8, 9, 9, 7,
+	 9, 9, 9,11,10, 9, 9,10, 7, 9, 9, 9,10,10, 9,11,
 	10,
 };
 
-static float _vq_quantthresh__16u2_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__16u2_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p1_0 = {
-	_vq_quantthresh__16u2_p1_0,
-	_vq_quantmap__16u2_p1_0,
-	3,
-	3
-};
-
-static static_codebook _16u2_p1_0 = {
+static const static_codebook _16u2_p1_0 = {
 	4, 81,
-	_vq_lengthlist__16u2_p1_0,
+	(char *)_vq_lengthlist__16u2_p1_0,
 	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__16u2_p1_0,
-	NULL,
-	&_vq_auxt__16u2_p1_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p1_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p2_0[] = {
+static const long _vq_quantlist__16u2_p2_0[] = {
 	2,
 	1,
 	3,
@@ -1469,76 +981,58 @@
 	4,
 };
 
-static long _vq_lengthlist__16u2_p2_0[] = {
+static const char _vq_lengthlist__16u2_p2_0[] = {
 	 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
 	10, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
 	 8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10,
 	11,12, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,
 	10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,12,12,
-	10,11,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
+	10,10,10,12,12, 9,10,10,12,12,12,12,12,14,14,11,
 	12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
-	10,12,12,11,12,12,14,13,12,13,12,14,14, 5, 7, 7,
-	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
-	12,10,10,11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
-	 8, 9, 9,11,11,11,11,11,12,13,10,11,11,12,13, 7,
+	10,12,12,11,12,12,14,13,12,12,12,14,13, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+	12,10,10,10,12,12, 7, 8, 8,11,10, 8, 9, 9,11,11,
+	 8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 7,
 	 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
-	10,13,12,10,11,11,13,13, 9,11,10,13,13,10,11,11,
-	13,13,10,11,11,13,13,12,12,13,13,15,12,12,13,14,
-	15, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
-	11,13,11,14,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
+	10,13,12,10,11,11,13,13,10,11,10,13,12,10,11,11,
+	13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,
+	14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
+	12,13,12,14,13,12,13,13,14,15, 5, 7, 7, 9,10, 7,
 	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
 	11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
 	10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
-	11, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12,
-	11,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
-	10,11,12,13,12,13,13,15,14,11,11,13,12,14,10,10,
-	11,13,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
-	14,14,12,13,12,14,13, 8,10, 9,12,12, 9,11,10,13,
-	13, 9,10,10,12,13,12,13,13,14,14,12,12,13,14,14,
-	 9,11,10,13,13,10,11,11,13,13,10,11,11,13,13,12,
-	13,13,15,15,13,13,13,14,15, 9,10,10,12,13,10,11,
-	10,13,12,10,11,11,13,13,12,13,12,15,14,13,13,13,
-	14,15,11,12,12,15,14,12,12,13,15,15,12,13,13,15,
-	14,14,13,15,14,16,13,14,15,16,16,11,12,12,14,14,
-	11,12,12,15,14,12,13,13,15,15,13,14,13,16,14,14,
-	14,14,16,16, 8, 9, 9,12,12, 9,10,10,13,12, 9,10,
-	10,13,13,12,12,12,14,14,12,12,13,15,15, 9,10,10,
-	13,12,10,11,11,13,13,10,10,11,13,14,12,13,13,15,
-	15,12,12,13,14,15, 9,10,10,13,13,10,11,11,13,13,
-	10,11,11,13,13,12,13,13,14,14,13,14,13,15,14,11,
-	12,12,14,14,12,13,13,15,14,11,12,12,14,15,14,14,
-	14,16,15,13,12,14,14,16,11,12,13,14,15,12,13,13,
-	14,16,12,13,12,15,14,13,15,14,16,16,14,15,13,16,
-	13,
+	10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12,
+	10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
+	10,11,12,13,12,13,13,15,14,12,12,13,12,14, 9,10,
+	11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
+	14,14,12,13,12,14,13, 8,10,10,12,12, 9,11,10,13,
+	12, 9,10,10,12,13,12,13,13,14,14,12,12,12,14,14,
+	 9,10,10,13,13,10,11,11,13,13,10,11,11,13,13,13,
+	13,13,14,15,12,13,13,14,15, 9,10,10,12,13,10,11,
+	10,13,13,10,11,11,12,13,12,13,12,15,14,12,13,13,
+	14,15,11,12,12,15,14,12,12,13,14,15,12,13,13,15,
+	14,13,13,15,14,16,14,14,14,16,15,11,12,12,14,14,
+	11,12,12,14,14,12,13,13,14,15,13,14,13,15,13,14,
+	14,14,15,16, 8, 9,10,12,12, 9,10,10,13,12, 9,10,
+	11,12,13,12,12,12,14,14,12,13,13,14,14, 9,10,10,
+	13,12,10,11,11,13,13,10,10,11,13,13,12,13,13,15,
+	14,12,12,13,14,15, 9,10,10,13,13,10,11,11,13,13,
+	10,11,11,13,13,12,13,13,14,14,13,13,13,15,15,11,
+	12,12,14,13,12,13,13,15,14,11,12,12,14,14,14,14,
+	14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,
+	14,15,12,13,12,14,14,14,14,14,16,16,14,15,13,16,
+	14,
 };
 
-static float _vq_quantthresh__16u2_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16u2_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p2_0 = {
-	_vq_quantthresh__16u2_p2_0,
-	_vq_quantmap__16u2_p2_0,
-	5,
-	5
-};
-
-static static_codebook _16u2_p2_0 = {
+static const static_codebook _16u2_p2_0 = {
 	4, 625,
-	_vq_lengthlist__16u2_p2_0,
+	(char *)_vq_lengthlist__16u2_p2_0,
 	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u2_p2_0,
-	NULL,
-	&_vq_auxt__16u2_p2_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p2_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p3_0[] = {
+static const long _vq_quantlist__16u2_p3_0[] = {
 	4,
 	3,
 	5,
@@ -1550,43 +1044,24 @@
 	8,
 };
 
-static long _vq_lengthlist__16u2_p3_0[] = {
+static const char _vq_lengthlist__16u2_p3_0[] = {
 	 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7,
 	 9, 9, 4, 5, 5, 6, 6, 7, 8, 9, 9, 6, 6, 6, 7, 7,
-	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
-	 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
-	 9, 9,10, 9,10,10,11,11, 9, 9, 9,10,10,10,10,11,
+	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
+	 8, 8, 9, 9,11,10, 7, 7, 8, 8, 8, 9, 9,10,11, 9,
+	 9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,10,11,11,
 	11,
 };
 
-static float _vq_quantthresh__16u2_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__16u2_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p3_0 = {
-	_vq_quantthresh__16u2_p3_0,
-	_vq_quantmap__16u2_p3_0,
-	9,
-	9
-};
-
-static static_codebook _16u2_p3_0 = {
+static const static_codebook _16u2_p3_0 = {
 	2, 81,
-	_vq_lengthlist__16u2_p3_0,
+	(char *)_vq_lengthlist__16u2_p3_0,
 	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__16u2_p3_0,
-	NULL,
-	&_vq_auxt__16u2_p3_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p3_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p4_0[] = {
+static const long _vq_quantlist__16u2_p4_0[] = {
 	8,
 	7,
 	9,
@@ -1606,99 +1081,60 @@
 	16,
 };
 
-static long _vq_lengthlist__16u2_p4_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11,
-	11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
-	12,11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
-	11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,
+static const char _vq_lengthlist__16u2_p4_0[] = {
+	 2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11,
+	11, 5, 5, 5, 7, 6, 8, 7, 9, 9, 9, 9,10,10,11,11,
+	12,12, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9,10,10,11,
+	11,12,12, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,
 	10,11,11,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
-	11,11,12,12,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
-	10,11,11,11,12,12,12, 9, 9, 9, 9, 9, 9,10,10,10,
-	10,10,11,11,12,12,13,13, 8, 9, 9, 9, 9,10, 9,10,
-	10,10,10,11,11,12,12,13,13, 9, 9, 9, 9, 9,10,10,
-	10,10,11,11,11,12,12,12,13,13, 9, 9, 9, 9, 9,10,
-	10,10,10,11,11,12,11,12,12,13,13,10,10,10,10,10,
-	11,11,11,11,11,12,12,12,12,13,13,14,10,10,10,10,
-	10,11,11,11,11,12,11,12,12,13,12,13,13,11,11,11,
-	11,11,12,12,12,12,12,12,13,13,13,13,14,14,11,11,
-	11,11,11,12,12,12,12,12,12,13,12,13,13,14,14,11,
-	12,12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,
-	11,12,12,12,12,12,12,13,13,13,13,14,13,14,14,14,
+	11,11,11,11,12,12, 7, 7, 8, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11,12,12, 8, 9, 9, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,12,12, 8, 9, 9, 9, 9, 9, 9,10,
+	10,10,10,11,11,12,12,12,12, 9, 9, 9, 9, 9,10,10,
+	10,10,10,11,11,11,12,12,13,13, 9, 9, 9, 9, 9,10,
+	10,10,10,11,10,11,11,12,12,13,13,10,10,10,10,10,
+	11,11,11,11,11,11,11,12,12,12,13,13,10,10,10,10,
+	10,11,11,11,11,11,11,12,11,12,12,13,13,11,11,11,
+	11,11,11,11,12,12,12,12,12,12,13,13,13,13,11,11,
+	11,11,11,11,11,12,12,12,12,13,12,13,13,13,13,11,
+	12,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14,
+	11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,14,
 	14,
 };
 
-static float _vq_quantthresh__16u2_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__16u2_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p4_0 = {
-	_vq_quantthresh__16u2_p4_0,
-	_vq_quantmap__16u2_p4_0,
-	17,
-	17
-};
-
-static static_codebook _16u2_p4_0 = {
+static const static_codebook _16u2_p4_0 = {
 	2, 289,
-	_vq_lengthlist__16u2_p4_0,
+	(char *)_vq_lengthlist__16u2_p4_0,
 	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__16u2_p4_0,
-	NULL,
-	&_vq_auxt__16u2_p4_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p4_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p5_0[] = {
+static const long _vq_quantlist__16u2_p5_0[] = {
 	1,
 	0,
 	2,
 };
 
-static long _vq_lengthlist__16u2_p5_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10, 9, 7,
-	10, 9, 5, 8, 9, 7, 9,10, 7, 9,10, 4, 9, 9, 9,11,
-	11, 8,11,11, 7,11,11,10,10,13,10,14,13, 7,11,11,
-	10,13,11,10,13,14, 5, 9, 9, 8,11,11, 9,11,11, 7,
-	11,11,10,14,13,10,12,14, 7,11,11,10,13,13,10,13,
-	10,
+static const char _vq_lengthlist__16u2_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9, 9, 7,
+	 9,10, 5, 8, 8, 7,10, 9, 7,10, 9, 5, 8, 8, 8,11,
+	10, 8,10,10, 7,10,10, 9, 9,12,10,12,12, 7,10,10,
+	 9,12,10,10,11,12, 5, 8, 8, 8,10,10, 8,11,11, 7,
+	11,10,10,12,11, 9,10,12, 7,10,11,10,12,12, 9,12,
+	 9,
 };
 
-static float _vq_quantthresh__16u2_p5_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__16u2_p5_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p5_0 = {
-	_vq_quantthresh__16u2_p5_0,
-	_vq_quantmap__16u2_p5_0,
-	3,
-	3
-};
-
-static static_codebook _16u2_p5_0 = {
+static const static_codebook _16u2_p5_0 = {
 	4, 81,
-	_vq_lengthlist__16u2_p5_0,
+	(char *)_vq_lengthlist__16u2_p5_0,
 	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__16u2_p5_0,
-	NULL,
-	&_vq_auxt__16u2_p5_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p5_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p5_1[] = {
+static const long _vq_quantlist__16u2_p5_1[] = {
 	5,
 	4,
 	6,
@@ -1712,46 +1148,26 @@
 	10,
 };
 
-static long _vq_lengthlist__16u2_p5_1[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 7, 7,
-	 7, 7, 8, 8, 8, 8, 5, 5, 6, 7, 7, 7, 7, 8, 8, 8,
+static const char _vq_lengthlist__16u2_p5_1[] = {
+	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7,
+	 7, 7, 8, 8, 8, 8, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8,
 	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
-	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
-	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 9, 9,
 };
 
-static float _vq_quantthresh__16u2_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16u2_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p5_1 = {
-	_vq_quantthresh__16u2_p5_1,
-	_vq_quantmap__16u2_p5_1,
-	11,
-	11
-};
-
-static static_codebook _16u2_p5_1 = {
+static const static_codebook _16u2_p5_1 = {
 	2, 121,
-	_vq_lengthlist__16u2_p5_1,
+	(char *)_vq_lengthlist__16u2_p5_1,
 	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16u2_p5_1,
-	NULL,
-	&_vq_auxt__16u2_p5_1,
-	NULL,
+	(long *)_vq_quantlist__16u2_p5_1,
 	0
 };
 
-static long _vq_quantlist__16u2_p6_0[] = {
+static const long _vq_quantlist__16u2_p6_0[] = {
 	6,
 	5,
 	7,
@@ -1767,49 +1183,29 @@
 	12,
 };
 
-static long _vq_lengthlist__16u2_p6_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
-	 8, 8, 9, 9, 9, 9,10,10,12,11, 4, 6, 6, 8, 8, 9,
-	 9, 9, 9,10,10,11,12, 7, 8, 8, 9, 9,10,10,10,10,
-	12,12,13,12, 7, 8, 8, 9, 9,10,10,10,10,11,12,12,
-	12, 8, 9, 9,10,10,11,11,11,11,12,12,13,13, 8, 9,
-	 9,10,10,11,11,11,11,12,13,13,13, 8, 9, 9,10,10,
-	11,11,12,12,13,13,14,14, 8, 9, 9,10,10,11,11,12,
-	12,13,13,14,14, 9,10,10,11,12,13,12,13,14,14,14,
-	14,14, 9,10,10,11,12,12,13,13,13,14,14,14,14,10,
-	11,11,12,12,13,13,14,14,15,15,15,15,10,11,11,12,
-	12,13,13,14,14,14,14,15,15,
+static const char _vq_lengthlist__16u2_p6_0[] = {
+	 1, 5, 4, 7, 7, 8, 8, 8, 8,10,10,11,11, 4, 6, 6,
+	 7, 7, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9,
+	 9, 9, 9,10,10,11,11, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 7, 7, 7, 9, 8,10, 9,10,10,11,11,12,
+	12, 8, 9, 9, 9,10,10,10,11,11,12,12,13,13, 8, 9,
+	 9,10, 9,10,10,11,11,12,12,13,13, 8, 9, 9,10,10,
+	11,11,11,11,12,12,13,13, 8, 9, 9,10,10,11,11,12,
+	11,12,12,13,13,10,10,10,11,11,12,12,12,12,13,13,
+	14,14,10,10,10,11,11,12,12,12,12,13,13,14,14,11,
+	11,11,12,12,13,13,13,13,14,14,14,14,11,11,11,12,
+	12,13,13,13,13,14,14,14,14,
 };
 
-static float _vq_quantthresh__16u2_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__16u2_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p6_0 = {
-	_vq_quantthresh__16u2_p6_0,
-	_vq_quantmap__16u2_p6_0,
-	13,
-	13
-};
-
-static static_codebook _16u2_p6_0 = {
+static const static_codebook _16u2_p6_0 = {
 	2, 169,
-	_vq_lengthlist__16u2_p6_0,
+	(char *)_vq_lengthlist__16u2_p6_0,
 	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__16u2_p6_0,
-	NULL,
-	&_vq_auxt__16u2_p6_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p6_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p6_1[] = {
+static const long _vq_quantlist__16u2_p6_1[] = {
 	2,
 	1,
 	3,
@@ -1817,38 +1213,20 @@
 	4,
 };
 
-static long _vq_lengthlist__16u2_p6_1[] = {
-	 2, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-	 5, 5, 6, 6, 5, 5, 5, 6, 6,
+static const char _vq_lengthlist__16u2_p6_1[] = {
+	 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
 };
 
-static float _vq_quantthresh__16u2_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__16u2_p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p6_1 = {
-	_vq_quantthresh__16u2_p6_1,
-	_vq_quantmap__16u2_p6_1,
-	5,
-	5
-};
-
-static static_codebook _16u2_p6_1 = {
+static const static_codebook _16u2_p6_1 = {
 	2, 25,
-	_vq_lengthlist__16u2_p6_1,
+	(char *)_vq_lengthlist__16u2_p6_1,
 	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__16u2_p6_1,
-	NULL,
-	&_vq_auxt__16u2_p6_1,
-	NULL,
+	(long *)_vq_quantlist__16u2_p6_1,
 	0
 };
 
-static long _vq_quantlist__16u2_p7_0[] = {
+static const long _vq_quantlist__16u2_p7_0[] = {
 	6,
 	5,
 	7,
@@ -1864,49 +1242,29 @@
 	12,
 };
 
-static long _vq_lengthlist__16u2_p7_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 6,
-	 9, 9, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 8, 9, 9,
-	 9, 9, 9,10,11,12,11, 7, 8, 9,10,10,10,10,11,10,
-	11,12,12,13, 7, 9, 9,10,10,10,10,10,10,11,12,13,
-	13, 7, 9, 8,10,10,11,11,11,12,12,13,13,14, 7, 9,
-	 9,10,10,11,11,11,12,13,13,13,13, 8, 9, 9,10,11,
-	11,12,12,12,13,13,13,13, 8, 9, 9,10,11,11,11,12,
-	12,13,13,14,14, 9,10,10,12,11,12,13,13,13,14,13,
-	13,13, 9,10,10,11,11,12,12,13,14,13,13,14,13,10,
-	11,11,12,13,14,14,14,15,14,14,14,14,10,11,11,12,
-	12,13,13,13,14,14,14,15,14,
+static const char _vq_lengthlist__16u2_p7_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
+	 8, 8, 9, 9, 9, 9,10,10,11,10, 4, 6, 6, 8, 8, 9,
+	 9, 9, 9,10,10,11,11, 7, 8, 8,10, 9,10,10,10,10,
+	11,11,12,12, 7, 8, 8,10,10,10,10,10,10,11,11,12,
+	12, 8, 9, 9,10,10,11,11,11,11,12,12,13,13, 8, 9,
+	 9,10,10,11,11,11,11,12,12,13,13, 8, 9, 9,11,10,
+	11,11,12,12,13,13,14,13, 8, 9, 9,10,10,11,11,12,
+	12,13,13,13,13, 9,10,10,11,11,12,12,13,13,13,13,
+	14,14, 9,10,10,11,11,12,12,13,13,13,13,14,14,10,
+	11,11,12,12,13,13,14,13,14,14,15,14,10,11,11,12,
+	12,13,13,14,13,14,14,15,14,
 };
 
-static float _vq_quantthresh__16u2_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
-};
-
-static long _vq_quantmap__16u2_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p7_0 = {
-	_vq_quantthresh__16u2_p7_0,
-	_vq_quantmap__16u2_p7_0,
-	13,
-	13
-};
-
-static static_codebook _16u2_p7_0 = {
+static const static_codebook _16u2_p7_0 = {
 	2, 169,
-	_vq_lengthlist__16u2_p7_0,
+	(char *)_vq_lengthlist__16u2_p7_0,
 	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__16u2_p7_0,
-	NULL,
-	&_vq_auxt__16u2_p7_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p7_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p7_1[] = {
+static const long _vq_quantlist__16u2_p7_1[] = {
 	5,
 	4,
 	6,
@@ -1920,46 +1278,26 @@
 	10,
 };
 
-static long _vq_lengthlist__16u2_p7_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
-	 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
-	 8, 6, 6, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 7, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
-	 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
-	 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+static const char _vq_lengthlist__16u2_p7_1[] = {
+	 2, 5, 5, 7, 7, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
+	 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
+	 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
 	 8, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static float _vq_quantthresh__16u2_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__16u2_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p7_1 = {
-	_vq_quantthresh__16u2_p7_1,
-	_vq_quantmap__16u2_p7_1,
-	11,
-	11
-};
-
-static static_codebook _16u2_p7_1 = {
+static const static_codebook _16u2_p7_1 = {
 	2, 121,
-	_vq_lengthlist__16u2_p7_1,
+	(char *)_vq_lengthlist__16u2_p7_1,
 	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__16u2_p7_1,
-	NULL,
-	&_vq_auxt__16u2_p7_1,
-	NULL,
+	(long *)_vq_quantlist__16u2_p7_1,
 	0
 };
 
-static long _vq_quantlist__16u2_p8_0[] = {
+static const long _vq_quantlist__16u2_p8_0[] = {
 	7,
 	6,
 	8,
@@ -1977,53 +1315,33 @@
 	14,
 };
 
-static long _vq_lengthlist__16u2_p8_0[] = {
-	 1, 5, 5, 7, 7, 8, 8, 7, 7, 8, 8,10, 9,11,11, 4,
-	 6, 6, 8, 8,10, 9, 9, 8, 9, 9,10,10,12,14, 4, 6,
-	 7, 8, 9, 9,10, 9, 8, 9, 9,10,12,12,11, 7, 8, 8,
-	10,10,10,10, 9, 9,10,10,11,13,13,12, 7, 8, 8, 9,
-	11,11,10, 9, 9,11,10,12,11,11,14, 8, 9, 9,11,10,
-	11,11,10,10,11,11,13,12,14,12, 8, 9, 9,11,12,11,
-	11,10,10,12,11,12,12,12,14, 7, 8, 8, 9, 9,10,10,
-	10,11,12,11,13,13,14,12, 7, 8, 9, 9, 9,10,10,11,
-	11,11,12,12,14,14,14, 8,10, 9,10,11,11,11,11,14,
-	12,12,13,14,14,13, 9, 9, 9,10,11,11,11,12,12,12,
-	14,12,14,13,14,10,10,10,12,11,12,11,14,13,14,13,
-	14,14,13,14, 9,10,10,11,12,11,13,12,13,13,14,14,
-	14,13,14,10,13,13,12,12,11,12,14,13,14,13,14,12,
-	14,13,10,11,11,12,11,12,12,14,14,14,13,14,14,14,
-	14,
+static const char _vq_lengthlist__16u2_p8_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 8,10, 9,11,11, 4,
+	 7, 6, 9, 8, 9, 9, 9, 9,10, 9,11, 9,12, 9, 4, 6,
+	 7, 8, 8, 9, 9, 9, 9,10,10,10,11,11,12, 7, 9, 8,
+	10,10,11,11,10,10,11,11,12,12,13,12, 7, 8, 8,10,
+	10,10,11,10,10,11,11,11,12,12,13, 8, 9, 9,11,11,
+	11,11,11,11,12,12,13,13,13,13, 8, 9, 9,11,11,11,
+	11,11,11,12,12,13,13,13,14, 8, 9, 9,10,10,11,11,
+	12,11,13,13,14,13,14,14, 8, 9, 9,10,10,11,11,12,
+	12,12,12,13,13,14,14, 9,10,10,11,11,12,12,13,12,
+	13,13,14,14,15,15, 9,10,10,11,11,12,12,12,13,13,
+	13,14,14,14,15,10,11,11,12,12,13,13,14,13,14,14,
+	15,14,15,15,10,11,11,12,12,13,12,13,14,14,14,14,
+	14,15,15,11,12,12,13,13,13,13,14,14,15,14,15,15,
+	16,16,11,12,12,13,13,13,13,14,14,14,15,15,15,16,
+	16,
 };
 
-static float _vq_quantthresh__16u2_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__16u2_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p8_0 = {
-	_vq_quantthresh__16u2_p8_0,
-	_vq_quantmap__16u2_p8_0,
-	15,
-	15
-};
-
-static static_codebook _16u2_p8_0 = {
+static const static_codebook _16u2_p8_0 = {
 	2, 225,
-	_vq_lengthlist__16u2_p8_0,
+	(char *)_vq_lengthlist__16u2_p8_0,
 	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__16u2_p8_0,
-	NULL,
-	&_vq_auxt__16u2_p8_0,
-	NULL,
+	(long *)_vq_quantlist__16u2_p8_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p8_1[] = {
+static const long _vq_quantlist__16u2_p8_1[] = {
 	10,
 	9,
 	11,
@@ -2047,87 +1365,68 @@
 	20,
 };
 
-static long _vq_lengthlist__16u2_p8_1[] = {
-	 2, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,10, 9, 9,
-	 9,10,10,10,10, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,
-	10, 9,10,10,10,10,10,10,11,10, 5, 6, 6, 7, 7, 8,
-	 8, 8, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 7,
-	 7, 7, 8, 8, 9, 8, 9, 9,10, 9,10,10,10,10,10,10,
-	11,10,11,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,10, 9,10,
-	10,10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,
-	10, 9,10,10,10,10,10,10,10,11,10,10,11,10, 8, 8,
-	 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,
-	11,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
-	11,10,11,10,11,10,11,10, 8, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,10,10,10,10,11,11,10,10,10, 9,10, 9,
-	 9,10,10,10,11,10,10,10,10,10,10,10,10,11,11,11,
-	11,11, 9, 9, 9,10, 9,10,10,10,10,10,10,11,10,11,
-	10,11,11,11,11,10,10, 9,10, 9,10,10,10,10,11,10,
-	10,10,10,10,11,10,11,10,11,10,10,11, 9,10,10,10,
-	10,10,10,10,10,10,11,10,10,11,11,10,11,11,11,11,
-	11, 9, 9,10,10,10,10,10,11,10,10,11,10,10,11,10,
-	10,11,11,11,11,11, 9,10,10,10,10,10,10,10,11,10,
-	11,10,11,10,11,11,11,11,11,10,11,10,10,10,10,10,
-	10,10,10,10,11,11,11,11,11,11,11,11,11,10,11,11,
-	10,10,10,10,10,11,10,10,10,11,10,11,11,11,11,10,
-	12,11,11,11,10,10,10,10,10,10,11,10,10,10,11,11,
-	12,11,11,11,11,11,11,11,11,11,10,10,10,11,10,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
-	10,10,11,10,11,10,10,11,11,11,11,11,11,11,11,11,
-	11,11,11,10,10,10,10,10,10,10,11,11,10,11,11,10,
-	11,11,10,11,11,11,10,11,11,
+static const char _vq_lengthlist__16u2_p8_1[] = {
+	 3, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10, 5, 6, 6, 7, 7, 8,
+	 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
+	 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,
+	10,10,10,10, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9,10, 9,10,10,10, 9,10, 9, 8, 8, 8, 9, 8, 9, 9,
+	 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10, 8, 8,
+	 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
+	10,10,10, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10, 9, 9, 9,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10, 9,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,
 };
 
-static float _vq_quantthresh__16u2_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__16u2_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p8_1 = {
-	_vq_quantthresh__16u2_p8_1,
-	_vq_quantmap__16u2_p8_1,
-	21,
-	21
-};
-
-static static_codebook _16u2_p8_1 = {
+static const static_codebook _16u2_p8_1 = {
 	2, 441,
-	_vq_lengthlist__16u2_p8_1,
+	(char *)_vq_lengthlist__16u2_p8_1,
 	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__16u2_p8_1,
-	NULL,
-	&_vq_auxt__16u2_p8_1,
-	NULL,
+	(long *)_vq_quantlist__16u2_p8_1,
 	0
 };
 
-static long _vq_quantlist__16u2_p9_0[] = {
-	5586,
-	4655,
-	6517,
-	3724,
-	7448,
-	2793,
-	8379,
-	1862,
-	9310,
-	931,
-	10241,
+static const long _vq_quantlist__16u2_p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
 	0,
-	11172,
-	5521,
-	5651,
+	14,
 };
 
-static long _vq_lengthlist__16u2_p9_0[] = {
-	 1,10,10,10,10,10,10,10,10,10,10,10,10, 5, 4,10,
+static const char _vq_lengthlist__16u2_p9_0[] = {
+	 1, 5, 3, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5,
+	 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7,
+	 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
@@ -2138,119 +1437,74 @@
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
 	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10, 4,10,10,10,10,10,10,10,10,10,10,10,10,
-	 6, 6, 5,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 5,
-	 5,
+	10,
 };
 
-static float _vq_quantthresh__16u2_p9_0[] = {
-	-5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -498, -32.5, 32.5, 
-	498, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 
-};
-
-static long _vq_quantmap__16u2_p9_0[] = {
-	   11,    9,    7,    5,    3,    1,   13,    0,
-	   14,    2,    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p9_0 = {
-	_vq_quantthresh__16u2_p9_0,
-	_vq_quantmap__16u2_p9_0,
-	15,
-	15
-};
-
-static static_codebook _16u2_p9_0 = {
+static const static_codebook _16u2_p9_0 = {
 	2, 225,
-	_vq_lengthlist__16u2_p9_0,
-	1, -510275072, 1611661312, 14, 0,
-	_vq_quantlist__16u2_p9_0,
-	NULL,
-	&_vq_auxt__16u2_p9_0,
-	NULL,
+	(char *)_vq_lengthlist__16u2_p9_0,
+	1, -510036736, 1631393792, 4, 0,
+	(long *)_vq_quantlist__16u2_p9_0,
 	0
 };
 
-static long _vq_quantlist__16u2_p9_1[] = {
-	392,
-	343,
-	441,
-	294,
-	490,
-	245,
-	539,
-	196,
-	588,
-	147,
-	637,
-	98,
-	686,
-	49,
-	735,
+static const long _vq_quantlist__16u2_p9_1[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
 	0,
-	784,
-	388,
-	396,
+	18,
 };
 
-static long _vq_lengthlist__16u2_p9_1[] = {
-	 1,12,10,12,10,12,10,12,11,12,12,12,12,12,12,12,
-	12, 5, 5, 9,10,12,11,11,12,12,12,12,12,12,12,12,
-	12,12,12,12,10, 9, 9,11, 9,11,11,12,11,12,12,12,
-	12,12,12,12,12,12,12, 8, 8,10,11, 9,12,11,12,12,
-	12,12,12,12,12,12,12,12,12,12, 9, 8,10,11,12,11,
-	12,11,12,12,12,12,12,12,12,12,12,12,12, 8, 9,11,
-	11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	 9,10,11,12,11,12,11,12,12,12,12,12,12,12,12,12,
-	12,12,12, 9, 9,11,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11, 5, 8, 9, 9, 8,11, 9,11,11,11,11,11,11,
-	11,11,11,11, 5, 5, 4, 8, 8, 8, 8,10, 9,10,10,11,
-	11,11,11,11,11,11,11, 5, 4,
-};
-
-static float _vq_quantthresh__16u2_p9_1[] = {
-	-367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -26.5, 
-	-2, 2, 26.5, 73.5, 122.5, 171.5, 220.5, 269.5, 
-	318.5, 367.5, 
+static const char _vq_lengthlist__16u2_p9_1[] = {
+	 1, 4, 4, 7, 7, 7, 7, 7, 6, 9, 7,10, 8,12,12,13,
+	13,14,14, 4, 7, 7, 9, 9, 9, 8, 9, 8,10, 9,11, 9,
+	14, 9,14,10,13,11, 4, 7, 7, 9, 9, 9, 9, 8, 9,10,
+	10,11,11,12,13,12,13,14,15, 7, 9, 9,10,11,10,10,
+	10,10,11,12,13,13,13,14,17,14,15,16, 7, 9, 9,10,
+	10,10,10,10,10,11,12,13,13,14,14,15,15,18,18, 8,
+	 9, 9,11,10,11,11,11,12,13,12,14,14,16,15,15,17,
+	18,15, 8, 9, 9,10,10,11,11,11,11,13,13,14,14,15,
+	15,15,16,16,18, 7, 9, 8,10,10,11,11,12,12,14,14,
+	15,15,16,16,15,17,16,18, 8, 9, 9,10,10,11,12,12,
+	12,13,13,16,15,17,16,17,18,17,18, 9,10,10,12,11,
+	13,13,14,13,14,14,15,17,16,18,17,18,17,18, 9,10,
+	10,12,11,12,13,13,14,15,16,14,15,16,18,18,18,18,
+	17,11,11,11,13,13,14,14,16,15,15,15,16,15,15,18,
+	18,18,17,16,11,11,12,13,13,15,14,15,16,16,16,17,
+	16,15,18,17,18,16,18,12,13,13,15,15,15,16,18,16,
+	17,16,17,16,17,17,17,18,18,17,13,13,13,15,13,16,
+	15,17,16,16,16,18,18,18,18,16,17,17,18,13,15,14,
+	15,15,18,17,18,18,18,16,18,17,18,17,18,16,17,17,
+	14,14,14,15,16,17,16,18,18,18,17,18,17,18,18,18,
+	16,16,16,14,17,16,17,15,16,18,18,17,18,17,18,17,
+	18,18,18,17,18,17,15,16,15,18,15,18,17,16,18,18,
+	18,18,18,18,17,18,16,18,17,
 };
 
-static long _vq_quantmap__16u2_p9_1[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	   17,    0,   18,    2,    4,    6,    8,   10,
-	   12,   14,   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p9_1 = {
-	_vq_quantthresh__16u2_p9_1,
-	_vq_quantmap__16u2_p9_1,
-	19,
-	19
-};
-
-static static_codebook _16u2_p9_1 = {
+static const static_codebook _16u2_p9_1 = {
 	2, 361,
-	_vq_lengthlist__16u2_p9_1,
-	1, -518488064, 1611661312, 10, 0,
-	_vq_quantlist__16u2_p9_1,
-	NULL,
-	&_vq_auxt__16u2_p9_1,
-	NULL,
+	(char *)_vq_lengthlist__16u2_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	(long *)_vq_quantlist__16u2_p9_1,
 	0
 };
 
-static long _vq_quantlist__16u2_p9_2[] = {
+static const long _vq_quantlist__16u2_p9_2[] = {
 	24,
 	23,
 	25,
@@ -2302,8606 +1556,6203 @@
 	48,
 };
 
-static long _vq_lengthlist__16u2_p9_2[] = {
-	 1, 3, 3, 4, 7, 7, 7, 8, 7, 7, 7, 7, 8, 8, 8, 8,
-	 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 9, 9, 8, 9, 9,
-	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,12,12,10,
-	11,
+static const char _vq_lengthlist__16u2_p9_2[] = {
+	 2, 3, 4, 4, 4, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 7, 8, 8, 8, 8, 8,
+	 8,
 };
 
-static float _vq_quantthresh__16u2_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
-};
-
-static long _vq_quantmap__16u2_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
-};
-
-static encode_aux_threshmatch _vq_auxt__16u2_p9_2 = {
-	_vq_quantthresh__16u2_p9_2,
-	_vq_quantmap__16u2_p9_2,
-	49,
-	49
-};
-
-static static_codebook _16u2_p9_2 = {
+static const static_codebook _16u2_p9_2 = {
 	1, 49,
-	_vq_lengthlist__16u2_p9_2,
+	(char *)_vq_lengthlist__16u2_p9_2,
 	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__16u2_p9_2,
-	NULL,
-	&_vq_auxt__16u2_p9_2,
-	NULL,
+	(long *)_vq_quantlist__16u2_p9_2,
 	0
 };
 
-static long _huff_lengthlist__44u0__long[] = {
-	 3, 7,12,10,15,10, 9,18, 5, 2, 5, 6, 8, 7, 9,20,
-	10, 4, 4, 6, 6, 8,11,20, 9, 5, 6, 5, 7, 6, 9,20,
-	11, 7, 5, 7, 5, 7,10,20,10, 6, 7, 6, 6, 6, 8,17,
-	 9, 8,10, 7, 7, 5, 5,17,11,18,19,14,13, 9, 8,19,
+static const char _huff_lengthlist__16u2__short[] = {
+	 8,11,13,13,15,16,19,19,19,19,11, 8, 8, 9, 9,11,
+	13,15,19,20,14, 8, 7, 7, 8, 9,12,13,15,20,15, 9,
+	 6, 5, 5, 7,10,12,14,18,14, 9, 7, 5, 3, 4, 7,10,
+	12,16,13,10, 8, 6, 3, 3, 5, 8,11,14,11,10, 9, 7,
+	 5, 4, 4, 6,11,14,10,10,10, 8, 6, 5, 5, 6,10,14,
+	10,10,10, 9, 8, 7, 7, 7,10,14,11,12,12,12,11,10,
+	10,10,12,16,
 };
 
-static static_codebook _huff_book__44u0__long = {
-	2, 64,
-	_huff_lengthlist__44u0__long,
+static const static_codebook _huff_book__16u2__short = {
+	2, 100,
+	(char *)_huff_lengthlist__16u2__short,
 	0, 0, 0, 0, 0,
 	NULL,
-	NULL,
-	NULL,
-	NULL,
 	0
 };
 
-static long _vq_quantlist__44u0__p1_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__8u0__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u0__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
-	10,11, 5, 8, 8, 8,10,10, 8,11,11, 4, 8, 8, 8,11,
-	11, 8,11,11, 8,11,11,11,13,14,11,13,14, 7,11,11,
-	10,14,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
-	11,11,11,14,13,10,12,13, 8,11,12,11,14,14,11,14,
-	13,
+static const char _vq_lengthlist__8u0__p1_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+        10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11,
+        11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11,
+        10,13,12,10,13,13, 5, 9, 8, 8,11,11, 8,11,11, 7,
+        11,11, 9,13,13,10,12,13, 7,11,11,10,13,13,10,13,
+        11,
 };
 
-static float _vq_quantthresh__44u0__p1_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _8u0__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u0__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8u0__p1_0,
+        0
 };
 
-static long _vq_quantmap__44u0__p1_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__8u0__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p1_0 = {
-	_vq_quantthresh__44u0__p1_0,
-	_vq_quantmap__44u0__p1_0,
-	3,
-	3
+static const char _vq_lengthlist__8u0__p2_0[] = {
+         2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6,
+         7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9,
+         9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8,
+         8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
+         8, 8, 8,10,10, 8, 8,10, 6, 8, 9, 8,10,10, 7,10,
+         8,
 };
 
-static static_codebook _44u0__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u0__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u0__p1_0,
-	NULL,
-	&_vq_auxt__44u0__p1_0,
-	NULL,
-	0
+static const static_codebook _8u0__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u0__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8u0__p2_0,
+        0
 };
 
-static long _vq_quantlist__44u0__p2_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__8u0__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u0__p2_0[] = {
-	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 6, 7, 8, 8, 6,
-	 7, 8, 5, 6, 7, 6, 8, 7, 7, 8, 8, 5, 7, 7, 7, 8,
-	 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
-	 7,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
-	 8, 8, 8,10,10, 7, 8,10, 6, 8, 8, 8,10,10, 8,10,
-	 9,
+static const char _vq_lengthlist__8u0__p3_0[] = {
+         1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+        10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
+        10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11,
+        12,13, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+        11, 9,10,11,12,12,10,11,11,12,12, 8,11,11,14,13,
+        10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,
+        14,12,16,15, 8,11,11,13,14,10,11,12,13,15,10,11,
+        12,13,15,11,12,13,14,15,12,12,14,14,16, 5, 8, 8,
+        11,11, 9,11,11,12,12, 8,10,11,12,12,11,12,12,15,
+        14,11,12,12,14,14, 7,11,10,13,12,10,11,12,13,14,
+        10,12,12,14,13,12,13,13,14,15,12,13,13,15,15, 7,
+        10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,
+        12,14,14,11,13,13,15,16, 9,12,12,15,14,11,13,13,
+        15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,
+        16, 9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,
+        13,14,14,17,16,13,15,15,17,18, 5, 8, 9,11,11, 8,
+        11,11,12,12, 8,10,11,12,12,11,12,12,14,14,11,12,
+        12,14,15, 7,11,10,12,13,10,12,12,14,13,10,11,12,
+        13,14,11,13,13,15,14,12,13,13,14,15, 7,10,11,13,
+        13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,
+        12,13,13,15,14, 9,12,12,16,15,10,13,13,15,15,11,
+        13,13,17,15,12,15,15,18,17,13,14,14,15,16, 9,12,
+        12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,
+        16,16,13,15,14,17,15, 7,11,11,15,15,10,13,13,16,
+        15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,
+         9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,
+        15,16,17,19,13,15,16, 0,18, 9,12,12,16,15,11,14,
+        13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,
+        17,19,11,14,14,19,16,12,14,15, 0,18,12,16,15,18,
+        17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,
+        13,15,14,19,19,12,16,15,18,17,15,17,15, 0,16,14,
+        17,16,19, 0, 7,11,11,14,14,10,12,12,15,15,10,13,
+        13,16,15,13,15,15,17, 0,14,15,15,16,19, 9,12,12,
+        16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,
+         0,14,18,17,17,19, 9,12,12,15,16,11,13,13,15,17,
+        12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,
+        14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,
+        17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,
+        19, 0,12,14,15,19,19,14,16,16, 0,18,15,19,14,18,
+        16,
 };
 
-static float _vq_quantthresh__44u0__p2_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _8u0__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8u0__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8u0__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u0__p2_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__8u0__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p2_0 = {
-	_vq_quantthresh__44u0__p2_0,
-	_vq_quantmap__44u0__p2_0,
-	3,
-	3
+static const char _vq_lengthlist__8u0__p4_0[] = {
+         3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9,
+         9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7,
+         8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10,
+        11,12, 6, 7, 7,10,10, 7, 8, 8,10,10, 7, 8, 7,10,
+        10, 9,10,10,12,11,10,10,10,11,10, 9,10,10,12,11,
+        10,10,10,13,11, 9,10,10,12,12,11,11,12,12,13,11,
+        11,11,12,13, 9,10,10,12,12,10,10,11,12,12,10,10,
+        11,12,12,11,11,11,13,13,11,12,12,13,13, 5, 7, 7,
+        10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,11,12,
+        12,10,11,10,12,12, 7, 8, 8,11,11, 7, 8, 9,10,11,
+         8, 9, 9,11,11,11,10,11,10,12,10,11,11,12,13, 7,
+         8, 8,10,11, 8, 9, 8,12,10, 8, 9, 9,11,12,10,11,
+        10,13,11,10,11,11,13,12, 9,11,10,13,12,10,10,11,
+        12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,
+        13, 9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,
+        12,13,11,14,12,12,12,12,14,14, 5, 7, 7,10,10, 7,
+         8, 8,10,10, 7, 8, 8,11,10,10,11,11,12,12,10,11,
+        10,12,12, 7, 8, 8,10,11, 8, 9, 9,12,11, 8, 8, 9,
+        10,11,10,11,11,12,13,11,10,11,11,13, 6, 8, 8,10,
+        11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,11,11,12,12,
+        10,11,10,13,10, 9,11,10,13,12,10,12,11,13,13,10,
+        10,11,12,13,11,12,13,15,14,11,11,13,12,13, 9,10,
+        11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,
+        13,14,12,12,11,14,11, 8,10,10,12,13,10,11,11,13,
+        13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,
+         9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,
+        12,13,15,14,12,13,13,15,13, 9,10,11,12,13,10,12,
+        10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,
+        15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,
+        13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,
+        11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,
+        15,14,16,15, 8,10,10,12,12,10,10,10,12,13,10,11,
+        11,13,13,12,12,12,13,14,13,13,13,15,15, 9,10,10,
+        12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,
+        14,12,12,13,15,14, 9,10,10,13,12,10,10,12,12,13,
+        10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,
+        12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,
+        14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,
+        14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,
+        12,
 };
 
-static static_codebook _44u0__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u0__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u0__p2_0,
-	NULL,
-	&_vq_auxt__44u0__p2_0,
-	NULL,
-	0
+static const static_codebook _8u0__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8u0__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8u0__p4_0,
+        0
 };
 
-static long _vq_quantlist__44u0__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__8u0__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u0__p3_0[] = {
-	 1, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 8, 9, 9, 8,
-	10, 9,12,11, 8, 9,10,11,12, 6, 8, 8,10,10, 8,10,
-	10,11,11, 8, 9,10,11,11,10,12,11,13,13,10,11,11,
-	13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10,10,11,
-	11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
-	10,12,11,15,14,10,12,11,15,14,12,14,13,16,15,12,
-	13,13,17,15, 9,11,11,14,14,10,11,12,14,15,10,11,
-	12,14,17,12,13,14,15,16,13,13,14,15,17, 5, 8, 8,
-	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,15,
-	14,11,12,12,14,15, 8,10,10,13,12,10,12,12,13,13,
-	10,12,12,14,14,12,13,13,15,15,11,13,13,15,16, 7,
-	10,10,12,12, 9,12,11,14,13,10,12,12,13,14,12,13,
-	12,15,15,12,13,13,16,17,10,12,12,15,16,12,13,13,
-	17,15,11,13,13,17,16,15,15,15,17,17,13,15,16,18,
-	18, 9,12,12,15,17,11,13,12,16,16,11,13,13,16,18,
-	14,15,14,16,16,13,15,15,17,18, 5, 8, 8,11,11, 8,
-	10,10,12,12, 8,10,10,12,12,10,12,12,15,15,11,12,
-	12,14,15, 7,10,10,12,12,10,12,12,14,14, 9,11,12,
-	13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,12,
-	13,10,12,12,13,14,10,12,12,13,13,12,13,13,16,16,
-	12,13,13,15,15,10,12,12,15,16,11,13,13,17,16,11,
-	12,13,17,16,13,15,15,18,19,14,14,14,17,16,10,12,
-	12,15,15,11,13,13,15,16,11,13,13,15,17,13,15,15,
-	18,20,14,15,15,17,17, 8,11,11,15,16,10,13,12,17,
-	16,10,12,13,16,17,15,16,15,20,19,14,15,16,18,19,
-	 9,12,12,15,17,11,13,14,18,18,11,13,14,17,17,16,
-	17,18,19,19,15,16,18,19,20, 9,12,12,16,16,11,14,
-	12,17,17,11,13,13,16,19,15,16,15,20,19,15,15,15,
-	19,17,12,14,14,18,19,14,15,15,19,18,13,15,15,18,
-	17,17,18,19,20, 0,15,16,17,20, 0,12,15,14,17,18,
-	13,16,14,20,20,13,16,15,19,18,16,20,17,20,19,16,
-	17,16, 0,19, 8,11,11,15,15,10,12,12,17,17,10,12,
-	13,16,16,13,14,15,17,17,15,16,17,19,19, 9,12,12,
-	16,17,11,13,13,18,16,11,13,13,16,17,14,15,16,19,
-	18,15,16,17,17,18, 9,12,12,17,16,11,14,13,16,16,
-	12,14,13,17,18,14,16,15,18,19,17,17,17,19,18,12,
-	14,14,19,17,13,15,15,17, 0,13,14,16, 0, 0,15,16,
-	16,19, 0,16,16,19,19, 0,12,15,14,19,18,13,15,15,
-	19, 0,14,16,15, 0,19,15,17,17, 0,19,17,18,17, 0,
-	19,
+static const char _vq_lengthlist__8u0__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8,
+        10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9,
+         9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
+         9, 9,10,10,12,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+        10,10,11,11,11,12,12,12, 9,10,10,11,11,12,12,12,
+        12,
 };
 
-static float _vq_quantthresh__44u0__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _8u0__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8u0__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8u0__p5_0,
+        0
 };
 
-static long _vq_quantmap__44u0__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__8u0__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p3_0 = {
-	_vq_quantthresh__44u0__p3_0,
-	_vq_quantmap__44u0__p3_0,
-	5,
-	5
+static const char _vq_lengthlist__8u0__p6_0[] = {
+         1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6,
+         9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11,
+        11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14,
+        14,14,17,16, 7, 9, 9,11,11,13,12,13,13,14,14,17,
+         0, 9,11,11,12,13,14,14,14,13,15,14,17,17, 9,11,
+        11,12,12,14,14,13,14,14,15, 0, 0,11,12,12,15,14,
+        15,14,15,14,15,16,17, 0,11,12,13,13,13,14,14,15,
+        14,15,15, 0, 0,12,14,14,15,15,14,16,15,15,17,16,
+         0,18,13,14,14,15,14,15,14,15,16,17,16, 0, 0,17,
+        17,18, 0,16,18,16, 0, 0, 0,17, 0, 0,16, 0, 0,16,
+        16, 0,15, 0,17, 0, 0, 0, 0,
 };
 
-static static_codebook _44u0__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u0__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u0__p3_0,
-	NULL,
-	&_vq_auxt__44u0__p3_0,
-	NULL,
-	0
+static const static_codebook _8u0__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__8u0__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__8u0__p6_0,
+        0
 };
 
-static long _vq_quantlist__44u0__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__8u0__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u0__p4_0[] = {
-	 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
-	 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 6, 7, 8, 9,10,10,10,10,11,12, 9,10,10,
-	11,12, 5, 7, 7, 9, 9, 6, 8, 7,10,10, 7, 8, 8,10,
-	10, 9,10,10,12,11,10,10,10,12,11, 9,10,10,12,12,
-	10,11,10,13,13, 9,10,10,13,13,12,12,12,14,14,11,
-	12,12,14,14, 9,10,10,12,12, 9,10,10,13,13,10,10,
-	10,12,13,11,12,12,14,14,12,13,12,14,14, 5, 7, 7,
-	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,
-	12,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
-	 8, 9, 9,11,11,10,10,11,12,13,10,11,11,13,14, 6,
-	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
-	10,13,11,10,11,11,13,13,10,11,10,13,13,10,10,11,
-	13,14,10,11,11,14,13,12,11,13,12,14,12,13,13,15,
-	15, 9,10,10,13,13,10,11,10,13,13,10,11,11,13,14,
-	12,13,11,15,12,12,13,13,14,15, 5, 7, 7,10, 9, 7,
-	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
-	10,12,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
-	10,11,10,11,11,13,13,10,10,11,11,14, 7, 8, 8,10,
-	10, 8, 9, 9,11,11, 8, 9, 8,11,10,10,11,11,13,13,
-	10,11,10,13,11, 9,10,10,13,13,10,11,11,14,13,10,
-	10,11,12,13,13,13,13,15,14,12,11,13,12,15, 9,10,
-	11,13,13,10,11,11,13,14,10,11,10,13,13,12,13,13,
-	15,15,12,13,11,15,12, 8,10,10,13,12,10,11,11,13,
-	13, 9,10,11,13,13,13,13,13,15,15,12,13,13,15,15,
-	 9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,
-	13,14,14,15,13,13,13,14,15, 9,10,10,13,13,10,11,
-	10,14,13,10,11,11,13,14,13,14,13,15,14,12,13,13,
-	14,15,11,13,13,15,14,11,11,13,14,15,12,14,13,15,
-	15,13,12,15,12,16,14,14,15,17,16,11,12,12,14,15,
-	11,13,11,15,14,12,13,13,15,15,14,14,12,17,13,14,
-	15,15,18,16, 8,10,10,13,12, 9,10,10,13,13,10,10,
-	11,13,13,12,13,13,14,14,12,13,13,15,15, 9,10,10,
-	13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,17,
-	15,12,12,13,14,16, 9,10,10,13,13,10,11,11,13,13,
-	10,11,10,14,13,13,13,13,14,15,13,14,13,15,15,11,
-	13,12,14,14,12,13,13,16,14,11,12,13,15,15,14,15,
-	16,17,18,14,12,15,14,16,11,12,13,14,15,12,13,13,
-	15,16,11,13,11,15,14,14,16,14,16,17,14,15,12,16,
-	12,
+static const char _vq_lengthlist__8u0__p6_1[] = {
+         1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6,
+         7, 7, 7, 7, 6, 7, 7, 7, 7,
 };
 
-static float _vq_quantthresh__44u0__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _8u0__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__8u0__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8u0__p6_1,
+        0
 };
 
-static long _vq_quantmap__44u0__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__8u0__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p4_0 = {
-	_vq_quantthresh__44u0__p4_0,
-	_vq_quantmap__44u0__p4_0,
-	5,
-	5
+static const char _vq_lengthlist__8u0__p7_0[] = {
+         1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static static_codebook _44u0__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u0__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u0__p4_0,
-	NULL,
-	&_vq_auxt__44u0__p4_0,
-	NULL,
-	0
+static const static_codebook _8u0__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u0__p7_0,
+        1, -518803456, 1628680192, 2, 0,
+        (long *)_vq_quantlist__8u0__p7_0,
+        0
 };
 
-static long _vq_quantlist__44u0__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__8u0__p7_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44u0__p5_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8,
-	10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
-	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
-	10, 9,10,11,12,12, 8, 8, 8, 9, 9,11,11,12,12, 9,
-	10,10,11,11,12,12,13,13, 9,10,10,11,11,12,12,13,
-	13,
+static const char _vq_lengthlist__8u0__p7_1[] = {
+         1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5,
+         7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6,
+         7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6,
+        11, 8,11,11,11,11,11,11,11,11,11,11, 5, 6, 6, 9,
+        10,11,10,11,11,11,11,11,11,11,11, 7,10,10,11,11,
+        11,11,11,11,11,11,11,11,11,11, 7,11, 8,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static float _vq_quantthresh__44u0__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _8u0__p7_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__8u0__p7_1,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__8u0__p7_1,
+        0
 };
 
-static long _vq_quantmap__44u0__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__8u0__p7_2[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p5_0 = {
-	_vq_quantthresh__44u0__p5_0,
-	_vq_quantmap__44u0__p5_0,
-	9,
-	9
+static const char _vq_lengthlist__8u0__p7_2[] = {
+         1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10,
+        11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11,
+        10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9,
+        10,11,10,11,12,11,10,11,11,11,11,11,11,12,10, 8,
+         9, 9,10, 9,10,10, 9,10,10,10,10,10, 9,10,10,10,
+        10, 9,10,10, 9, 9, 9, 9,10,10, 9, 9,10,10,11,10,
+         9,12,10,11,10, 9,10,10,10, 8, 9, 9,10, 9,10, 9,
+         9,10,10, 9,10, 9,11,10,10,10,10,10, 9,10, 8, 8,
+         9, 9,10, 9,11, 9, 8, 9, 9,10,11,10,10,10,11,12,
+         9, 9,11, 8, 9, 8,11,10,11,10,10, 9,11,10,10,10,
+        10,10,10,10,11,11,11,11, 8, 9, 9, 9,10,10,10,11,
+        11,12,11,12,11,10,10,10,12,11,11,11,10, 8,10, 9,
+        11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,
+        11,10, 9, 9,10,11,12,10,10,10,11,10,11,11,10,12,
+        12,10,11,10,11,12,10, 9,10,10,11,10,11,11,11,11,
+        11,12,11,11,11, 9,11,10,11,10,11,10, 9, 9,10,11,
+        11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,
+        11, 9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,
+        11,11,11,10,11,11, 9,11,10,11,11,11,10,10,10,11,
+        11,11,12,10,11,10,11,11,11,11,12, 9,11,10,11,11,
+        10,10,11,11, 9,11,11,12,10,10,10,10,10,11,11,10,
+         9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,
+        10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,
+        10,10,11,11,11,11,10,10,10,12,11,11,11,11,10, 9,
+        10,11,11,11,12,11,11,11,12,10,11,11,11, 9,10,11,
+        11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,
+        10,11, 9,10,11,11,11,11,11,10,11,11,10,12,11,11,
+        11,12,11,11,11,10,10,11,11,
 };
 
-static static_codebook _44u0__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u0__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u0__p5_0,
-	NULL,
-	&_vq_auxt__44u0__p5_0,
-	NULL,
-	0
+static const static_codebook _8u0__p7_2 = {
+        2, 441,
+        (char *)_vq_lengthlist__8u0__p7_2,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8u0__p7_2,
+        0
 };
 
-static long _vq_quantlist__44u0__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _huff_lengthlist__8u0__single[] = {
+         4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16,
+         9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17,
+        10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15,
+         7, 6, 7, 5, 6, 4, 5,15,12,13,18,12,17,11, 9,17,
 };
 
-static long _vq_lengthlist__44u0__p6_0[] = {
-	 1, 4, 4, 6, 6, 8, 8,10, 9,10,10,14,14, 4, 6, 5,
-	 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
-	 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
-	12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,14,
-	15, 9, 9, 9,10,10,11,11,12,11,12,12,15,16, 9, 9,
-	 9,10,10,11,11,11,11,12,12,15,15,10,10,10,11,11,
-	12,11,12,12,13,13,16,16,10,10,10,11,11,12,12,12,
-	12,13,13,16,17,11,11,12,12,12,13,13,14,13,14,14,
-	18,17,11,11,11,12,12,12,12,13,14,14,14,18,18,14,
-	14,14,15,15,15,16,16,16,17,17, 0,19,14,14,14,15,
-	15,16,17,16,17,17,17,19, 0,
+static const static_codebook _huff_book__8u0__single = {
+        2, 64,
+        (char *)_huff_lengthlist__8u0__single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44u0__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const long _vq_quantlist__8u1__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44u0__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__8u1__p1_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7,
+         9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10,
+        10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10,
+         9,12,11,10,12,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+        10,10,10,12,12, 9,11,12, 7,10,10,10,12,12, 9,12,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p6_0 = {
-	_vq_quantthresh__44u0__p6_0,
-	_vq_quantmap__44u0__p6_0,
-	13,
-	13
+static const static_codebook _8u1__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u1__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8u1__p1_0,
+        0
 };
 
-static static_codebook _44u0__p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u0__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u0__p6_0,
-	NULL,
-	&_vq_auxt__44u0__p6_0,
-	NULL,
-	0
+static const long _vq_quantlist__8u1__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44u0__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__8u1__p2_0[] = {
+         3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6,
+         7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8,
+         8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8,
+         7, 9, 7, 8, 9, 9, 5, 6, 6, 6, 7, 7, 7, 8, 8, 6,
+         8, 7, 8, 9, 9, 7, 7, 9, 6, 7, 8, 8, 9, 9, 7, 9,
+         7,
 };
 
-static long _vq_lengthlist__44u0__p6_1[] = {
-	 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
-	 6, 6, 6, 6, 5, 6, 6, 6, 6,
+static const static_codebook _8u1__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u1__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__8u1__p2_0,
+        0
 };
 
-static float _vq_quantthresh__44u0__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__8u1__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u0__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__8u1__p3_0[] = {
+         1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+        10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
+        10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11,
+        12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
+        11,10,11,11,12,12,10,11,11,12,12, 9,11,11,14,13,
+        10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,
+        13,13,15,14, 8,11,11,13,14,10,11,12,13,15,10,11,
+        12,14,14,12,13,13,14,15,12,13,13,14,15, 5, 8, 8,
+        11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+        13,11,12,12,13,14, 8,10,10,12,12, 9,11,12,13,14,
+        10,12,12,13,13,12,12,13,14,14,11,13,13,15,15, 7,
+        10,10,12,12, 9,12,11,14,12,10,11,12,13,14,12,13,
+        12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,
+        15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,
+        15, 9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,
+        13,14,13,15,14,13,14,14,17, 0, 5, 8, 8,11,11, 8,
+        10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+        12,14,14, 7,10,10,12,12,10,12,12,13,13, 9,11,12,
+        12,13,11,12,13,15,15,11,12,13,14,15, 8,10,10,12,
+        12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,
+        12,13,12,15,13, 9,12,12,14,14,11,13,13,16,15,11,
+        12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,
+        12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,
+        16,17,13,15,14,16,15, 8,11,11,14,15,10,12,12,15,
+        15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,
+         9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,
+        15,16,19,17,13,15,15, 0,17, 9,12,12,15,15,11,14,
+        13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,
+        17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,
+        18,15,15,16,15,19,14,16,16, 0, 0,11,14,14,16,17,
+        12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,
+        16,16,18,18, 7,11,11,14,14,10,12,12,15,15,10,12,
+        13,15,15,13,14,15,16,16,14,15,15,18,18, 9,12,12,
+        15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,
+        16,15,16,16,17,17, 9,12,12,15,15,11,13,13,15,17,
+        11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,
+        14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,
+        16,19,18,16,15,17,17, 0,11,14,14,17,17,12,15,15,
+        18, 0,12,15,14,18,16,14,17,17,19, 0,16,18,15, 0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p6_1 = {
-	_vq_quantthresh__44u0__p6_1,
-	_vq_quantmap__44u0__p6_1,
-	5,
-	5
+static const static_codebook _8u1__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8u1__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8u1__p3_0,
+        0
 };
 
-static static_codebook _44u0__p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u0__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u0__p6_1,
-	NULL,
-	&_vq_auxt__44u0__p6_1,
-	NULL,
-	0
+static const long _vq_quantlist__8u1__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__44u0__p7_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__8u1__p4_0[] = {
+         4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9,
+         9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7,
+         8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10,
+        10,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 7,10,
+         9, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
+         9,10,10,12,11, 9,10,10,12,12,11,11,12,12,13,11,
+        11,12,12,13, 9, 9,10,12,11, 9,10,10,12,12,10,10,
+        10,12,12,11,12,11,13,12,11,12,11,13,12, 6, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 7,10, 9,10,10,10,12,
+        12,10,10,10,12,11, 7, 8, 7,10,10, 7, 7, 9,10,11,
+         8, 9, 9,11,10,10,10,11,10,12,10,10,11,12,12, 7,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,11,11,10,11,
+        10,12,11,10,11,11,12,12, 9,10,10,12,12, 9,10,10,
+        12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,
+        14, 9,10,10,12,12, 9,11,10,12,12,10,11,11,12,12,
+        11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
+         7, 7, 9,10, 7, 8, 8,10,10,10,10,10,11,11,10,10,
+        10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
+        10,11,10,10,10,11,12,10,10,11,11,13, 6, 7, 8,10,
+        10, 8, 9, 9,10,10, 7, 9, 7,11,10,10,11,10,12,12,
+        10,11,10,12,10, 9,10,10,12,12,10,11,11,13,12, 9,
+        10,10,12,12,12,12,12,14,13,11,11,12,11,14, 9,10,
+        10,11,12,10,11,11,12,13, 9,10,10,12,12,12,12,12,
+        14,13,11,12,10,14,11, 9, 9,10,11,12, 9,10,10,12,
+        12, 9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,
+         9,10, 9,12,12, 9,10,11,12,13,10,11,10,13,11,12,
+        12,13,13,14,12,12,12,13,13, 9,10,10,12,12,10,11,
+        10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,
+        13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,
+        13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,
+        10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,
+        13,14,14,14, 9,10, 9,12,12, 9,10,10,12,12,10,10,
+        10,12,12,11,11,12,12,13,12,12,12,14,14, 9,10,10,
+        12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,
+        13,12,12,13,13,14, 9,10,10,12,13,10,10,11,11,12,
+         9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,
+        12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,
+        13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,
+        13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,
+        10,
 };
 
-static long _vq_lengthlist__44u0__p7_0[] = {
-	 1, 5, 5,11,11, 9,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const static_codebook _8u1__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__8u1__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__8u1__p4_0,
+        0
 };
 
-static float _vq_quantthresh__44u0__p7_0[] = {
-	-253.5, -84.5, 84.5, 253.5, 
+static const long _vq_quantlist__8u1__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__44u0__p7_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__8u1__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8,
+        10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+         9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
+         9, 9,10,10,12,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
+        10,10,11,11,11,11,13,12, 9,10,10,11,11,12,12,12,
+        13,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p7_0 = {
-	_vq_quantthresh__44u0__p7_0,
-	_vq_quantmap__44u0__p7_0,
-	5,
-	5
+static const static_codebook _8u1__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8u1__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8u1__p5_0,
+        0
 };
 
-static static_codebook _44u0__p7_0 = {
-	4, 625,
-	_vq_lengthlist__44u0__p7_0,
-	1, -518709248, 1626677248, 3, 0,
-	_vq_quantlist__44u0__p7_0,
-	NULL,
-	&_vq_auxt__44u0__p7_0,
-	NULL,
-	0
+static const long _vq_quantlist__8u1__p6_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44u0__p7_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__8u1__p6_0[] = {
+         3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7,
+         9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
+         8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
+         8, 8, 8, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10,10, 9,
+         9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
+        10,
 };
 
-static long _vq_lengthlist__44u0__p7_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 7, 7,
-	 8, 8, 8, 8, 9, 9,11,10,12,11, 4, 6, 7, 8, 8, 7,
-	 8, 9, 9,10,11,12,11, 7, 8, 8, 9, 9,10,10,11,11,
-	12,11,13,13, 7, 8, 8, 9,10,10,10,11,11,12,12,12,
-	13, 7, 8, 8,10,10,12,12,13,12,16,13,13,14, 7, 8,
-	 8,10,11,12,12,13,12,13,13,14,14, 8, 9,10,12,12,
-	14,13,16,15,16,16,16,15, 8,10,10,12,12,14,13,14,
-	15,16,16,15,16,10,11,12,14,14,14,14,16,13,16,15,
-	16,16,10,11,12,13,13,15,14,14,15,16,16,14,14,13,
-	14,13,15,16,16,16,15,15,16,16,16,16,11,15,14,16,
-	16,14,14,16,15,16,14,16,15,
+static const static_codebook _8u1__p6_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__8u1__p6_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8u1__p6_0,
+        0
 };
 
-static float _vq_quantthresh__44u0__p7_1[] = {
-	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
-	32.5, 45.5, 58.5, 71.5, 
+static const long _vq_quantlist__8u1__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44u0__p7_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__8u1__p7_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8,
+        10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12,
+        12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12,
+        10,13,12,10,13,13, 4,10,10, 9,12,12, 9,12,12, 7,
+        12,12,10,13,13,10,12,13, 7,11,12,10,13,13,10,13,
+        11,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p7_1 = {
-	_vq_quantthresh__44u0__p7_1,
-	_vq_quantmap__44u0__p7_1,
-	13,
-	13
+static const static_codebook _8u1__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__8u1__p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__8u1__p7_0,
+        0
 };
 
-static static_codebook _44u0__p7_1 = {
-	2, 169,
-	_vq_lengthlist__44u0__p7_1,
-	1, -523010048, 1618608128, 4, 0,
-	_vq_quantlist__44u0__p7_1,
-	NULL,
-	&_vq_auxt__44u0__p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__8u1__p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__44u0__p7_2[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__8u1__p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
+         8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9,
+         9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9,
+         9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+        10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
+         9, 9, 9, 9, 9,10,10,10,10,
 };
 
-static long _vq_lengthlist__44u0__p7_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 5, 6,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 5, 5, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 7, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
-	 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 9, 9, 9, 9, 8, 9,
-	 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const static_codebook _8u1__p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__8u1__p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8u1__p7_1,
+        0
 };
 
-static float _vq_quantthresh__44u0__p7_2[] = {
-	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
-	2.5, 3.5, 4.5, 5.5, 
+static const long _vq_quantlist__8u1__p8_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantmap__44u0__p7_2[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__8u1__p8_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
+         9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12,
+        12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9,
+         9,11,11,12,12,13,13, 8, 9, 9,11,11,12,12,13,13,
+        14,14, 8, 9, 9,11,11,12,12,13,13,14,14, 9,11,11,
+        12,12,13,13,14,14,15,15, 9,11,11,12,12,13,13,14,
+        14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,
+        12,13,13,14,14,15,15,15,15,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u0__p7_2 = {
-	_vq_quantthresh__44u0__p7_2,
-	_vq_quantmap__44u0__p7_2,
-	13,
-	13
+static const static_codebook _8u1__p8_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__8u1__p8_0,
+        1, -524582912, 1618345984, 4, 0,
+        (long *)_vq_quantlist__8u1__p8_0,
+        0
 };
 
-static static_codebook _44u0__p7_2 = {
-	2, 169,
-	_vq_lengthlist__44u0__p7_2,
-	1, -531103744, 1611661312, 4, 0,
-	_vq_quantlist__44u0__p7_2,
-	NULL,
-	&_vq_auxt__44u0__p7_2,
-	NULL,
-	0
+static const long _vq_quantlist__8u1__p8_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _huff_lengthlist__44u0__short[] = {
-	 6,10,11,12,13,12,12,12, 4, 6, 6, 9, 9,10,11,13,
-	 3, 4, 3, 7, 6, 8,10,15, 5, 7, 7, 9, 8, 9,11,16,
-	 6, 7, 5, 8, 5, 7,10,16, 7, 8, 7, 9, 6, 7,10,16,
-	10, 6, 3, 5, 4, 5, 7,16,13, 8, 5, 7, 6, 7,10,15,
+static const char _vq_lengthlist__8u1__p8_1[] = {
+         2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
+         7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
+         8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
+         7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+         8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9,
+         8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
+         8, 8, 8, 8, 8, 9, 9, 9, 9,
 };
 
-static static_codebook _huff_book__44u0__short = {
-	2, 64,
-	_huff_lengthlist__44u0__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _8u1__p8_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__8u1__p8_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__8u1__p8_1,
+        0
 };
 
-static long _huff_lengthlist__44u1__long[] = {
-	 4, 8,13,11,14,11,10,14, 6, 3, 5, 6, 8, 7, 9,14,
-	12, 4, 3, 6, 5, 7,10,18,11, 6, 6, 6, 6, 6, 8,16,
-	13, 7, 4, 6, 4, 6, 9,19,11, 6, 6, 5, 5, 5, 7,16,
-	10, 8, 9, 7, 9, 6, 4,12,11,16,18,19,18,10, 7,11,
+static const long _vq_quantlist__8u1__p9_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static static_codebook _huff_book__44u1__long = {
-	2, 64,
-	_huff_lengthlist__44u1__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__8u1__p9_0[] = {
+         1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3,
+        11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9,
+         9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static long _vq_quantlist__44u1__p1_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _8u1__p9_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__8u1__p9_0,
+        1, -514071552, 1627381760, 4, 0,
+        (long *)_vq_quantlist__8u1__p9_0,
+        0
 };
 
-static long _vq_lengthlist__44u1__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
-	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
-	11, 8,11,11, 8,11,11,11,13,14,11,13,14, 8,11,11,
-	10,14,11,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
-	11,11,11,14,13,10,12,13, 8,11,11,11,14,14,11,14,
-	13,
+static const long _vq_quantlist__8u1__p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static float _vq_quantthresh__44u1__p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__8u1__p9_1[] = {
+         1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4,
+         7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7,
+         7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9,
+        12,12,11,12,10,10,11,10,12,11,11,11, 7, 9, 9,11,
+        11,13,12, 9, 9,11,10,11,11,12,11, 9,10,10,12,12,
+        14,14,10,10,11,12,12,11,11,11, 9,10,11,11,13,14,
+        13,10,11,11,11,12,11,12,12, 7, 8, 8,10, 9,11,10,
+        11,12,12,11,12,14,12,13, 7, 8, 8, 9,10,10,11,12,
+        12,12,11,12,12,12,13, 9, 9, 9,11,11,13,12,12,12,
+        12,11,12,12,13,12, 8,10,10,11,10,11,12,12,12,12,
+        12,12,14,12,12, 9,11,11,11,12,12,12,12,13,13,12,
+        12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,
+        12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,
+        12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,
+        13,
 };
 
-static long _vq_quantmap__44u1__p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _8u1__p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__8u1__p9_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__8u1__p9_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u1__p1_0 = {
-	_vq_quantthresh__44u1__p1_0,
-	_vq_quantmap__44u1__p1_0,
-	3,
-	3
+static const long _vq_quantlist__8u1__p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static static_codebook _44u1__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u1__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u1__p1_0,
-	NULL,
-	&_vq_auxt__44u1__p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p2_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u1__p2_0[] = {
-	 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
-	 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8, 9, 9, 6, 8, 8,
-	 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
-	 8, 8, 8,10, 9, 7, 8, 9, 7, 8, 8, 8, 9, 9, 8,10,
-	 9,
-};
-
-static float _vq_quantthresh__44u1__p2_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u1__p2_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p2_0 = {
-	_vq_quantthresh__44u1__p2_0,
-	_vq_quantmap__44u1__p2_0,
-	3,
-	3
-};
-
-static static_codebook _44u1__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u1__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u1__p2_0,
-	NULL,
-	&_vq_auxt__44u1__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u1__p3_0[] = {
-	 2, 5, 4, 7, 7, 5, 7, 7, 9, 8, 5, 7, 7, 8, 9, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7,10,10, 7, 9,
-	 9,11,10, 7, 9, 9,10,10, 9,11,10,13,12, 9,10,10,
-	12,13, 5, 7, 7,10, 9, 7, 9, 9,11,10, 7, 9, 9,10,
-	11, 9,10,10,12,12,10,10,11,12,13, 8,10,10,14,13,
-	 9,11,11,15,13, 9,11,11,15,13,12,14,12,16,14,12,
-	13,12,15,14, 8,10,10,13,14, 9,11,11,13,14,10,11,
-	11,13,15,12,12,13,14,15,12,13,14,14,16, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
-	14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,12,
-	 9,11,11,13,13,12,12,12,14,14,11,12,13,15,15, 7,
-	 9, 9,12,11, 9,11,10,12,12, 9,11,11,12,13,11,12,
-	11,14,14,11,12,12,15,16, 9,11,11,15,15,11,12,12,
-	16,15,10,12,12,16,15,14,15,15,17,16,13,14,14,17,
-	17, 9,11,11,14,15,10,12,11,15,15,10,12,12,15,17,
-	13,14,13,16,15,13,14,15,17,17, 5, 7, 7,10,10, 7,
-	 9, 9,12,11, 7, 9, 9,11,12,10,11,11,14,14,10,11,
-	11,13,14, 7, 9, 9,11,12, 9,11,11,13,13, 9,10,11,
-	12,12,11,12,12,15,15,11,12,12,13,14, 7,10, 9,12,
-	12, 9,11,11,13,13, 9,11,11,12,12,11,12,12,16,15,
-	11,12,12,14,14, 9,11,11,15,14,10,12,12,16,15,10,
-	11,12,15,15,13,14,14,17,18,13,13,14,15,16, 9,11,
-	11,15,16,10,12,12,15,15,11,12,12,14,17,13,14,14,
-	17,17,14,14,14,16,18, 7,10,10,14,15,10,12,12,16,
-	15,10,11,12,16,16,14,16,15,18,17,13,15,14,17,19,
-	 9,11,12,16,15,11,13,13,17,16,10,13,13,16,16,15,
-	16,16,17,19,13,15,15,17,17, 8,11,11,15,15,10,13,
-	11,16,16,10,13,13,16,17,14,16,15,18,19,13,15,15,
-	17,17,12,14,14,18,18,13,14,15,18,19,12,14,15,17,
-	18,16,18,18,19, 0,14,15,16,18,18,11,14,13,17,18,
-	12,16,14,19,19,12,15,14, 0,18,15,17,16,18,17,14,
-	17,16,18,18, 7,10,10,15,14,10,12,11,16,16,10,11,
-	12,16,16,13,15,14,19,18,14,15,16,18,18, 8,11,11,
-	15,15,10,13,12,17,16,10,12,13,16,17,14,14,15,19,
-	18,14,15,16,18, 0, 9,11,11,16,15,11,13,12,15,16,
-	11,13,13,16,16,14,15,14, 0,17,15,16,16,19,18,11,
-	14,14,18,17,12,14,15,17,17,12,13,15, 0,17,14,15,
-	16,18,17,16,17,18,17,19,11,14,13,17,19,12,15,14,
-	18,19,13,16,14, 0,19,14,17,15, 0,18,15,18,16, 0,
-	 0,
+static const char _vq_lengthlist__8u1__p9_2[] = {
+         2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,10,10, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9,10,10,10, 9,
+        10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
+        10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+         9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,
+         9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+        10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+         9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static float _vq_quantthresh__44u1__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _8u1__p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__8u1__p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__8u1__p9_2,
+        0
 };
 
-static long _vq_quantmap__44u1__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _huff_lengthlist__8u1__single[] = {
+         4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7,
+        10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5,
+         8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7,
+        11,15, 7, 5, 8, 6, 7, 5, 7, 6, 9,13,13, 9, 9, 8,
+         6, 6, 5, 5, 9,14, 8, 6, 8, 6, 6, 4, 5, 3, 5,13,
+         9, 9,11, 8,10, 7, 8, 4, 5,12,11,16,17,15,17,12,
+        13, 8, 8,15,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u1__p3_0 = {
-	_vq_quantthresh__44u1__p3_0,
-	_vq_quantmap__44u1__p3_0,
-	5,
-	5
+static const static_codebook _huff_book__8u1__single = {
+        2, 100,
+        (char *)_huff_lengthlist__8u1__single,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static static_codebook _44u1__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u1__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u1__p3_0,
-	NULL,
-	&_vq_auxt__44u1__p3_0,
-	NULL,
-	0
+static const char _huff_lengthlist__44u0__long[] = {
+         5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
+        13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
+        15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
+         9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
 };
 
-static long _vq_quantlist__44u1__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u1__p4_0[] = {
-	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
-	 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 6, 7, 8, 9,10,10,10,10,11,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,12,11,10,10,10,12,11, 9,10,10,12,12,
-	10,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
-	12,12,13,14, 9,10,10,12,12, 9,10,10,13,12,10,10,
-	10,12,13,12,12,12,14,13,12,12,12,14,14, 5, 7, 7,
-	 9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,
-	12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
-	 8, 8, 8,11,11,10,10,11,11,13,10,11,11,12,13, 6,
-	 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,11,11,10,11,
-	10,13,11,10,11,11,13,12,10,11,10,13,12,10,10,11,
-	13,13,10,11,11,13,13,12,11,13,12,14,12,13,13,15,
-	15, 9,10,10,12,13,10,11,10,13,13,10,11,11,13,14,
-	12,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9,10, 7,
-	 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
-	10,12,12, 6, 7, 7,10,10, 8, 9, 8,11,11, 7, 8, 8,
-	10,11,10,11,11,12,13,10,10,11,11,13, 7, 8, 8,10,
-	10, 8, 8, 8,11,11, 8, 9, 8,11,10,10,11,10,13,12,
-	10,11,10,13,12, 9,10,10,13,12,10,11,11,13,13, 9,
-	10,10,12,13,13,13,13,15,14,12,11,13,12,15,10,10,
-	11,12,13,10,11,11,13,13,10,11,10,13,13,12,13,13,
-	15,15,12,13,11,14,12, 8,10, 9,12,12, 9,10,10,13,
-	13, 9,10,10,13,13,13,13,13,14,15,12,12,12,14,14,
-	 9,10,10,13,12,10,11,11,13,13,10,11,11,13,12,13,
-	13,14,14,16,12,13,13,15,14, 9,10,10,13,13,10,11,
-	10,13,13,10,11,11,13,13,13,14,12,15,14,12,13,13,
-	14,15,12,12,12,14,14,11,12,12,14,15,12,13,13,15,
-	14,14,12,15,12,16,14,14,15,17,16,11,12,12,14,14,
-	11,12,11,15,14,12,13,13,15,15,13,14,12,16,13,14,
-	14,15,17,16, 8,10,10,12,12, 9,10,10,13,12,10,10,
-	10,13,13,12,13,12,14,14,12,13,13,15,14, 9,10,10,
-	13,13,10,11,11,13,13,10,10,11,12,13,13,13,13,15,
-	15,12,12,13,14,15, 9,10,10,12,13,10,11,11,12,13,
-	10,11,10,13,13,12,13,13,14,15,13,14,13,15,14,11,
-	12,12,15,14,12,13,13,15,14,11,12,12,14,15,14,14,
-	14,17,15,13,12,15,13,16,12,12,12,14,15,12,13,13,
-	14,15,11,12,12,15,14,14,15,14,16,17,13,15,12,16,
-	12,
-};
-
-static float _vq_quantthresh__44u1__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u1__p4_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p4_0 = {
-	_vq_quantthresh__44u1__p4_0,
-	_vq_quantmap__44u1__p4_0,
-	5,
-	5
-};
-
-static static_codebook _44u1__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u1__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u1__p4_0,
-	NULL,
-	&_vq_auxt__44u1__p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44u1__p5_0[] = {
-	 1, 4, 4, 7, 7, 8, 8,10,10, 4, 6, 5, 8, 8, 8, 8,
-	10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9,
-	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
-	 9, 9,10,11,12,12, 8, 8, 9, 9, 9,10,10,12,12,10,
-	10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,
-	13,
-};
-
-static float _vq_quantthresh__44u1__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44u1__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p5_0 = {
-	_vq_quantthresh__44u1__p5_0,
-	_vq_quantmap__44u1__p5_0,
-	9,
-	9
-};
-
-static static_codebook _44u1__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u1__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u1__p5_0,
-	NULL,
-	&_vq_auxt__44u1__p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u1__p6_0[] = {
-	 1, 4, 4, 7, 7, 9, 8,10, 9,11,10,14,13, 4, 5, 5,
-	 8, 8, 9, 9,11,11,11,11,14,14, 4, 5, 5, 8, 8, 9,
-	 9,10,11,11,11,14,14, 7, 8, 8, 9, 9,11,10,11,11,
-	12,12,16,15, 7, 8, 8, 9, 9,10,11,11,11,12,12,15,
-	15, 9,10,10,11,11,11,11,12,12,13,13,16,16, 9,10,
-	10,11,11,11,11,12,12,12,13,16,15,10,11,11,11,11,
-	12,12,13,13,13,13,16,17,10,11,11,11,11,12,12,12,
-	12,13,14,16,16,11,12,12,12,12,13,13,14,14,14,15,
-	18,17,11,12,12,12,12,13,13,13,14,14,15,18,18,15,
-	14,15,15,15,16,16,17,17,18,17,20,20,14,15,15,15,
-	15,16,17,17,16,18, 0,19, 0,
-};
-
-static float _vq_quantthresh__44u1__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44u1__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p6_0 = {
-	_vq_quantthresh__44u1__p6_0,
-	_vq_quantmap__44u1__p6_0,
-	13,
-	13
-};
-
-static static_codebook _44u1__p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u1__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u1__p6_0,
-	NULL,
-	&_vq_auxt__44u1__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u1__p6_1[] = {
-	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
-	 6, 5, 6, 6, 5, 5, 6, 6, 6,
-};
-
-static float _vq_quantthresh__44u1__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u1__p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p6_1 = {
-	_vq_quantthresh__44u1__p6_1,
-	_vq_quantmap__44u1__p6_1,
-	5,
-	5
-};
-
-static static_codebook _44u1__p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u1__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u1__p6_1,
-	NULL,
-	&_vq_auxt__44u1__p6_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p7_0[] = {
-	3,
-	2,
-	4,
-	1,
-	5,
-	0,
-	6,
-};
-
-static long _vq_lengthlist__44u1__p7_0[] = {
-	 1, 3, 3, 9, 9, 9, 9, 5, 7, 7, 9, 9, 9, 9, 5, 6,
-	 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8,
-};
-
-static float _vq_quantthresh__44u1__p7_0[] = {
-	-422.5, -253.5, -84.5, 84.5, 253.5, 422.5, 
-};
-
-static long _vq_quantmap__44u1__p7_0[] = {
-	    5,    3,    1,    0,    2,    4,    6,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p7_0 = {
-	_vq_quantthresh__44u1__p7_0,
-	_vq_quantmap__44u1__p7_0,
-	7,
-	7
-};
-
-static static_codebook _44u1__p7_0 = {
-	2, 49,
-	_vq_lengthlist__44u1__p7_0,
-	1, -518017024, 1626677248, 3, 0,
-	_vq_quantlist__44u1__p7_0,
-	NULL,
-	&_vq_auxt__44u1__p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p7_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u1__p7_1[] = {
-	 1, 4, 4, 6, 6, 6, 7, 8, 8, 9, 9,11,10, 4, 7, 7,
-	 8, 8, 8, 8, 9, 9,11,10,12,11, 4, 6, 7, 8, 8, 8,
-	 8,10,10,10,11,12,11, 7, 8, 8, 9, 9,10,10,11,11,
-	12,12,13,13, 7, 8, 8, 9, 9,10,10,11,11,12,12,13,
-	13, 7, 8, 8,10,10,13,12,13,13,16,13,13,14, 7, 8,
-	 8,10,11,12,12,13,13,14,14,14,14, 8,10,10,13,12,
-	13,13,16,14,15,15,16,15, 8,10,11,12,13,13,13,13,
-	16,15,16,16,14,10,12,13,14,15,15,14,14,14,15,16,
-	15,16,10,11,12,13,13,15,15,16,16,16,14,16,16,12,
-	13,13,15,14,15,14,15,15,14,15,16,16,11,14,14,15,
-	14,16,15,16,14,15,16,14,15,
-};
-
-static float _vq_quantthresh__44u1__p7_1[] = {
-	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
-	32.5, 45.5, 58.5, 71.5, 
-};
-
-static long _vq_quantmap__44u1__p7_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p7_1 = {
-	_vq_quantthresh__44u1__p7_1,
-	_vq_quantmap__44u1__p7_1,
-	13,
-	13
-};
-
-static static_codebook _44u1__p7_1 = {
-	2, 169,
-	_vq_lengthlist__44u1__p7_1,
-	1, -523010048, 1618608128, 4, 0,
-	_vq_quantlist__44u1__p7_1,
-	NULL,
-	&_vq_auxt__44u1__p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u1__p7_2[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u1__p7_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 6, 6,
-	 6, 7, 8, 7, 8, 8, 8, 9, 9, 9, 5, 6, 6, 7, 7, 8,
-	 8, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9,
-	 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
-	 9, 7, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 7, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 9, 9, 9,
-	 8, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 8, 9,
-	 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
-};
-
-static float _vq_quantthresh__44u1__p7_2[] = {
-	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
-	2.5, 3.5, 4.5, 5.5, 
-};
-
-static long _vq_quantmap__44u1__p7_2[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u1__p7_2 = {
-	_vq_quantthresh__44u1__p7_2,
-	_vq_quantmap__44u1__p7_2,
-	13,
-	13
-};
-
-static static_codebook _44u1__p7_2 = {
-	2, 169,
-	_vq_lengthlist__44u1__p7_2,
-	1, -531103744, 1611661312, 4, 0,
-	_vq_quantlist__44u1__p7_2,
-	NULL,
-	&_vq_auxt__44u1__p7_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u1__short[] = {
-	 7,12,12,14,16,13,12,15, 6, 9,10,13,11,11,12,12,
-	 4, 5, 5, 8, 5, 7, 9,12, 6, 7, 8,10, 8, 9,11,16,
-	 5, 5, 4, 7, 4, 5, 7,15, 6, 5, 5, 8, 5, 5, 6,15,
-	 8, 7, 4, 7, 3, 4, 5,16,15,11, 6, 8, 5, 6, 8,16,
-};
-
-static static_codebook _huff_book__44u1__short = {
-	2, 64,
-	_huff_lengthlist__44u1__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u2__long[] = {
-	 8,14,15,15,17,15,12,13,13, 3, 4, 7, 8, 7, 8,11,
-	20, 4, 3, 6, 5, 7, 9,16,15, 6, 5, 6, 6, 6, 8,15,
-	20, 7, 4, 6, 4, 5, 8,18,16, 7, 6, 6, 5, 5, 6,14,
-	11, 7, 8, 7, 7, 5, 4,10,10,13,15,16,19,10, 6,10,
-};
-
-static static_codebook _huff_book__44u2__long = {
-	2, 64,
-	_huff_lengthlist__44u2__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u2__p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u2__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
-	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
-	11, 8,11,11, 8,11,11,11,13,14,11,13,13, 8,11,11,
-	10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
-	11,11,11,14,13,10,12,13, 8,11,11,11,14,13,11,13,
-	13,
+static const static_codebook _huff_book__44u0__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44u0__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44u2__p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u0__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44u2__p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u0__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+        10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+        11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
+        10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
+        11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
+        13,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p1_0 = {
-	_vq_quantthresh__44u2__p1_0,
-	_vq_quantmap__44u2__p1_0,
-	3,
-	3
+static const static_codebook _44u0__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u0__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u0__p1_0,
+        0
 };
 
-static static_codebook _44u2__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u2__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u2__p1_0,
-	NULL,
-	&_vq_auxt__44u2__p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u0__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44u2__p2_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u0__p2_0[] = {
+         2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+         8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
+         8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+         8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
+         8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+         9,
 };
 
-static long _vq_lengthlist__44u2__p2_0[] = {
-	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
-	 7, 6, 7, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 8,
-	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 8, 6, 7, 8, 6,
-	 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
-	 9,
+static const static_codebook _44u0__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u0__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u0__p2_0,
+        0
 };
 
-static float _vq_quantthresh__44u2__p2_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u0__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u2__p2_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u2__p2_0 = {
-	_vq_quantthresh__44u2__p2_0,
-	_vq_quantmap__44u2__p2_0,
-	3,
-	3
-};
-
-static static_codebook _44u2__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u2__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u2__p2_0,
-	NULL,
-	&_vq_auxt__44u2__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u2__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u2__p3_0[] = {
-	 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
-	 9, 9,12,12, 8, 9,10,11,12, 5, 7, 7,10,10, 7, 9,
-	 9,11,10, 7, 8, 9,10,11,10,11,10,14,13, 9,10,10,
-	12,13, 5, 7, 7,10,10, 7, 9, 8,11,10, 7, 9, 9,11,
-	11, 9,10,10,13,12,10,10,11,13,13, 8,10,10,15,13,
-	10,11,11,15,13, 9,11,11,14,13,13,14,13,17,15,12,
-	13,13,15,15, 8,10,10,13,14, 9,11,11,13,14,10,11,
-	12,13,16,12,13,13,15,15,13,13,14,15,17, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
-	14,10,11,12,14,14, 7, 9, 9,12,12, 9,11,11,13,12,
-	 9,11,11,13,13,12,13,12,14,14,11,12,12,15,14, 7,
-	 9, 9,12,11, 9,11,10,13,11, 9,11,11,12,13,11,12,
-	11,14,13,11,12,12,15,15,10,12,12,16,15,11,13,13,
-	16,16,10,12,12,16,16,14,14,14,17,16,13,14,14,17,
-	18, 9,11,11,14,15,10,12,11,15,15,10,12,12,15,17,
-	13,15,13,17,16,13,14,15,17,19, 5, 7, 7,10,10, 7,
-	 9, 9,12,11, 7, 9, 9,11,11,10,11,11,15,14,10,11,
-	12,13,14, 7, 9, 9,12,12, 9,11,11,13,12, 8,10,11,
-	12,12,11,12,12,15,15,11,11,12,14,14, 7, 9, 9,12,
-	12, 9,11,11,13,13, 9,11,11,12,12,11,12,12,16,15,
-	11,12,13,14,14, 9,11,11,16,15,10,12,12,16,15,10,
-	11,12,14,14,13,14,15,18,17,13,13,14,16,16,10,12,
-	12,15,15,10,13,12,15,17,11,13,12,15,16,13,15,14,
-	17,18,14,15,14,15,17, 8,10,10,15,15,10,12,12,17,
-	15,10,12,12,17,16,14,16,15,17,17,13,14,15,16,16,
-	 9,11,12,16,16,11,13,13,16,17,11,13,13,16,16,15,
-	16,16, 0, 0,14,15,15,19,17, 9,11,11,17,16,10,13,
-	11,16,16,11,12,12,16,17,15,16,15,19,19,14,16,15,
-	 0,18,12,14,15, 0, 0,14,15,16,18,18,13,14,15,17,
-	17,16,18,18, 0, 0,15,16,16,19,18,11,14,13, 0,18,
-	13,16,13,17,17,13,15,14, 0, 0,17,17,15,19,18,14,
-	16,16,19, 0, 8,10,10,15,15,10,12,11,16,16,10,11,
-	12,17,16,14,15,15,17,18,15,15,16, 0, 0, 9,11,11,
-	15,15,11,13,12,16,18,10,12,13,17,17,13,15,15,17,
-	19,15,15,16,19,18, 9,12,11, 0,16,11,13,12,16,16,
-	11,13,13,16,17,14,16,15,19,19,15,15,16,18,18,12,
-	14,14,17,18,13,14,15,18, 0,13,14,15,18,19,15,17,
-	16, 0,19,16,15,18,17,19,12,14,14,19,19,13,15,15,
-	 0,18,13,17,15,18,18,15,16,17, 0,19,17,19,18,18,
-	 0,
-};
-
-static float _vq_quantthresh__44u2__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u2__p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u2__p3_0 = {
-	_vq_quantthresh__44u2__p3_0,
-	_vq_quantmap__44u2__p3_0,
-	5,
-	5
-};
-
-static static_codebook _44u2__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u2__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u2__p3_0,
-	NULL,
-	&_vq_auxt__44u2__p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u2__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u2__p4_0[] = {
-	 4, 5, 5, 9, 9, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
-	10, 9,12,11, 9, 9,10,11,12, 6, 7, 7,10,10, 7, 8,
-	 7,10,10, 7, 7, 8,10,10,10,10,10,12,12, 9,10,10,
-	11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 7, 7,10,
-	10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,13,12,
-	10,10,10,13,13,10,10,10,13,12,12,12,12,14,14,12,
-	12,12,14,14, 9,10,10,12,13, 9,10,10,13,13,10,10,
-	10,13,13,12,12,12,15,14,12,13,12,14,14, 5, 7, 7,
-	10,10, 7, 8, 7,10,10, 7, 7, 8,10,10,10,10,10,12,
-	12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 8,10,11,
-	 8, 8, 8,11,10,10,10,11,11,13,10,10,11,12,13, 6,
-	 7, 7,10,10, 7, 8, 7,11,10, 8, 8, 8,10,11,10,11,
-	10,13,11,10,10,10,13,12,10,11,10,13,13,10,10,10,
-	12,13,10,11,11,13,13,12,11,13,11,14,12,13,13,14,
-	14, 9,10,10,12,13,10,10,10,13,12,10,10,11,13,13,
-	12,13,11,14,12,13,13,13,15,14, 5, 7, 7,10,10, 7,
-	 7, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
-	10,12,13, 6, 7, 7,10,10, 8, 8, 8,11,10, 7, 7, 8,
-	10,11,10,10,10,12,12,10,10,11,11,13, 7, 8, 8,10,
-	10, 7, 8, 8,10,11, 8, 8, 8,11,10,10,11,10,13,12,
-	10,11,10,13,11, 9,10,10,13,13,10,11,11,13,13,10,
-	10,10,12,13,13,13,13,14,14,12,11,13,12,14,10,10,
-	11,13,13,10,11,11,13,13,10,10,10,13,12,12,13,13,
-	14,14,12,13,11,15,12, 9,10,10,13,13,10,10,10,13,
-	13,10,10,10,13,13,13,13,13,15,15,12,13,13,14,14,
-	 9,10,10,13,13,10,10,11,13,13,10,11,10,13,12,13,
-	12,13,14,15,13,13,13,15,14, 9,10,10,13,13,10,10,
-	10,13,12,10,10,11,12,13,13,13,12,15,14,13,13,13,
-	14,14,12,13,12,15,14,12,11,12,14,14,12,13,12,15,
-	14,14,12,15,12,16,14,14,15,16,16,12,12,12,14,15,
-	11,12,11,15,14,12,13,13,14,15,14,14,12,16,13,14,
-	14,15,16,16, 9,10,10,13,13,10,10,10,13,13,10,10,
-	10,13,13,12,13,12,14,14,13,13,13,15,15, 9,10,10,
-	13,13,10,11,10,13,12,10,10,10,12,13,13,13,13,14,
-	14,12,12,13,14,15, 9,10,10,13,13,10,10,11,12,13,
-	10,11,10,13,13,13,13,13,14,15,13,13,13,15,14,12,
-	12,12,15,14,12,13,12,15,14,11,11,12,14,15,14,14,
-	14,17,16,14,12,14,13,17,12,12,13,14,16,13,13,13,
-	13,15,12,12,11,14,14,14,15,14,16,16,14,14,12,16,
-	12,
+static const char _vq_lengthlist__44u0__p3_0[] = {
+         1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+        10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
+        10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
+        13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+        11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
+        10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
+        14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
+        12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
+        11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
+        14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
+        10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
+        10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
+        12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
+        16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
+        19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
+        14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
+        10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
+        12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
+        13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
+        13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
+        12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
+        12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
+        12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
+        17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
+        17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
+         9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
+        17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
+        13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
+        18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
+        17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
+        13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
+        17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
+        13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
+        16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
+        20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
+        11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
+        14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
+        17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
+         0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
+        19,
 };
 
-static float _vq_quantthresh__44u2__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u0__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u0__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u0__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u2__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u0__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p4_0 = {
-	_vq_quantthresh__44u2__p4_0,
-	_vq_quantmap__44u2__p4_0,
-	5,
-	5
+static const char _vq_lengthlist__44u0__p4_0[] = {
+         4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
+        10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
+         8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
+        12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
+        10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
+        10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
+        12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
+        10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
+        10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
+        13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
+         8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
+        14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
+        15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
+        12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
+         8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
+        11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
+        11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
+        10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
+        10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
+        11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
+        16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
+        13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
+         9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
+        13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
+        10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
+        15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
+        15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
+        11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
+        16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
+        11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
+        14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
+        16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
+        10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
+        13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
+        16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
+        15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
+        12,
 };
 
-static static_codebook _44u2__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u2__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u2__p4_0,
-	NULL,
-	&_vq_auxt__44u2__p4_0,
-	NULL,
-	0
+static const static_codebook _44u0__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u0__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u0__p4_0,
+        0
 };
 
-static long _vq_quantlist__44u2__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u0__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u2__p5_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 7, 8, 7,
-	 9, 9, 4, 4, 4, 7, 7, 7, 8, 9, 9, 6, 7, 7, 8, 8,
-	 8, 9,10,10, 6, 7, 7, 8, 8, 9, 8,10,10, 7, 8, 7,
-	 8, 9, 9,10,11,11, 7, 7, 8, 9, 9,10,10,11,11, 9,
-	 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
-	12,
+static const char _vq_lengthlist__44u0__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+         9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+         9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
+         9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+         9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
+        12,
 };
 
-static float _vq_quantthresh__44u2__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44u0__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u0__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u0__p5_0,
+        0
 };
 
-static long _vq_quantmap__44u2__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44u0__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p5_0 = {
-	_vq_quantthresh__44u2__p5_0,
-	_vq_quantmap__44u2__p5_0,
-	9,
-	9
+static const char _vq_lengthlist__44u0__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
+         8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
+         9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+        12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
+        15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
+         9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
+        12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
+        12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
+        17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
+        15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
+        15,17,16,17,18,17,17,18, 0,
 };
 
-static static_codebook _44u2__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u2__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u2__p5_0,
-	NULL,
-	&_vq_auxt__44u2__p5_0,
-	NULL,
-	0
+static const static_codebook _44u0__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u0__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u0__p6_0,
+        0
 };
 
-static long _vq_quantlist__44u2__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44u0__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u2__p6_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9,10,11,11,14,14, 4, 6, 5,
-	 8, 8, 9, 9,11,11,11,11,14,14, 4, 5, 5, 8, 8, 9,
-	 9,10,11,11,12,14,14, 7, 8, 8, 9, 9,11,10,11,11,
-	12,12,15,15, 7, 8, 8, 9, 9,11,11,11,11,12,12,15,
-	14, 9,10,10,11,11,11,11,12,12,13,12,16,16, 9,10,
-	10,11,11,11,11,12,12,13,13,15,16,10,11,11,11,11,
-	12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,12,
-	13,14,14,16,16,11,12,12,12,12,13,13,14,14,14,14,
-	17,17,11,12,12,12,12,13,13,14,14,15,14,18,17,15,
-	14,15,15,15,16,16,17,18,19,17,19, 0,15,15,15,15,
-	15,16,17,16,16,18,17, 0, 0,
+static const char _vq_lengthlist__44u0__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+         6, 6, 6, 6, 5, 6, 6, 6, 6,
 };
 
-static float _vq_quantthresh__44u2__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44u0__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u0__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u0__p6_1,
+        0
 };
 
-static long _vq_quantmap__44u2__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44u0__p7_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p6_0 = {
-	_vq_quantthresh__44u2__p6_0,
-	_vq_quantmap__44u2__p6_0,
-	13,
-	13
+static const char _vq_lengthlist__44u0__p7_0[] = {
+         1, 4, 4,11,11, 9,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static static_codebook _44u2__p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u2__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u2__p6_0,
-	NULL,
-	&_vq_auxt__44u2__p6_0,
-	NULL,
-	0
+static const static_codebook _44u0__p7_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u0__p7_0,
+        1, -518709248, 1626677248, 3, 0,
+        (long *)_vq_quantlist__44u0__p7_0,
+        0
 };
 
-static long _vq_quantlist__44u2__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44u0__p7_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__44u2__p6_1[] = {
-	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 5, 5,
-	 6, 6, 6, 6, 5, 5, 6, 6, 6,
+static const char _vq_lengthlist__44u0__p7_1[] = {
+         1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
+         8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
+         7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
+        12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
+        12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
+         8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
+        13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
+        14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
+        15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
+        15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
+        15,15,15,15,15,15,15,15,15,
 };
 
-static float _vq_quantthresh__44u2__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u0__p7_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u0__p7_1,
+        1, -523010048, 1618608128, 4, 0,
+        (long *)_vq_quantlist__44u0__p7_1,
+        0
 };
 
-static long _vq_quantmap__44u2__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u0__p7_2[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p6_1 = {
-	_vq_quantthresh__44u2__p6_1,
-	_vq_quantmap__44u2__p6_1,
-	5,
-	5
+static const char _vq_lengthlist__44u0__p7_2[] = {
+         2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
+         9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
+         8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+         9, 9, 9,10, 9, 9,10,10, 9,
 };
 
-static static_codebook _44u2__p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u2__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u2__p6_1,
-	NULL,
-	&_vq_auxt__44u2__p6_1,
-	NULL,
-	0
+static const static_codebook _44u0__p7_2 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u0__p7_2,
+        1, -531103744, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u0__p7_2,
+        0
 };
 
-static long _vq_quantlist__44u2__p7_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _huff_lengthlist__44u0__short[] = {
+        12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
+         4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
+         6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
+        11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
 };
 
-static long _vq_lengthlist__44u2__p7_0[] = {
-	 1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10,
-	10,10, 4,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,
+static const static_codebook _huff_book__44u0__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44u0__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44u2__p7_0[] = {
-	-591.5, -422.5, -253.5, -84.5, 84.5, 253.5, 422.5, 591.5, 
+static const char _huff_lengthlist__44u1__long[] = {
+         5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
+        13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
+        15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
+         9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
 };
 
-static long _vq_quantmap__44u2__p7_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _huff_book__44u1__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44u1__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p7_0 = {
-	_vq_quantthresh__44u2__p7_0,
-	_vq_quantmap__44u2__p7_0,
-	9,
-	9
+static const long _vq_quantlist__44u1__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44u2__p7_0 = {
-	2, 81,
-	_vq_lengthlist__44u2__p7_0,
-	1, -516612096, 1626677248, 4, 0,
-	_vq_quantlist__44u2__p7_0,
-	NULL,
-	&_vq_auxt__44u2__p7_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44u1__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+        10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+        11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
+        10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
+        11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
+        13,
 };
 
-static long _vq_quantlist__44u2__p7_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const static_codebook _44u1__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u1__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u1__p1_0,
+        0
 };
 
-static long _vq_lengthlist__44u2__p7_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10, 4, 7, 6,
-	 8, 8, 8, 8,10, 9,11,10,12,12, 4, 6, 7, 8, 8, 8,
-	 8,10,10,11,11,12,12, 7, 8, 8,10, 9,10,10,12,11,
-	13,12,13,13, 7, 8, 8, 9, 9,10,10,11,11,13,13,14,
-	15, 7, 8, 9,10,10,12,11,14,13,13,14,14,15, 7, 8,
-	 9,10,10,11,12,13,13,15,14,14,15, 8,10,10,12,11,
-	13,13,15,15,15,17,15,15, 8,10,10,11,12,14,13,14,
-	15,17,15,15,15,10,11,11,14,13,14,14,15,15,17,17,
-	16,17,10,11,12,13,13,14,14,14,15,16,15,15,17,11,
-	12,13,14,13,16,16,16,14,17,16,17,17,11,12,13,15,
-	15,15,15,16,15,15,15,15,17,
+static const long _vq_quantlist__44u1__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__44u2__p7_1[] = {
-	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
-	32.5, 45.5, 58.5, 71.5, 
+static const char _vq_lengthlist__44u1__p2_0[] = {
+         2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+         8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
+         8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+         8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
+         8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+         9,
 };
 
-static long _vq_quantmap__44u2__p7_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const static_codebook _44u1__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u1__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u1__p2_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p7_1 = {
-	_vq_quantthresh__44u2__p7_1,
-	_vq_quantmap__44u2__p7_1,
-	13,
-	13
+static const long _vq_quantlist__44u1__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static static_codebook _44u2__p7_1 = {
-	2, 169,
-	_vq_lengthlist__44u2__p7_1,
-	1, -523010048, 1618608128, 4, 0,
-	_vq_quantlist__44u2__p7_1,
-	NULL,
-	&_vq_auxt__44u2__p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u2__p7_2[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__44u1__p3_0[] = {
+         1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+        10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
+        10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
+        13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+        11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
+        10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
+        14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
+        12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
+        11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
+        14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
+        10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
+        10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
+        12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
+        16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
+        19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
+        14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
+        10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
+        12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
+        13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
+        13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
+        12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
+        12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
+        12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
+        17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
+        17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
+         9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
+        17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
+        13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
+        18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
+        17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
+        13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
+        17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
+        13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
+        16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
+        20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
+        11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
+        14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
+        17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
+         0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
+        19,
 };
 
-static long _vq_lengthlist__44u2__p7_2[] = {
-	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 5, 6, 6, 7, 7, 8,
-	 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8,
-	 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 7, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+static const static_codebook _44u1__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u1__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u1__p3_0,
+        0
 };
 
-static float _vq_quantthresh__44u2__p7_2[] = {
-	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
-	2.5, 3.5, 4.5, 5.5, 
+static const long _vq_quantlist__44u1__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u2__p7_2[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__44u1__p4_0[] = {
+         4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
+        10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
+         8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
+        12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
+        10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
+        10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
+        12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
+        10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
+        10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
+        13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
+         8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
+        14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
+        15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
+        12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
+         8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
+        11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
+        11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
+        10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
+        10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
+        11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
+        16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
+        13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
+         9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
+        13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
+        10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
+        15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
+        15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
+        11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
+        16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
+        11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
+        14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
+        16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
+        10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
+        13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
+        16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
+        15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u2__p7_2 = {
-	_vq_quantthresh__44u2__p7_2,
-	_vq_quantmap__44u2__p7_2,
-	13,
-	13
+static const static_codebook _44u1__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u1__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u1__p4_0,
+        0
 };
 
-static static_codebook _44u2__p7_2 = {
-	2, 169,
-	_vq_lengthlist__44u2__p7_2,
-	1, -531103744, 1611661312, 4, 0,
-	_vq_quantlist__44u2__p7_2,
-	NULL,
-	&_vq_auxt__44u2__p7_2,
-	NULL,
-	0
+static const long _vq_quantlist__44u1__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _huff_lengthlist__44u2__short[] = {
-	16,15,15,16,14,16,16,16,16, 9, 8,11,10,10,10,15,
-	16, 6, 3, 7, 5, 7, 9,16,16,11, 7,11, 9,10,12,16,
-	16, 9, 4, 8, 3, 5, 8,16,16,11, 6, 9, 4, 4, 7,16,
-	16,11, 5, 9, 3, 3, 5,12,16,15, 6,11, 5, 5, 6,14,
+static const char _vq_lengthlist__44u1__p5_0[] = {
+         1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+         9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+         9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
+         9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+         9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
+        12,
 };
 
-static static_codebook _huff_book__44u2__short = {
-	2, 64,
-	_huff_lengthlist__44u2__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _44u1__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u1__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u1__p5_0,
+        0
 };
 
-static long _huff_lengthlist__44u3__long[] = {
-	 7,11,14,13,14,12,12,12,12, 2, 5, 8, 9, 8, 9,11,
-	17, 4, 3, 6, 5, 7, 9,15,14, 6, 6, 7, 7, 7, 8,14,
-	17, 8, 5, 7, 4, 5, 7,15,13, 7, 6, 7, 5, 5, 6,14,
-	10, 8, 8, 7, 7, 5, 4, 9,10,12,15,14,16,10, 6, 9,
+static const long _vq_quantlist__44u1__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _huff_book__44u3__long = {
-	2, 64,
-	_huff_lengthlist__44u3__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44u1__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
+         8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
+         9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+        12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
+        15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
+         9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
+        12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
+        12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
+        17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
+        15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
+        15,17,16,17,18,17,17,18, 0,
 };
 
-static long _vq_quantlist__44u3__p1_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _44u1__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u1__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u1__p6_0,
+        0
 };
 
-static long _vq_lengthlist__44u3__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
-	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
-	11, 8,11,11, 8,11,11,11,13,14,11,13,14, 7,11,11,
-	10,13,11,11,13,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
-	11,11,11,14,14,10,12,14, 8,11,11,11,14,13,11,14,
-	13,
+static const long _vq_quantlist__44u1__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44u3__p1_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__44u1__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+         6, 6, 6, 6, 5, 6, 6, 6, 6,
 };
 
-static long _vq_quantmap__44u3__p1_0[] = {
-	    1,    0,    2,
+static const static_codebook _44u1__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u1__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u1__p6_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p1_0 = {
-	_vq_quantthresh__44u3__p1_0,
-	_vq_quantmap__44u3__p1_0,
-	3,
-	3
+static const long _vq_quantlist__44u1__p7_0[] = {
+        3,
+        2,
+        4,
+        1,
+        5,
+        0,
+        6,
 };
 
-static static_codebook _44u3__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u3__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u3__p1_0,
-	NULL,
-	&_vq_auxt__44u3__p1_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44u1__p7_0[] = {
+         1, 3, 2, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8,
 };
 
-static long _vq_quantlist__44u3__p2_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _44u1__p7_0 = {
+        2, 49,
+        (char *)_vq_lengthlist__44u1__p7_0,
+        1, -518017024, 1626677248, 3, 0,
+        (long *)_vq_quantlist__44u1__p7_0,
+        0
 };
 
-static long _vq_lengthlist__44u3__p2_0[] = {
-	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
-	 7, 6, 8, 8, 6, 8, 8, 8, 8, 9, 8, 9, 9, 6, 8, 7,
-	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
-	 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
-	 8,
+static const long _vq_quantlist__44u1__p7_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static float _vq_quantthresh__44u3__p2_0[] = {
-	-0.5, 0.5, 
+static const char _vq_lengthlist__44u1__p7_1[] = {
+         1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
+         8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
+         7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
+        12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
+        12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
+         8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
+        13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
+        14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
+        15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
+        15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
+        15,15,15,15,15,15,15,15,15,
 };
 
-static long _vq_quantmap__44u3__p2_0[] = {
-	    1,    0,    2,
+static const static_codebook _44u1__p7_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u1__p7_1,
+        1, -523010048, 1618608128, 4, 0,
+        (long *)_vq_quantlist__44u1__p7_1,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p2_0 = {
-	_vq_quantthresh__44u3__p2_0,
-	_vq_quantmap__44u3__p2_0,
-	3,
-	3
+static const long _vq_quantlist__44u1__p7_2[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static static_codebook _44u3__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u3__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u3__p2_0,
-	NULL,
-	&_vq_auxt__44u3__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u3__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u3__p3_0[] = {
-	 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
-	10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
-	 9,11,11, 7, 8, 9,10,11,10,11,10,14,13, 9,10,11,
-	13,13, 5, 7, 7,10,10, 7, 9, 8,11,10, 7, 9, 9,11,
-	11, 9,10,10,13,12,10,10,11,13,14, 8,10,10,14,13,
-	10,11,11,15,13, 9,11,11,14,13,13,14,13,17,15,12,
-	13,13,17,14, 8,10,10,14,14, 9,11,11,14,15,10,11,
-	12,14,16,12,13,13,14,17,13,13,14,14,17, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
-	14,10,11,11,15,14, 7, 9, 9,12,12, 9,11,11,13,13,
-	 9,11,11,13,13,11,12,12,15,14,11,12,12,15,16, 7,
-	 9, 9,12,11, 8,11,10,13,12, 9,11,11,12,13,11,12,
-	11,16,14,11,12,13,15,16,10,12,12,17,15,11,12,13,
-	16,15,11,12,12,16,16,15,15,15,16,16,13,14,15, 0,
-	17, 9,11,11,15,15,10,12,11,16,15,11,12,12,15,17,
-	13,15,13,16,15,13,15,14, 0,18, 5, 7, 7,10,10, 7,
-	 9, 9,12,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
-	11,14,15, 7, 9, 9,12,11, 9,11,11,13,12, 8,10,11,
-	11,12,11,12,12,16,15,11,11,12,13,14, 7, 9, 9,12,
-	12, 9,11,11,13,13, 9,11,11,13,13,11,12,12,16,15,
-	12,12,12,15,15, 9,11,11,17,15,11,12,12,17,16,10,
-	11,12,15,15,13,14,15,18,17,13,13,14,15,15, 9,12,
-	12,15,14,11,13,12,16,16,11,12,12,15,15,13,15,14,
-	 0, 0,14,15,14,16,18, 8,10,10,15,15,10,12,12,16,
-	14,10,11,11,16,16,15,16,16,18,16,13,15,14,17,18,
-	 9,11,11,16,15,11,12,13,17,17,11,13,13,16,15,15,
-	16,16,18,18,14,16,15,18,17, 9,11,11,16,16,10,13,
-	12,16,16,11,12,12,16,16,14,16,16,17, 0,14,15,15,
-	18,16,12,14,14, 0, 0,14,15,16, 0, 0,14,15,15, 0,
-	 0,17,17,16, 0, 0,15,16,18,17, 0,11,14,14,18, 0,
-	12,15,13, 0,18,13,15,14,18, 0,15,16,15, 0,18,15,
-	18,17, 0,18, 8,10,10,15,15,10,12,11,15,15,10,11,
-	12,15,15,13,14,15,17, 0,14,15,16,17, 0, 9,11,11,
-	15,15,11,12,12,17,15,10,12,13,16,15,13,15,15,18,
-	18,15,16,17,18,18, 9,12,11,16,16,11,13,13,16,16,
-	11,13,13,18,15,14,15,15,18, 0,16,16,17, 0,17,12,
-	13,13,18,18,13,14,14,17,18,13,14,15,18,17,17,18,
-	18, 0,18,16,16,18,16, 0,12,15,13,18,18,13,14,15,
-	18,18,13,16,14,17,18,15,17,16, 0,18,17, 0,17, 0,
-	 0,
+static const char _vq_lengthlist__44u1__p7_2[] = {
+         2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
+         9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
+         8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+         9, 9, 9,10, 9, 9,10,10, 9,
 };
 
-static float _vq_quantthresh__44u3__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u3__p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u3__p3_0 = {
-	_vq_quantthresh__44u3__p3_0,
-	_vq_quantmap__44u3__p3_0,
-	5,
-	5
-};
-
-static static_codebook _44u3__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u3__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u3__p3_0,
-	NULL,
-	&_vq_auxt__44u3__p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u3__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u3__p4_0[] = {
-	 4, 6, 6, 9, 9, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
-	10, 9,12,11, 9, 9,10,11,12, 6, 7, 7, 9, 9, 7, 7,
-	 7,10,10, 6, 7, 7, 9,10,10,10,10,12,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 7, 7, 7,10, 9, 7, 7, 7,10,
-	10, 9,10, 9,12,11,10,10,10,12,12, 9,10,10,12,12,
-	10,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,12,
-	12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
-	10,12,13,11,12,12,14,13,12,12,12,14,14, 6, 7, 7,
-	10, 9, 7, 8, 7,10,10, 7, 7, 7,10,10,10,10,10,12,
-	12,10,10,10,12,12, 7, 8, 8,10,10, 8, 8, 8,10,10,
-	 7, 8, 8,10,10,10,10,11,11,13,10,10,11,12,13, 6,
-	 7, 7,10,10, 7, 8, 7,10,10, 8, 8, 8,10,10,10,11,
-	10,13,11,10,10,10,12,12,10,10,10,13,12,10,10,10,
-	12,13,10,10,10,13,12,12,11,13,12,14,12,12,13,14,
-	14, 9,10,10,12,13, 9,10,10,12,12,10,10,11,12,13,
-	12,12,11,14,12,12,12,13,14,14, 6, 7, 7, 9, 9, 7,
-	 7, 7,10,10, 7, 7, 8,10,10,10,10,10,12,12,10,10,
-	10,12,12, 6, 7, 7,10,10, 8, 8, 8,10,10, 7, 7, 8,
-	10,10,10,10,10,12,12,10,10,11,11,13, 7, 8, 8,10,
-	10, 7, 8, 8,10,10, 8, 8, 8,10,10,10,10,10,12,12,
-	10,11,10,13,11, 9,10,10,13,12,10,11,10,13,12, 9,
-	10,10,12,13,12,13,12,14,14,12,11,12,12,14,10,10,
-	10,12,13,10,10,11,12,13,10,10,10,12,12,12,13,12,
-	14,14,12,12,11,14,12, 9,10, 9,12,12,10,10,10,13,
-	13, 9,10,10,13,13,12,13,13,15,14,12,12,13,14,14,
-	 9,10,10,13,13,10,10,10,12,13,10,10,10,13,12,13,
-	12,13,14,15,12,13,13,15,14, 9,10,10,13,12,10,10,
-	10,13,12,10,10,10,12,13,12,13,12,14,14,13,12,12,
-	14,14,12,12,12,15,14,12,11,12,14,14,12,13,12,14,
-	14,14,12,14,12,16,14,14,14,16,16,11,12,12,14,14,
-	11,12,11,15,13,12,12,12,14,15,13,14,12,16,13,14,
-	14,15,16,16, 9,10,10,12,12, 9,10,10,13,12, 9,10,
-	10,13,13,12,12,12,14,14,12,13,13,14,15, 9,10,10,
-	13,12,10,11,10,13,12,10,10,10,12,13,12,13,12,14,
-	14,12,12,13,14,15, 9,10,10,13,13,10,10,10,12,13,
-	10,10,10,13,13,12,13,13,14,15,13,13,12,14,14,11,
-	12,12,14,14,12,13,12,15,14,11,11,12,14,15,14,14,
-	14,16,16,14,12,14,13,16,12,12,12,14,15,12,12,13,
-	14,15,12,12,11,14,14,14,14,14,16,16,14,14,12,16,
-	12,
+static const static_codebook _44u1__p7_2 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u1__p7_2,
+        1, -531103744, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u1__p7_2,
+        0
 };
 
-static float _vq_quantthresh__44u3__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _huff_lengthlist__44u1__short[] = {
+        12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
+         4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
+         6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
+        11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
 };
 
-static long _vq_quantmap__44u3__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _huff_book__44u1__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44u1__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p4_0 = {
-	_vq_quantthresh__44u3__p4_0,
-	_vq_quantmap__44u3__p4_0,
-	5,
-	5
+static const char _huff_lengthlist__44u2__long[] = {
+         5, 9,14,12,15,13,10,13, 7, 4, 5, 6, 8, 7, 8,12,
+        13, 4, 3, 5, 5, 6, 9,15,12, 6, 5, 6, 6, 6, 7,14,
+        14, 7, 4, 6, 4, 6, 8,15,12, 6, 6, 5, 5, 5, 6,14,
+         9, 7, 8, 6, 7, 5, 4,10,10,13,14,14,15,10, 6, 8,
 };
 
-static static_codebook _44u3__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u3__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u3__p4_0,
-	NULL,
-	&_vq_auxt__44u3__p4_0,
-	NULL,
-	0
+static const static_codebook _huff_book__44u2__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44u2__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44u3__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u2__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u3__p5_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 6, 8, 8,
-	 9, 9, 4, 4, 4, 6, 7, 8, 8, 9, 9, 6, 7, 6, 8, 8,
-	 9, 9,10,10, 6, 6, 7, 8, 8, 9, 9,10,10, 8, 8, 8,
-	 9, 9,10,10,11,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
-	 9, 9,10,10,11,11,12,12, 9, 9,10,10,10,11,11,12,
-	12,
+static const char _vq_lengthlist__44u2__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+        10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+        11, 8,11,11, 8,11,11,11,13,14,11,13,13, 7,11,11,
+        10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
+        11,11,11,14,13,10,12,13, 8,11,11,11,13,13,11,13,
+        13,
 };
 
-static float _vq_quantthresh__44u3__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44u2__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u2__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u2__p1_0,
+        0
 };
 
-static long _vq_quantmap__44u3__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44u2__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p5_0 = {
-	_vq_quantthresh__44u3__p5_0,
-	_vq_quantmap__44u3__p5_0,
-	9,
-	9
+static const char _vq_lengthlist__44u2__p2_0[] = {
+         2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+         8, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
+         8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+         7,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+         8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+         9,
 };
 
-static static_codebook _44u3__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u3__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u3__p5_0,
-	NULL,
-	&_vq_auxt__44u3__p5_0,
-	NULL,
-	0
+static const static_codebook _44u2__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u2__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u2__p2_0,
+        0
 };
 
-static long _vq_quantlist__44u3__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44u2__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u3__p6_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,13,14, 4, 6, 5,
-	 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
-	 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
-	12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,14,
-	15, 8, 9, 9,10,10,11,11,12,12,13,12,16,16, 8, 9,
-	 9,10,10,11,11,12,12,12,12,16,16,10,11,10,11,11,
-	12,12,13,13,13,13,17,16,10,11,11,11,11,12,12,12,
-	12,13,13,17,17,11,11,12,12,12,13,13,13,14,14,14,
-	16,17,11,12,11,12,12,13,13,14,14,14,14,19,17,14,
-	14,14,16,15,16,16,16,17,17,17,20,19,14,15,15,15,
-	15,15,16,16,17,17,17,20,19,
+static const char _vq_lengthlist__44u2__p3_0[] = {
+         2, 4, 4, 7, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+         9, 9,12,11, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
+         9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
+        12,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
+        11, 9,11,10,13,13,10,11,11,13,13, 8,10,10,14,13,
+        10,11,11,15,14, 9,11,11,15,14,13,14,13,16,14,12,
+        13,13,15,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
+        11,14,15,12,13,13,15,15,12,13,14,15,16, 5, 7, 7,
+        10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
+        13,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+         9,11,11,13,13,12,13,12,14,14,11,12,13,15,15, 7,
+         9, 9,12,12, 8,11,10,13,12, 9,11,11,13,13,11,13,
+        12,15,13,11,13,13,15,16, 9,12,11,15,15,11,12,12,
+        16,15,11,12,13,16,16,13,14,15,16,15,13,15,15,17,
+        17, 9,11,11,14,15,10,12,12,15,15,11,13,12,15,16,
+        13,15,14,16,16,13,15,15,17,19, 5, 7, 7,10,10, 7,
+         9, 9,12,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+        11,13,14, 7, 9, 9,12,12, 9,11,11,13,13, 9,10,11,
+        12,13,11,13,12,16,15,11,12,12,14,15, 7, 9, 9,12,
+        12, 9,11,11,13,13, 9,11,11,13,12,11,13,12,15,16,
+        12,13,13,15,14, 9,11,11,15,14,11,13,12,16,15,10,
+        11,12,15,15,13,14,14,18,17,13,14,14,15,17,10,11,
+        11,14,15,11,13,12,15,17,11,13,12,15,16,13,15,14,
+        18,17,14,15,15,16,18, 7,10,10,14,14,10,12,12,15,
+        15,10,12,12,15,15,14,15,15,18,17,13,15,15,16,16,
+         9,11,11,16,15,11,13,13,16,18,11,13,13,16,16,15,
+        16,16, 0, 0,14,15,16,18,17, 9,11,11,15,15,10,13,
+        12,17,16,11,12,13,16,17,14,15,16,19,19,14,15,15,
+         0,20,12,14,14, 0, 0,13,14,16,19,18,13,15,16,20,
+        17,16,18, 0, 0, 0,15,16,17,18,19,11,14,14, 0,19,
+        12,15,14,17,17,13,15,15, 0, 0,16,17,15,20,19,15,
+        17,16,19, 0, 8,10,10,14,15,10,12,11,15,15,10,11,
+        12,16,15,13,14,14,19,17,14,15,15, 0, 0, 9,11,11,
+        16,15,11,13,13,17,16,10,12,13,16,17,14,15,15,18,
+        18,14,15,16,20,19, 9,12,12, 0,15,11,13,13,16,17,
+        11,13,13,19,17,14,16,16,18,17,15,16,16,17,19,11,
+        14,14,18,18,13,14,15, 0, 0,12,14,15,19,18,15,16,
+        19, 0,19,15,16,19,19,17,12,14,14,16,19,13,15,15,
+         0,17,13,15,14,18,18,15,16,15, 0,18,16,17,17, 0,
+         0,
 };
 
-static float _vq_quantthresh__44u3__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44u2__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u2__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u2__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u3__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44u2__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p6_0 = {
-	_vq_quantthresh__44u3__p6_0,
-	_vq_quantmap__44u3__p6_0,
-	13,
-	13
-};
-
-static static_codebook _44u3__p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u3__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u3__p6_0,
-	NULL,
-	&_vq_auxt__44u3__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u3__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u2__p4_0[] = {
+         4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+         9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
+        11,12, 5, 7, 7, 9, 9, 6, 8, 7,10,10, 7, 8, 8,10,
+        10, 9,10,10,12,11, 9,10,10,12,11, 9,10,10,12,12,
+        10,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
+        12,12,13,14, 9,10,10,12,12, 9,10,10,12,13,10,10,
+        10,12,13,11,12,12,14,13,12,12,12,14,13, 5, 7, 7,
+        10, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+        12,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+         8, 9, 9,11,11,10,11,11,12,13,10,11,11,13,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,13,11,10,11,11,13,13, 9,10,10,13,13,10,11,11,
+        13,13,10,11,11,14,13,12,11,13,12,15,12,13,13,15,
+        15, 9,10,10,12,13,10,11,10,13,13,10,11,11,13,13,
+        12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9,10, 7,
+         8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
+        11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+        11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
+        10,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+        10,11,13,13,12,13,13,15,15,12,11,13,12,14, 9,10,
+        10,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
+        15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+        13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
+         9,10,10,13,13,10,11,11,13,14,10,11,11,14,12,13,
+        13,14,14,16,12,13,13,15,14, 9,10,10,13,13,10,11,
+        10,14,13,10,11,11,13,14,12,14,13,16,14,13,13,13,
+        14,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
+        15,14,12,15,12,16,14,15,15,17,16,11,12,12,14,15,
+        11,13,11,15,14,12,13,13,15,16,13,15,12,17,13,14,
+        15,15,16,16, 8, 9, 9,12,12, 9,10,10,13,13, 9,10,
+        10,13,13,12,13,12,14,14,12,13,13,15,15, 9,10,10,
+        13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
+        14,12,12,14,14,16, 9,10,10,13,13,10,11,11,13,14,
+        10,11,11,14,13,13,13,13,15,15,13,14,13,16,14,11,
+        12,12,14,14,12,13,13,16,15,11,12,13,14,15,14,15,
+        15,16,16,14,13,15,13,17,11,12,12,14,15,12,13,13,
+        15,16,11,13,12,15,15,14,15,14,16,16,14,15,12,17,
+        13,
 };
 
-static long _vq_lengthlist__44u3__p6_1[] = {
-	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
-	 6, 5, 6, 6, 5, 5, 6, 6, 6,
+static const static_codebook _44u2__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u2__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u2__p4_0,
+        0
 };
 
-static float _vq_quantthresh__44u3__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u2__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__44u3__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u2__p5_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8,
+        10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+         9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
+         9, 9,10,11,12,12, 8, 8, 8, 9, 9,10,10,12,12,10,
+        10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,
+        13,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p6_1 = {
-	_vq_quantthresh__44u3__p6_1,
-	_vq_quantmap__44u3__p6_1,
-	5,
-	5
+static const static_codebook _44u2__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u2__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u2__p5_0,
+        0
 };
 
-static static_codebook _44u3__p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u3__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u3__p6_1,
-	NULL,
-	&_vq_auxt__44u3__p6_1,
-	NULL,
-	0
+static const long _vq_quantlist__44u2__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44u3__p7_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44u2__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10,10,11,11,14,13, 4, 6, 5,
+         8, 8, 9, 9,11,10,12,11,15,14, 4, 5, 6, 8, 8, 9,
+         9,11,11,11,11,14,14, 6, 8, 8,10, 9,11,11,11,11,
+        12,12,15,15, 6, 8, 8, 9, 9,11,11,11,12,12,12,15,
+        15, 8,10,10,11,11,11,11,12,12,13,13,15,16, 8,10,
+        10,11,11,11,11,12,12,13,13,16,16,10,11,11,12,12,
+        12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,13,
+        13,13,14,16,17,11,12,12,13,13,13,13,14,14,15,14,
+        18,17,11,12,12,13,13,13,13,14,14,14,15,19,18,14,
+        15,15,15,15,16,16,18,19,18,18, 0, 0,14,15,15,16,
+        15,17,17,16,18,17,18, 0, 0,
 };
 
-static long _vq_lengthlist__44u3__p7_0[] = {
-	 1, 4, 4, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9,
-	 9, 9, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8,
+static const static_codebook _44u2__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u2__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u2__p6_0,
+        0
 };
 
-static float _vq_quantthresh__44u3__p7_0[] = {
-	-892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 637.5, 892.5, 
+static const long _vq_quantlist__44u2__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u3__p7_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__44u2__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+         6, 5, 6, 6, 5, 5, 6, 6, 6,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p7_0 = {
-	_vq_quantthresh__44u3__p7_0,
-	_vq_quantmap__44u3__p7_0,
-	9,
-	9
+static const static_codebook _44u2__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u2__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u2__p6_1,
+        0
 };
 
-static static_codebook _44u3__p7_0 = {
-	2, 81,
-	_vq_lengthlist__44u3__p7_0,
-	1, -515907584, 1627381760, 4, 0,
-	_vq_quantlist__44u3__p7_0,
-	NULL,
-	&_vq_auxt__44u3__p7_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u2__p7_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44u3__p7_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const char _vq_lengthlist__44u2__p7_0[] = {
+         1, 3, 2,12,12,12,12,12,12, 4,12,12,12,12,12,12,
+        12,12, 5,12,12,12,12,12,12,12,12,12,12,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,
 };
 
-static long _vq_lengthlist__44u3__p7_1[] = {
-	 1, 4, 4, 6, 5, 7, 7, 9, 8,10,10,11,11,12,13, 4,
-	 7, 6, 7, 7, 9, 9,10,10,11,11,14,13,14,13, 4, 6,
-	 7, 7, 8, 9, 9,10,10,12,12,13,13,13,13, 6, 8, 8,
-	10, 9,11,11,12,12,13,13,14,14,15,14, 6, 8, 8, 9,
-	 9,11,11,12,12,14,14,14,15,15,15, 8, 9, 9,11,10,
-	13,12,14,14,14,14,15,16,15,15, 8, 9, 9,11,11,12,
-	12,14,14,15,14,15,15,14,17, 9,10,10,13,12,14,14,
-	15,14,14,17,15,15,16,15, 9,11,11,12,13,14,14,15,
-	15,15,16,15,17,16,17,11,12,12,14,14,15,14,16,16,
-	16,15,15,17,16,16,11,12,13,14,15,15,15,15,15,16,
-	16,17,17,16,17,12,13,13,15,14,15,15,15,15,16,16,
-	16,17,17,17,13,12,14,14,15,15,15,15,16,17,17,15,
-	17,17,17,12,14,14,16,15,17,16,17,16,17,16,17,17,
-	17,17,14,13,14,15,16,17,17,17,15,17,17,17,16,17,
-	16,
+static const static_codebook _44u2__p7_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u2__p7_0,
+        1, -516612096, 1626677248, 4, 0,
+        (long *)_vq_quantlist__44u2__p7_0,
+        0
 };
 
-static float _vq_quantthresh__44u3__p7_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+static const long _vq_quantlist__44u2__p7_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__44u3__p7_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const char _vq_lengthlist__44u2__p7_1[] = {
+         1, 4, 4, 7, 6, 7, 6, 8, 7, 9, 7, 9, 8, 4, 7, 6,
+         8, 8, 9, 8,10, 9,10,10,11,11, 4, 7, 7, 8, 8, 8,
+         8, 9,10,11,11,11,11, 6, 8, 8,10,10,10,10,11,11,
+        12,12,12,12, 7, 8, 8,10,10,10,10,11,11,12,12,13,
+        13, 7, 9, 9,11,10,12,12,13,13,14,13,14,14, 7, 9,
+         9,10,11,11,12,13,13,13,13,16,14, 9,10,10,12,12,
+        13,13,14,14,15,16,15,16, 9,10,10,12,12,12,13,14,
+        14,14,15,16,15,10,12,12,13,13,15,13,16,16,15,17,
+        17,17,10,11,11,12,14,14,14,15,15,17,17,15,17,11,
+        12,12,14,14,14,15,15,15,17,16,17,17,10,12,12,13,
+        14,14,14,17,15,17,17,17,17,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p7_1 = {
-	_vq_quantthresh__44u3__p7_1,
-	_vq_quantmap__44u3__p7_1,
-	15,
-	15
+static const static_codebook _44u2__p7_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u2__p7_1,
+        1, -523010048, 1618608128, 4, 0,
+        (long *)_vq_quantlist__44u2__p7_1,
+        0
 };
 
-static static_codebook _44u3__p7_1 = {
-	2, 225,
-	_vq_lengthlist__44u3__p7_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__44u3__p7_1,
-	NULL,
-	&_vq_auxt__44u3__p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__44u2__p7_2[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44u3__p7_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const char _vq_lengthlist__44u2__p7_2[] = {
+         2, 5, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 5, 6, 6,
+         7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 6, 7, 7, 8,
+         7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 8, 8, 8, 8, 8,
+         9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 7, 8,
+         8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,
 };
 
-static long _vq_lengthlist__44u3__p7_2[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 5, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9,10, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
-	 9, 9,10, 9,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
-	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
-	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9,10,10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,
-	 9,10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const static_codebook _44u2__p7_2 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u2__p7_2,
+        1, -531103744, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u2__p7_2,
+        0
 };
 
-static float _vq_quantthresh__44u3__p7_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const char _huff_lengthlist__44u2__short[] = {
+        13,15,17,17,15,15,12,17,11, 9, 7,10,10, 9,12,17,
+        10, 6, 3, 6, 5, 7,10,17,15,10, 6, 9, 8, 9,11,17,
+        15, 8, 4, 7, 3, 5, 9,16,16,10, 5, 8, 4, 5, 8,16,
+        13,11, 5, 8, 3, 3, 5,14,13,12, 7,10, 5, 5, 7,14,
 };
 
-static long _vq_quantmap__44u3__p7_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const static_codebook _huff_book__44u2__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44u2__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u3__p7_2 = {
-	_vq_quantthresh__44u3__p7_2,
-	_vq_quantmap__44u3__p7_2,
-	17,
-	17
+static const char _huff_lengthlist__44u3__long[] = {
+         6, 9,13,12,14,11,10,13, 8, 4, 5, 7, 8, 7, 8,12,
+        11, 4, 3, 5, 5, 7, 9,14,11, 6, 5, 6, 6, 6, 7,13,
+        13, 7, 5, 6, 4, 5, 7,14,11, 7, 6, 6, 5, 5, 6,13,
+         9, 7, 8, 6, 7, 5, 3, 9, 9,12,13,12,14,10, 6, 7,
 };
 
-static static_codebook _44u3__p7_2 = {
-	2, 289,
-	_vq_lengthlist__44u3__p7_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u3__p7_2,
-	NULL,
-	&_vq_auxt__44u3__p7_2,
-	NULL,
-	0
+static const static_codebook _huff_book__44u3__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44u3__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _huff_lengthlist__44u3__short[] = {
-	17,17,17,17,17,17,16,16,16,12,11,13,11,12,11,15,
-	16, 9, 4, 8, 5, 7, 9,15,16,14, 9,12,10,10,12,16,
-	16,11, 4, 9, 3, 4, 8,16,16,12, 6,10, 3, 4, 7,16,
-	16,12, 6,11, 3, 3, 4,12,16,16, 7,13, 5, 5, 6,13,
+static const long _vq_quantlist__44u3__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _huff_book__44u3__short = {
-	2, 64,
-	_huff_lengthlist__44u3__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44u3__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+        10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+        11, 8,11,11, 8,11,11,11,13,14,11,14,14, 8,11,11,
+        10,14,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
+        11,11,11,14,14,10,12,14, 8,11,11,11,14,14,11,14,
+        13,
 };
 
-static long _huff_lengthlist__44u4__long[] = {
-	 3, 7,11,11,12,11,11,12, 5, 3, 5, 7, 8, 8, 9,11,
-	 9, 4, 4, 6, 6, 7, 9,15,10, 6, 6, 7, 7, 7, 8,14,
-	12, 7, 5, 6, 4, 5, 7,15,10, 7, 6, 7, 5, 5, 6,13,
-	 9, 8, 8, 7, 7, 5, 4, 8,10,12,14,13,14,10, 5, 7,
+static const static_codebook _44u3__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u3__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u3__p1_0,
+        0
 };
 
-static static_codebook _huff_book__44u4__long = {
-	2, 64,
-	_huff_lengthlist__44u4__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44u3__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44u4__p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u3__p2_0[] = {
+         2, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+         8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 7, 8,
+         8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+         8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+         8, 8, 8,10,10, 8, 8,10, 7, 8, 8, 8,10,10, 8,10,
+         9,
 };
 
-static long _vq_lengthlist__44u4__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
-	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
-	11, 8,11,11, 8,11,11,11,13,14,11,14,14, 7,11,10,
-	10,14,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
-	11,11,11,14,14,10,12,14, 8,11,11,11,14,14,11,14,
-	13,
+static const static_codebook _44u3__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u3__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u3__p2_0,
+        0
 };
 
-static float _vq_quantthresh__44u4__p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u3__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u4__p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u3__p3_0[] = {
+         2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+         9, 9,12,12, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
+         9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
+        13,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
+        11, 9,11,10,13,13,10,11,11,14,13, 8,10,10,14,13,
+        10,11,11,15,14, 9,11,11,14,14,13,14,13,16,16,12,
+        13,13,15,15, 8,10,10,13,14, 9,11,11,14,14,10,11,
+        11,14,15,12,13,13,15,15,13,14,14,15,16, 5, 7, 7,
+        10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
+        14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+         9,11,11,13,13,12,12,13,15,15,11,12,13,15,16, 7,
+         9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
+        12,15,13,11,13,13,15,16, 9,12,11,15,14,11,12,13,
+        16,15,11,13,13,15,16,14,14,15,17,16,13,15,16, 0,
+        17, 9,11,11,15,15,10,13,12,15,15,11,13,13,15,16,
+        13,15,13,16,15,14,16,15, 0,19, 5, 7, 7,10,10, 7,
+         9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,14,10,11,
+        12,14,14, 7, 9, 9,12,12, 9,11,11,14,13, 9,10,11,
+        12,13,11,13,13,16,16,11,12,13,13,16, 7, 9, 9,12,
+        12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,15,
+        12,13,12,15,14, 9,11,11,15,14,11,13,12,16,16,10,
+        12,12,15,15,13,15,15,17,19,13,14,15,16,17,10,12,
+        12,15,15,11,13,13,16,16,11,13,13,15,16,13,15,15,
+         0, 0,14,15,15,16,16, 8,10,10,14,14,10,12,12,15,
+        15,10,12,11,15,16,14,15,15,19,20,13,14,14,18,16,
+         9,11,11,15,15,11,13,13,17,16,11,13,13,16,16,15,
+        17,17,20,20,14,15,16,17,20, 9,11,11,15,15,10,13,
+        12,16,15,11,13,13,15,17,14,16,15,18, 0,14,16,15,
+        18,20,12,14,14, 0, 0,14,14,16, 0, 0,13,16,15, 0,
+         0,17,17,18, 0, 0,16,17,19,19, 0,12,14,14,18, 0,
+        12,16,14, 0,17,13,15,15,18, 0,16,18,17, 0,17,16,
+        18,17, 0, 0, 7,10,10,14,14,10,12,11,15,15,10,12,
+        12,16,15,13,15,15,18, 0,14,15,15,17, 0, 9,11,11,
+        15,15,11,13,13,16,16,11,12,13,16,16,14,15,16,17,
+        17,14,16,16,16,18, 9,11,12,16,16,11,13,13,17,17,
+        11,14,13,20,17,15,16,16,19, 0,15,16,17, 0,19,11,
+        13,14,17,16,14,15,15,20,18,13,14,15,17,19,16,18,
+        18, 0,20,16,16,19,17, 0,12,15,14,17, 0,14,15,15,
+        18,19,13,16,15,19,20,15,18,18, 0,20,17, 0,16, 0,
+         0,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p1_0 = {
-	_vq_quantthresh__44u4__p1_0,
-	_vq_quantmap__44u4__p1_0,
-	3,
-	3
+static const static_codebook _44u3__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u3__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u3__p3_0,
+        0
 };
 
-static static_codebook _44u4__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u4__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u4__p1_0,
-	NULL,
-	&_vq_auxt__44u4__p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u3__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__44u4__p2_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u3__p4_0[] = {
+         4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+         9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
+        11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+        10, 9,10, 9,12,11, 9,10,10,12,11, 9,10, 9,12,12,
+         9,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
+        12,12,13,14, 9, 9,10,12,12, 9,10,10,12,12, 9,10,
+        10,12,13,11,12,11,14,13,12,12,12,14,13, 5, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+        12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+         8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
+        13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,15,
+        15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
+        12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
+         8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
+        11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+        10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
+        11,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+        10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
+        11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
+        15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+        13, 9,10,10,13,13,12,13,13,15,14,12,12,12,14,13,
+         9,10,10,13,12,10,11,11,13,13,10,11,11,14,12,13,
+        13,14,14,16,12,13,13,15,15, 9,10,10,13,13,10,11,
+        10,14,13,10,11,11,13,14,12,14,13,15,14,13,13,13,
+        15,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
+        14,14,12,15,12,16,14,15,15,17,15,11,12,12,14,14,
+        11,13,11,15,14,12,13,13,15,15,13,15,12,17,13,14,
+        15,15,16,16, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
+        10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
+        13,12,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
+        15,12,12,13,14,16, 9,10,10,13,13,10,11,11,13,14,
+        10,11,11,14,13,12,13,13,14,15,13,14,13,16,14,11,
+        12,12,14,14,12,13,13,15,14,11,12,13,14,15,14,15,
+        15,16,16,13,13,15,13,16,11,12,12,14,15,12,13,13,
+        14,15,11,13,12,15,14,14,15,15,16,16,14,15,12,16,
+        13,
 };
 
-static long _vq_lengthlist__44u4__p2_0[] = {
-	 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
-	 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
-	 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
-	 8, 8, 8,10, 9, 8, 8, 9, 6, 8, 8, 8,10,10, 8,10,
-	 9,
+static const static_codebook _44u3__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u3__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u3__p4_0,
+        0
 };
 
-static float _vq_quantthresh__44u4__p2_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u3__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__44u4__p2_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u3__p5_0[] = {
+         2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
+        10,10, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
+         9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,10, 7, 8, 8,
+         9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+        10,10,11,10,11,11,12,12, 9,10,10,10,10,11,11,12,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p2_0 = {
-	_vq_quantthresh__44u4__p2_0,
-	_vq_quantmap__44u4__p2_0,
-	3,
-	3
+static const static_codebook _44u3__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u3__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u3__p5_0,
+        0
 };
 
-static static_codebook _44u4__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u4__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u4__p2_0,
-	NULL,
-	&_vq_auxt__44u4__p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u3__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantlist__44u4__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u3__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,13,14, 4, 6, 5,
+         8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
+         9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+        12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
+        15, 8, 9, 9,11,10,11,11,12,12,13,13,15,16, 8, 9,
+         9,10,11,11,11,12,12,13,13,16,16,10,10,11,11,11,
+        12,12,13,13,13,14,17,16, 9,10,11,12,11,12,12,13,
+        13,13,13,16,18,11,12,11,12,12,13,13,13,14,15,14,
+        17,17,11,11,12,12,12,13,13,13,14,14,15,18,17,14,
+        15,15,15,15,16,16,17,17,19,18, 0,20,14,15,14,15,
+        15,16,16,16,17,18,16,20,18,
 };
 
-static long _vq_lengthlist__44u4__p3_0[] = {
-	 2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
-	10, 9,12,12, 8, 9, 9,12,12, 5, 7, 7,10, 9, 7, 9,
-	 9,11,11, 7, 8, 9,10,11,10,11,11,13,13, 9,10,11,
-	13,13, 5, 7, 7, 9,10, 7, 9, 9,11,11, 7, 9, 9,11,
-	11, 9,11,10,13,12,10,11,11,13,13, 8,10,10,13,13,
-	10,11,11,15,13, 9,11,11,14,13,13,15,13,16,15,12,
-	13,13,15,15, 8,10,10,13,14, 9,11,11,14,14,10,11,
-	12,14,16,12,13,13,14,16,13,14,14,15,17, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
-	14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
-	 9,11,11,13,13,11,12,13,15,15,11,13,13,16,15, 7,
-	 9, 9,11,11, 9,11,10,13,12, 9,11,12,13,13,11,13,
-	12,16,14,11,13,13,15,16,10,12,12,18,15,11,12,13,
-	16,15,11,13,13,17,16,15,15,15,17,17,14,15,16,18,
-	19, 9,11,11,15,15,10,12,11,15,16,11,13,13,15,16,
-	13,15,13,18,15,14,15,15,17,19, 5, 7, 7,10,10, 7,
-	 9, 9,12,11, 7, 9, 9,11,12,10,12,11,14,14,10,11,
-	12,14,15, 7, 9, 9,11,11, 9,11,11,13,12, 9,10,11,
-	12,13,11,13,13,16,17,11,11,13,14,15, 7, 9, 9,12,
-	12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,15,16,
-	11,13,13,16,15, 9,11,11,16,15,11,13,12,16,15,10,
-	12,12,16,15,14,15,16,19,17,13,14,15,15,16,10,11,
-	12,15,15,11,13,13,16,16,11,13,12,16,17,14,15,15,
-	18,17,14,16,14,16,19, 7,10,10,15,14,10,12,12,16,
-	15,10,11,11,16,15,14,16,16,19,18,13,15,14,17,17,
-	 9,11,11,17,16,11,13,14,18,17,11,13,13,16,16,15,
-	16,17,19, 0,14,15,18,16,19, 9,11,11,16,15,11,13,
-	12,18,16,11,13,13,17,16,14,16,16,17,19,15,16,15,
-	18, 0,12,14,15,18,19,13,15,16,19,17,14,16,15,18,
-	 0,17,16,19, 0,18,16,17,18, 0, 0,11,13,14,18,19,
-	13,15,13,19,19,14,15,15,17,17,15,17,15,19,17,16,
-	18,18,19, 0, 8,10,10,14,14,10,12,11,15,15,10,11,
-	12,15,17,13,15,15,17,16,14,15,15,18, 0, 9,11,11,
-	15,15,11,13,13,18,16,10,12,13,16,17,14,15,16,17,
-	18,14,15,17,19,19, 9,12,12,15,16,11,13,13,16,17,
-	11,14,13,19,16,14,16,15,18,19,15,16,18,19,18,12,
-	14,14,19,18,13,15,17,18,17,13,14,15,18, 0,16, 0,
-	 0,18,18,16,15, 0,17,19,12,15,14,17, 0,13,15,16,
-	19,18,13,16,15, 0,19,16,18,16,19,18,17,19,16, 0,
-	19,
+static const static_codebook _44u3__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u3__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u3__p6_0,
+        0
 };
 
-static float _vq_quantthresh__44u4__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u3__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantmap__44u4__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u3__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+         6, 5, 6, 6, 5, 5, 6, 6, 6,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p3_0 = {
-	_vq_quantthresh__44u4__p3_0,
-	_vq_quantmap__44u4__p3_0,
-	5,
-	5
+static const static_codebook _44u3__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u3__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u3__p6_1,
+        0
 };
 
-static static_codebook _44u4__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u4__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u4__p3_0,
-	NULL,
-	&_vq_auxt__44u4__p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u3__p7_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44u4__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u3__p7_0[] = {
+         1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10,
+        10,10, 4,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,
 };
 
-static long _vq_lengthlist__44u4__p4_0[] = {
-	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 9,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,12,11, 9,10,10,12,11, 9, 9, 9,12,11,
-	 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
-	11,12,13,14, 9, 9, 9,11,12, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,11,14,13,11,12,12,13,13, 5, 7, 7,
-	 9, 9, 7, 8, 8,10,10, 7, 7, 8,10,10, 9,10,10,12,
-	12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
-	 8, 9, 9,11,11,10,10,11,11,13,10,10,11,12,13, 6,
-	 7, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
-	10,13,11,10,11,11,13,12, 9,10,10,12,12,10,10,11,
-	12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,
-	14, 9,10,10,12,12, 9,11,10,13,12,10,11,11,13,13,
-	11,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7,
-	 8, 7,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
-	10,12,12, 6, 8, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
-	10,11,10,11,11,12,13,10,10,11,11,13, 7, 8, 8,10,
-	10, 8, 9, 9,10,11, 8, 9, 8,11,10,10,11,11,13,12,
-	10,11,10,13,11, 9,10,10,13,12,10,11,11,13,13, 9,
-	10,10,12,13,12,13,13,15,14,11,11,13,12,14, 9,10,
-	10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,
-	14,14,12,13,11,15,12, 8, 9, 9,12,12, 9,10,10,13,
-	12, 9,10,10,12,12,12,13,12,14,14,11,12,12,14,13,
-	 9,10,10,12,12,10,10,11,13,13,10,11,11,13,12,12,
-	13,13,14,15,12,13,13,15,14, 9,10,10,12,12, 9,11,
-	10,13,12,10,10,11,12,13,12,13,12,15,14,12,13,13,
-	14,14,11,12,12,14,13,11,11,12,13,14,12,13,13,15,
-	14,13,12,14,12,16,14,15,14,16,16,11,12,12,14,14,
-	11,12,11,15,13,12,13,13,14,15,13,14,12,16,13,14,
-	14,15,16,16, 8, 9, 9,12,12, 9,10,10,12,12, 9,10,
-	10,12,13,11,12,12,14,13,12,12,13,14,14, 9,10,10,
-	12,12,10,11,11,13,12,10,10,11,12,13,12,13,13,14,
-	14,12,12,13,14,15, 9,10,10,12,13,10,11,11,12,13,
-	10,11,10,13,13,12,13,13,14,15,12,13,13,15,14,11,
-	12,12,14,14,12,13,13,15,14,11,11,12,14,15,14,14,
-	14,17,16,13,12,14,13,16,11,12,12,13,15,12,13,13,
-	14,15,11,12,11,14,14,14,15,14,15,17,13,14,12,16,
-	12,
+static const static_codebook _44u3__p7_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u3__p7_0,
+        1, -515907584, 1627381760, 4, 0,
+        (long *)_vq_quantlist__44u3__p7_0,
+        0
 };
 
-static float _vq_quantthresh__44u4__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u3__p7_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__44u4__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u3__p7_1[] = {
+         1, 4, 4, 6, 6, 7, 6, 8, 7, 9, 8,10, 9,11,11, 4,
+         7, 7, 8, 7, 9, 9,10,10,11,11,11,11,12,12, 4, 7,
+         7, 7, 7, 9, 9,10,10,11,11,12,12,12,11, 6, 8, 8,
+         9, 9,10,10,11,11,12,12,13,12,13,13, 6, 8, 8, 9,
+         9,10,11,11,11,12,12,13,14,13,13, 8, 9, 9,11,11,
+        12,12,12,13,14,13,14,14,14,15, 8, 9, 9,11,11,11,
+        12,13,14,13,14,15,17,14,15, 9,10,10,12,12,13,13,
+        13,14,15,15,15,16,16,16, 9,11,11,12,12,13,13,14,
+        14,14,15,16,16,16,16,10,12,12,13,13,14,14,15,15,
+        15,16,17,17,17,17,10,12,11,13,13,15,14,15,14,16,
+        17,16,16,16,16,11,13,12,14,14,14,14,15,16,17,16,
+        17,17,17,17,11,13,12,14,14,14,15,17,16,17,17,17,
+        17,17,17,12,13,13,15,16,15,16,17,17,16,16,17,17,
+        17,17,12,13,13,15,15,15,16,17,17,17,16,17,16,17,
+        17,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p4_0 = {
-	_vq_quantthresh__44u4__p4_0,
-	_vq_quantmap__44u4__p4_0,
-	5,
-	5
+static const static_codebook _44u3__p7_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u3__p7_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44u3__p7_1,
+        0
 };
 
-static static_codebook _44u4__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u4__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u4__p4_0,
-	NULL,
-	&_vq_auxt__44u4__p4_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u3__p7_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__44u4__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44u3__p7_2[] = {
+         2, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+        10,10, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
+         9,10, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+        10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
+         9,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10, 7, 8, 8, 9, 8, 9, 9, 9, 9,10,
+         9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9,10,
+         9,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
+         9,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+         9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+         9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,10,
+        11,
 };
 
-static long _vq_lengthlist__44u4__p5_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 4, 7, 6, 8, 7,
-	10, 9, 4, 4, 5, 6, 7, 7, 8, 9, 9, 6, 7, 6, 8, 8,
-	 8, 8,10,10, 6, 6, 7, 8, 8, 8, 9,10,10, 7, 8, 7,
-	 9, 8,10,10,11,11, 7, 7, 8, 8, 9,10,10,11,11, 9,
-	10, 9,10,10,11,11,12,12, 9, 9,10,10,10,11,11,12,
-	12,
+static const static_codebook _44u3__p7_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u3__p7_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u3__p7_2,
+        0
 };
 
-static float _vq_quantthresh__44u4__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const char _huff_lengthlist__44u3__short[] = {
+        14,14,14,15,13,15,12,16,10, 8, 7, 9, 9, 8,12,16,
+        10, 5, 4, 6, 5, 6, 9,16,14, 8, 6, 8, 7, 8,10,16,
+        14, 7, 4, 6, 3, 5, 8,16,15, 9, 5, 7, 4, 4, 7,16,
+        13,10, 6, 7, 4, 3, 4,13,13,12, 7, 9, 5, 5, 6,12,
 };
 
-static long _vq_quantmap__44u4__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _huff_book__44u3__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44u3__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p5_0 = {
-	_vq_quantthresh__44u4__p5_0,
-	_vq_quantmap__44u4__p5_0,
-	9,
-	9
+static const char _huff_lengthlist__44u4__long[] = {
+         3, 8,12,12,13,12,11,13, 5, 4, 6, 7, 8, 8, 9,13,
+         9, 5, 4, 5, 5, 7, 9,13, 9, 6, 5, 6, 6, 7, 8,12,
+        12, 7, 5, 6, 4, 5, 8,13,11, 7, 6, 6, 5, 5, 6,12,
+        10, 8, 8, 7, 7, 5, 3, 8,10,12,13,12,12, 9, 6, 7,
 };
 
-static static_codebook _44u4__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u4__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u4__p5_0,
-	NULL,
-	&_vq_auxt__44u4__p5_0,
-	NULL,
-	0
+static const static_codebook _huff_book__44u4__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44u4__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44u4__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44u4__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u4__p6_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,13,13, 4, 6, 5,
-	 8, 8, 9, 9,10,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
-	 9,10,10,11,11,14,14, 7, 8, 8, 9, 9,10,10,11,11,
-	12,12,15,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
-	15, 8, 9, 9,10,10,11,11,12,12,13,13,16,16, 8, 9,
-	 9,10,10,11,11,12,12,13,13,16,16,10,10,10,11,11,
-	12,12,13,13,14,13,16,16,10,10,11,11,12,12,12,13,
-	13,13,14,16,17,11,12,11,12,12,13,13,13,14,14,14,
-	17,16,11,11,12,12,12,13,13,14,14,15,14,17,17,14,
-	14,14,15,15,16,16,17,17,17,19,19, 0,14,15,15,15,
-	15,16,16,16,17,17,19,20,20,
+static const char _vq_lengthlist__44u4__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+        10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+        11, 8,11,11, 8,11,11,11,13,14,11,15,14, 8,11,11,
+        10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
+        11,11,11,15,14,10,12,14, 8,11,11,11,14,14,11,14,
+        13,
 };
 
-static float _vq_quantthresh__44u4__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const static_codebook _44u4__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u4__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u4__p1_0,
+        0
 };
 
-static long _vq_quantmap__44u4__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44u4__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p6_0 = {
-	_vq_quantthresh__44u4__p6_0,
-	_vq_quantmap__44u4__p6_0,
-	13,
-	13
+static const char _vq_lengthlist__44u4__p2_0[] = {
+         2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+         8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 6, 8,
+         8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+         8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
+         8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+         9,
 };
 
-static static_codebook _44u4__p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u4__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u4__p6_0,
-	NULL,
-	&_vq_auxt__44u4__p6_0,
-	NULL,
-	0
+static const static_codebook _44u4__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u4__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u4__p2_0,
+        0
 };
 
-static long _vq_quantlist__44u4__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44u4__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u4__p6_1[] = {
-	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
-	 6, 5, 6, 6, 5, 5, 6, 6, 6,
+static const char _vq_lengthlist__44u4__p3_0[] = {
+         2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+        10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
+         9,11,11, 7, 9, 9,11,11,10,12,11,14,14, 9,10,11,
+        13,14, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,11,
+        11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
+        10,12,12,15,14, 9,11,11,15,14,13,14,14,17,17,12,
+        14,14,16,16, 8,10,10,14,14, 9,11,11,14,15,10,12,
+        12,14,15,12,14,13,16,16,13,14,15,15,18, 4, 7, 7,
+        10,10, 7, 9, 9,12,11, 7, 9, 9,11,12,10,12,11,15,
+        14,10,11,12,14,15, 7, 9, 9,12,12, 9,11,12,13,13,
+         9,11,12,13,13,12,13,13,15,16,11,13,13,15,16, 7,
+         9, 9,12,12, 9,11,10,13,12, 9,11,12,13,14,11,13,
+        12,16,14,12,13,13,15,16,10,12,12,16,15,11,13,13,
+        17,16,11,13,13,17,16,14,15,15,17,17,14,16,16,18,
+        20, 9,11,11,15,16,11,13,12,16,16,11,13,13,16,17,
+        14,15,14,18,16,14,16,16,17,20, 5, 7, 7,10,10, 7,
+         9, 9,12,11, 7, 9,10,11,12,10,12,11,15,15,10,12,
+        12,14,14, 7, 9, 9,12,12, 9,12,11,14,13, 9,10,11,
+        12,13,12,13,14,16,16,11,12,13,14,16, 7, 9, 9,12,
+        12, 9,12,11,13,13, 9,12,11,13,13,11,13,13,16,16,
+        12,13,13,16,15, 9,11,11,16,14,11,13,13,16,16,11,
+        12,13,16,16,14,16,16,17,17,13,14,15,16,17,10,12,
+        12,15,15,11,13,13,16,17,11,13,13,16,16,14,16,15,
+        19,19,14,15,15,17,18, 8,10,10,14,14,10,12,12,15,
+        15,10,12,12,16,16,14,16,15,20,19,13,15,15,17,16,
+         9,12,12,16,16,11,13,13,16,18,11,14,13,16,17,16,
+        17,16,20, 0,15,16,18,18,20, 9,11,11,15,15,11,14,
+        12,17,16,11,13,13,17,17,15,17,15,20,20,14,16,16,
+        17, 0,13,15,14,18,16,14,15,16, 0,18,14,16,16, 0,
+         0,18,16, 0, 0,20,16,18,18, 0, 0,12,14,14,17,18,
+        13,15,14,20,18,14,16,15,19,19,16,20,16, 0,18,16,
+        19,17,19, 0, 8,10,10,14,14,10,12,12,16,15,10,12,
+        12,16,16,13,15,15,18,17,14,16,16,19, 0, 9,11,11,
+        16,15,11,14,13,18,17,11,12,13,17,18,14,17,16,18,
+        18,15,16,17,18,18, 9,12,12,16,16,11,13,13,16,18,
+        11,14,13,17,17,15,16,16,18,20,16,17,17,20,20,12,
+        14,14,18,17,14,16,16, 0,19,13,14,15,18, 0,16, 0,
+         0, 0, 0,16,16, 0,19,20,13,15,14, 0, 0,14,16,16,
+        18,19,14,16,15, 0,20,16,20,18, 0,20,17,20,17, 0,
+         0,
 };
 
-static float _vq_quantthresh__44u4__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u4__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u4__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u4__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u4__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u4__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p6_1 = {
-	_vq_quantthresh__44u4__p6_1,
-	_vq_quantmap__44u4__p6_1,
-	5,
-	5
+static const char _vq_lengthlist__44u4__p4_0[] = {
+         4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+         9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
+        11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+        10, 9,10,10,12,11, 9,10,10,12,11, 9,10, 9,12,12,
+         9,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
+        12,12,13,14, 9, 9,10,12,12, 9,10,10,13,13, 9,10,
+        10,12,13,11,12,12,14,13,11,12,12,14,14, 5, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+        12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+         8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
+         8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
+        13,14,10,11,11,14,13,12,12,13,12,15,12,13,13,15,
+        15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
+        12,13,11,15,13,13,13,13,15,15, 5, 7, 7, 9, 9, 7,
+         8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
+        11,12,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+        11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
+        11,12,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+        10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
+        11,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
+        15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+        13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
+         9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,
+        13,14,14,16,13,13,13,15,15, 9,10,10,13,13,10,11,
+        10,14,13,10,11,11,13,14,12,14,13,16,14,12,13,13,
+        14,15,11,12,12,15,14,11,12,13,14,15,12,13,13,16,
+        15,14,12,15,12,16,14,15,15,16,16,11,12,12,14,14,
+        11,13,12,15,14,12,13,13,15,16,13,15,13,17,13,14,
+        15,15,16,17, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
+        10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
+        13,12,10,11,11,14,13,10,10,11,13,14,13,13,13,15,
+        15,12,13,14,14,16, 9,10,10,13,13,10,11,11,13,14,
+        10,11,11,14,14,13,13,13,15,15,13,14,13,16,14,11,
+        12,12,15,14,12,13,13,16,15,11,12,13,14,15,14,15,
+        15,17,16,13,13,15,13,16,11,12,13,14,15,13,13,13,
+        15,16,11,13,12,15,14,14,15,15,16,16,14,15,12,17,
+        13,
 };
 
-static static_codebook _44u4__p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u4__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u4__p6_1,
-	NULL,
-	&_vq_auxt__44u4__p6_1,
-	NULL,
-	0
+static const static_codebook _44u4__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u4__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u4__p4_0,
+        0
 };
 
-static long _vq_quantlist__44u4__p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const long _vq_quantlist__44u4__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u4__p7_0[] = {
-	 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4,10, 9,
-	11,11,11,11,11,11,11,11,11,11, 4,10,10,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,
+static const char _vq_lengthlist__44u4__p5_0[] = {
+         2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
+        10, 9, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
+         9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,11, 7, 8, 8,
+         9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+        10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
+        12,
 };
 
-static float _vq_quantthresh__44u4__p7_0[] = {
-	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
-	637.5, 892.5, 1147.5, 1402.5, 
+static const static_codebook _44u4__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u4__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u4__p5_0,
+        0
 };
 
-static long _vq_quantmap__44u4__p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const long _vq_quantlist__44u4__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p7_0 = {
-	_vq_quantthresh__44u4__p7_0,
-	_vq_quantmap__44u4__p7_0,
-	13,
-	13
+static const char _vq_lengthlist__44u4__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9,11,10,13,13, 4, 6, 5,
+         8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
+         9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+        12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
+        15, 8, 9, 9,11,10,11,11,12,12,13,13,16,16, 8, 9,
+         9,10,10,11,11,12,12,13,13,16,16,10,10,10,12,11,
+        12,12,13,13,14,14,16,16,10,10,10,11,12,12,12,13,
+        13,13,14,16,17,11,12,11,12,12,13,13,14,14,15,14,
+        18,17,11,11,12,12,12,13,13,14,14,14,15,19,18,14,
+        15,14,15,15,17,16,17,17,17,17,21, 0,14,15,15,16,
+        16,16,16,17,17,18,17,20,21,
 };
 
-static static_codebook _44u4__p7_0 = {
-	2, 169,
-	_vq_lengthlist__44u4__p7_0,
-	1, -514332672, 1627381760, 4, 0,
-	_vq_quantlist__44u4__p7_0,
-	NULL,
-	&_vq_auxt__44u4__p7_0,
-	NULL,
-	0
+static const static_codebook _44u4__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u4__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u4__p6_0,
+        0
 };
 
-static long _vq_quantlist__44u4__p7_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const long _vq_quantlist__44u4__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u4__p7_1[] = {
-	 1, 4, 4, 6, 6, 7, 7, 9, 8,10,10,11,11,12,12, 4,
-	 7, 6, 8, 7, 9, 9,10,10,11,10,12,11,12,12, 4, 6,
-	 6, 7, 8, 9, 9,10,10,11,11,12,12,13,13, 6, 8, 8,
-	10, 9,11,10,11,11,12,12,14,13,13,13, 6, 8, 8, 9,
-	 9,11,11,12,12,12,12,13,14,13,14, 8, 9, 9,11,10,
-	12,12,13,12,13,14,14,14,14,14, 8, 9, 9,10,11,12,
-	11,12,13,13,14,14,13,14,14, 9,10,10,12,12,14,13,
-	14,14,15,15,16,15,15,15, 9,10,10,11,12,13,13,13,
-	14,15,15,18,16,17,15,10,12,12,13,13,15,14,15,14,
-	16,16,16,15,16,15,10,11,11,13,13,14,14,17,16,15,
-	16,18,16,15,16,11,12,13,14,13,15,14,15,16,17,15,
-	16,16,15,16,11,12,13,14,15,14,16,15,15,16,15,15,
-	17,17,17,12,13,13,14,14,14,15,16,14,15,15,16,16,
-	16,16,12,13,13,13,14,15,15,15,14,16,16,16,16,16,
-	17,
+static const char _vq_lengthlist__44u4__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+         6, 5, 6, 6, 5, 5, 6, 6, 6,
 };
 
-static float _vq_quantthresh__44u4__p7_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+static const static_codebook _44u4__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u4__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u4__p6_1,
+        0
 };
 
-static long _vq_quantmap__44u4__p7_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const long _vq_quantlist__44u4__p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p7_1 = {
-	_vq_quantthresh__44u4__p7_1,
-	_vq_quantmap__44u4__p7_1,
-	15,
-	15
+static const char _vq_lengthlist__44u4__p7_0[] = {
+         1, 3, 3,12,12,12,12,12,12,12,12,12,12, 3,12,11,
+        12,12,12,12,12,12,12,12,12,12, 4,11,10,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,
 };
 
-static static_codebook _44u4__p7_1 = {
-	2, 225,
-	_vq_lengthlist__44u4__p7_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__44u4__p7_1,
-	NULL,
-	&_vq_auxt__44u4__p7_1,
-	NULL,
-	0
+static const static_codebook _44u4__p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u4__p7_0,
+        1, -514332672, 1627381760, 4, 0,
+        (long *)_vq_quantlist__44u4__p7_0,
+        0
 };
 
-static long _vq_quantlist__44u4__p7_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44u4__p7_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44u4__p7_2[] = {
-	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
-	 9, 9,10, 9, 9,10,10,10,10,10,10,10, 9, 9, 9, 9,
-	 9, 9,10, 9,10,10,10,10,10,10,10,10,10, 9, 9, 9,
-	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
-	 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const char _vq_lengthlist__44u4__p7_1[] = {
+         1, 4, 4, 6, 6, 7, 7, 9, 8,10, 8,10, 9,11,11, 4,
+         7, 6, 8, 7, 9, 9,10,10,11,10,11,10,12,10, 4, 6,
+         7, 8, 8, 9, 9,10,10,11,11,11,11,12,12, 6, 8, 8,
+        10, 9,11,10,12,11,12,12,12,12,13,13, 6, 8, 8,10,
+        10,10,11,11,11,12,12,13,12,13,13, 8, 9, 9,11,11,
+        12,11,12,12,13,13,13,13,13,13, 8, 9, 9,11,11,11,
+        12,12,12,13,13,13,13,13,13, 9,10,10,12,11,13,13,
+        13,13,14,13,13,14,14,14, 9,10,11,11,12,12,13,13,
+        13,13,13,14,15,14,14,10,11,11,12,12,13,13,14,14,
+        14,14,14,15,16,16,10,11,11,12,13,13,13,13,15,14,
+        14,15,16,15,16,10,12,12,13,13,14,14,14,15,15,15,
+        15,15,15,16,11,12,12,13,13,14,14,14,15,15,15,16,
+        15,17,16,11,12,12,13,13,13,15,15,14,16,16,16,16,
+        16,17,11,12,12,13,13,14,14,15,14,15,15,17,17,16,
+        16,
 };
 
-static float _vq_quantthresh__44u4__p7_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44u4__p7_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u4__p7_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44u4__p7_1,
+        0
 };
 
-static long _vq_quantmap__44u4__p7_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44u4__p7_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u4__p7_2 = {
-	_vq_quantthresh__44u4__p7_2,
-	_vq_quantmap__44u4__p7_2,
-	17,
-	17
-};
-
-static static_codebook _44u4__p7_2 = {
-	2, 289,
-	_vq_lengthlist__44u4__p7_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u4__p7_2,
-	NULL,
-	&_vq_auxt__44u4__p7_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u4__short[] = {
-	 3, 9,14,12,17,13,13,13, 4, 7, 8, 9,12,10,11,12,
-	 6, 5, 4, 7, 6, 7, 9,14, 8, 8, 7, 9, 8, 9,10,13,
-	 9, 8, 5, 7, 3, 5, 8,15, 9, 9, 6, 8, 4, 5, 7,16,
-	11,10, 6, 9, 4, 3, 6,15,17,16, 8,11, 5, 5, 7,16,
-};
-
-static static_codebook _huff_book__44u4__short = {
-	2, 64,
-	_huff_lengthlist__44u4__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u5__long[] = {
-	 3, 8,13,12,14,13,16,11,12,13, 5, 4, 5, 6, 8, 9,
-	10, 9,12,12,10, 5, 4, 6, 6, 8, 9,10,14,16,10, 6,
-	 6, 6, 6, 7, 9, 8,12,13,13, 7, 5, 6, 4, 6, 6, 7,
-	11,16,10, 7, 7, 7, 6, 6, 7, 7,11,14,14, 9, 8, 8,
-	 5, 6, 6, 7,11,16, 9, 8, 8, 8, 6, 6, 6, 4, 7,12,
-	11,10,12,11,10, 9,10, 5, 6,10,10,13,15,15,15,15,
-	14, 8, 7, 9,
-};
-
-static static_codebook _huff_book__44u5__long = {
-	2, 100,
-	_huff_lengthlist__44u5__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u5__p1_0[] = {
-	 1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
-	 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 4, 8, 8, 8,11,
-	10, 8,10,10, 8,11,11,10,12,13,10,13,13, 7,10,10,
-	 9,13,11,10,13,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
-	10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
-	12,
-};
-
-static float _vq_quantthresh__44u5__p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u5__p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p1_0 = {
-	_vq_quantthresh__44u5__p1_0,
-	_vq_quantmap__44u5__p1_0,
-	3,
-	3
-};
-
-static static_codebook _44u5__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u5__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u5__p1_0,
-	NULL,
-	&_vq_auxt__44u5__p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p2_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u5__p2_0[] = {
-	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
-	 7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 8,
-	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
-	 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44u5__p2_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u5__p2_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p2_0 = {
-	_vq_quantthresh__44u5__p2_0,
-	_vq_quantmap__44u5__p2_0,
-	3,
-	3
-};
-
-static static_codebook _44u5__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u5__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u5__p2_0,
-	NULL,
-	&_vq_auxt__44u5__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u5__p3_0[] = {
-	 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
-	10, 9,12,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
-	 9,11,11, 7, 8, 9,10,11,10,11,11,13,14, 9,10,11,
-	13,13, 5, 7, 7, 9, 9, 7, 9, 8,11,10, 7, 9, 9,11,
-	11, 9,11,10,14,13,10,11,11,13,14, 8,10,10,13,13,
-	10,11,11,15,14, 9,11,11,14,14,13,15,14,18,16,12,
-	13,14,16,16, 8,10,10,13,13, 9,11,11,14,14,10,11,
-	12,14,15,12,13,13,16,16,13,14,14,15,17, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
-	14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
-	 9,11,11,13,13,12,12,13,15,15,11,12,13,16,15, 6,
-	 9, 9,11,11, 8,11,10,13,12, 9,10,11,12,14,11,13,
-	11,16,14,11,13,13,15,16,10,11,11,15,15,11,12,13,
-	16,15,11,13,13,16,16,14,15,15,17,18,14,15,16,17,
-	18, 9,11,11,14,15,10,12,11,15,15,11,12,13,15,16,
-	13,15,13,17,15,14,15,16,18,19, 5, 7, 7,10,10, 7,
-	 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,14,10,11,
-	11,14,15, 6, 9, 9,11,11, 9,11,10,13,13, 8,10,11,
-	12,13,11,13,13,15,15,11,11,13,13,15, 7, 9, 9,11,
-	12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,17,16,
-	11,13,12,16,15, 9,11,11,15,14,11,13,13,16,16,10,
-	11,12,15,15,14,15,15,17,17,13,13,15,15,17,10,11,
-	12,15,15,11,13,13,16,19,11,13,12,17,17,14,16,15,
-	19,17,14,15,15,18,18, 8,10,10,14,14,10,12,11,16,
-	15, 9,11,11,15,16,14,16,15,17,17,13,14,14,18,17,
-	 9,11,11,16,15,11,13,13,16,18,11,13,13,17,16,15,
-	16,17,18, 0,15,15,16, 0,18, 9,11,11,16,15,10,13,
-	12,17,15,11,13,13,16,17,14,18,15,19,18,15,16,16,
-	19,18,13,15,15,19,17,13,15,15,18,18,14,15,15,19,
-	 0,17,18, 0,19,19,16,17,17, 0,18,12,14,13,18,17,
-	13,15,13,19,18,14,15,15,19,19,16,17,15, 0,17,16,
-	19,17,19,18, 8,10,10,14,14,10,11,11,15,15,10,11,
-	11,16,16,13,15,15,17,16,14,15,15,18,19, 9,11,11,
-	16,15,11,13,13,19,16,10,12,13,15,17,15,15,15,19,
-	19,15,16,16,17, 0, 9,11,11,16,16,11,13,13,16,17,
-	11,13,13,18,18,14,16,15,18,18,15,17,16,19, 0,12,
-	14,14,17,18,13,16,16,18,18,13,14,15,17, 0,16,17,
-	17, 0, 0,16,15, 0,19,17,12,15,14,17,18,14,15,16,
-	 0,18,14,16,16,18, 0,16,17,17, 0, 0,17,19,17,19,
-	 0,
-};
-
-static float _vq_quantthresh__44u5__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u5__p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p3_0 = {
-	_vq_quantthresh__44u5__p3_0,
-	_vq_quantmap__44u5__p3_0,
-	5,
-	5
-};
-
-static static_codebook _44u5__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u5__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u5__p3_0,
-	NULL,
-	&_vq_auxt__44u5__p3_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44u4__p7_2[] = {
+         2, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+        10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
+         9,10, 9,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,
+        10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,11,10,10,10, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
+         9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+        10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+         9,10, 9,10,10,10,10,10,10,10,10,10,10,11,10,10,
+        10,
 };
 
-static long _vq_quantlist__44u5__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _44u4__p7_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u4__p7_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u4__p7_2,
+        0
 };
 
-static long _vq_lengthlist__44u5__p4_0[] = {
-	 4, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,12,11,
-	 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,13,11,
-	11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,11,13,13,11,12,12,14,13, 6, 7, 7,
-	 9, 9, 7, 8, 7,10,10, 7, 7, 8, 9,10, 9,10,10,12,
-	11, 9,10,10,11,11, 7, 8, 8,10,10, 8, 8, 9,10,11,
-	 8, 8, 8,11,10,10,10,11,11,12,10,10,11,12,12, 6,
-	 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
-	10,13,11,10,10,11,12,12, 9,10,10,12,12,10,10,10,
-	12,13,10,11,11,13,13,12,11,12,11,14,12,12,13,13,
-	14, 9,10,10,12,12, 9,10,10,12,12,10,10,11,12,13,
-	11,12,11,14,12,12,12,12,14,14, 6, 7, 7, 9, 9, 7,
-	 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,11,11, 9,10,
-	10,12,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 8,
-	10,11,10,10,11,12,12,10,10,11,11,13, 7, 8, 8,10,
-	10, 8, 8, 8,10,11, 8, 9, 8,11,10,10,11,10,12,12,
-	10,11,10,12,11, 9,10,10,12,12,10,11,11,13,12, 9,
-	10,10,12,12,12,12,12,14,14,11,11,12,12,14, 9,10,
-	10,12,12,10,11,11,12,12,10,10,10,12,12,12,13,12,
-	14,14,11,12,11,14,11, 8, 9, 9,11,11, 9,10,10,12,
-	12, 9,10,10,12,12,11,12,12,14,14,11,12,12,13,13,
-	 9,10,10,12,12,10,10,11,12,13,10,11,10,13,12,12,
-	12,13,14,14,12,12,12,14,13, 9,10,10,12,12, 9,10,
-	10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,
-	13,14,11,12,11,14,13,11,11,12,13,14,12,13,12,14,
-	14,13,12,14,11,16,13,14,14,16,15,11,11,11,13,13,
-	11,12,11,14,13,12,12,13,14,15,12,14,12,16,12,14,
-	14,14,16,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,12,13,13,12,12,12,14,14, 9,10,10,
-	12,12,10,11,10,13,12, 9,10,10,12,13,12,12,12,14,
-	13,12,12,13,13,15, 9,10,10,12,12,10,10,11,12,13,
-	10,11,10,13,12,12,13,12,14,14,12,13,12,14,13,11,
-	11,11,13,13,12,13,12,14,14,11,11,12,13,14,13,14,
-	14,16,15,13,12,14,12,15,11,12,12,13,14,12,12,13,
-	14,14,11,12,11,14,13,13,14,14,15,16,13,14,11,16,
-	11,
+static const char _huff_lengthlist__44u4__short[] = {
+        14,17,15,17,16,14,13,16,10, 7, 7,10,13,10,15,16,
+         9, 4, 4, 6, 5, 7, 9,16,12, 8, 7, 8, 8, 8,11,16,
+        14, 7, 4, 6, 3, 5, 8,15,13, 8, 5, 7, 4, 5, 7,16,
+        12, 9, 6, 8, 3, 3, 5,16,14,13, 7,10, 5, 5, 7,15,
 };
 
-static float _vq_quantthresh__44u5__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _huff_book__44u4__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44u4__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__44u5__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _huff_lengthlist__44u5__long[] = {
+         3, 8,13,12,14,12,16,11,13,14, 5, 4, 5, 6, 7, 8,
+        10, 9,12,15,10, 5, 5, 5, 6, 8, 9, 9,13,15,10, 5,
+         5, 6, 6, 7, 8, 8,11,13,12, 7, 5, 6, 4, 6, 7, 7,
+        11,14,11, 7, 7, 6, 6, 6, 7, 6,10,14,14, 9, 8, 8,
+         6, 7, 7, 7,11,16,11, 8, 8, 7, 6, 6, 7, 4, 7,12,
+        10,10,12,10,10, 9,10, 5, 6, 9,10,12,15,13,14,14,
+        14, 8, 7, 8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u5__p4_0 = {
-	_vq_quantthresh__44u5__p4_0,
-	_vq_quantmap__44u5__p4_0,
-	5,
-	5
+static const static_codebook _huff_book__44u5__long = {
+        2, 100,
+        (char *)_huff_lengthlist__44u5__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static static_codebook _44u5__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u5__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u5__p4_0,
-	NULL,
-	&_vq_auxt__44u5__p4_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u5__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantlist__44u5__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44u5__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+         9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
+        10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+        10,13,11,10,13,13, 4, 8, 8, 8,11,10, 8,10,10, 7,
+        10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
+        12,
 };
 
-static long _vq_lengthlist__44u5__p5_0[] = {
-	 2, 4, 3, 6, 6, 8, 7,10,10, 3, 5, 5, 8, 7, 8, 8,
-	11,11, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7, 9, 9,
-	10, 9,12,11, 7, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
-	10, 9,11,11,13,12, 8, 8, 8, 9,10,11,12,12,13,10,
-	11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,
-	14,
+static const static_codebook _44u5__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u5__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u5__p1_0,
+        0
 };
 
-static float _vq_quantthresh__44u5__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__44u5__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44u5__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__44u5__p2_0[] = {
+         3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+         7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+         8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
+         7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+         8, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+         9,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u5__p5_0 = {
-	_vq_quantthresh__44u5__p5_0,
-	_vq_quantmap__44u5__p5_0,
-	9,
-	9
+static const static_codebook _44u5__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u5__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u5__p2_0,
+        0
 };
 
-static static_codebook _44u5__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u5__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u5__p5_0,
-	NULL,
-	&_vq_auxt__44u5__p5_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u5__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__44u5__p6_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44u5__p6_0[] = {
-	 3, 4, 4, 5, 6, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
-	 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
-	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
-	 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
-	 9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,11,11,11,
-	11,
-};
-
-static float _vq_quantthresh__44u5__p6_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44u5__p6_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p6_0 = {
-	_vq_quantthresh__44u5__p6_0,
-	_vq_quantmap__44u5__p6_0,
-	9,
-	9
-};
-
-static static_codebook _44u5__p6_0 = {
-	2, 81,
-	_vq_lengthlist__44u5__p6_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u5__p6_0,
-	NULL,
-	&_vq_auxt__44u5__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u5__p7_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,11,10, 7,
-	10,10, 5, 9, 9, 8,10,10, 8,10,11, 4, 9, 9, 9,11,
-	11, 9,12,11, 8,11,11,11,12,12,10,12,12, 7,11,11,
-	10,12,12,10,12,12, 4, 9, 9, 9,11,11, 9,11,11, 7,
-	11,11,10,12,12,10,11,12, 8,11,11,10,12,12,11,12,
-	12,
-};
-
-static float _vq_quantthresh__44u5__p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44u5__p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p7_0 = {
-	_vq_quantthresh__44u5__p7_0,
-	_vq_quantmap__44u5__p7_0,
-	3,
-	3
-};
-
-static static_codebook _44u5__p7_0 = {
-	4, 81,
-	_vq_lengthlist__44u5__p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44u5__p7_0,
-	NULL,
-	&_vq_auxt__44u5__p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u5__p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
-	 8, 8, 9, 8, 9, 8, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9,
-	 9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8,
-	 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9,
-	 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8,
-	 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
-	10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,
-};
-
-static float _vq_quantthresh__44u5__p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u5__p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p7_1 = {
-	_vq_quantthresh__44u5__p7_1,
-	_vq_quantmap__44u5__p7_1,
-	11,
-	11
-};
-
-static static_codebook _44u5__p7_1 = {
-	2, 121,
-	_vq_lengthlist__44u5__p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u5__p7_1,
-	NULL,
-	&_vq_auxt__44u5__p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p8_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u5__p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
-	 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
-	11, 6, 8, 8, 9, 9,10,10,12,11,13,12, 6, 7, 8, 9,
-	 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,12,12,12,
-	14,13, 8, 9, 9,10,10,11,11,12,13,14,13,10,11,10,
-	12,12,13,13,14,13,15,14,10,11,11,12,12,12,13,13,
-	13,15,15,11,12,12,13,12,13,14,14,14,15,14,11,11,
-	12,13,13,13,14,14,14,15,15,
-};
-
-static float _vq_quantthresh__44u5__p8_0[] = {
-	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
-	38.5, 49.5, 
-};
-
-static long _vq_quantmap__44u5__p8_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p8_0 = {
-	_vq_quantthresh__44u5__p8_0,
-	_vq_quantmap__44u5__p8_0,
-	11,
-	11
-};
-
-static static_codebook _44u5__p8_0 = {
-	2, 121,
-	_vq_lengthlist__44u5__p8_0,
-	1, -524582912, 1618345984, 4, 0,
-	_vq_quantlist__44u5__p8_0,
-	NULL,
-	&_vq_auxt__44u5__p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p8_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u5__p8_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
-	 8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u5__p8_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u5__p8_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p8_1 = {
-	_vq_quantthresh__44u5__p8_1,
-	_vq_quantmap__44u5__p8_1,
-	11,
-	11
-};
-
-static static_codebook _44u5__p8_1 = {
-	2, 121,
-	_vq_lengthlist__44u5__p8_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u5__p8_1,
-	NULL,
-	&_vq_auxt__44u5__p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p9_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u5__p9_0[] = {
-	 1, 3, 3,12,10,12,12,12,12,12,12,12,12, 3, 8, 9,
-	12,12,12,12,12,12,12,12,12,12, 4, 9, 9,12,12,12,
-	12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
-	12,12,12,12, 9,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,
-};
-
-static float _vq_quantthresh__44u5__p9_0[] = {
-	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
-	637.5, 892.5, 1147.5, 1402.5, 
-};
-
-static long _vq_quantmap__44u5__p9_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p9_0 = {
-	_vq_quantthresh__44u5__p9_0,
-	_vq_quantmap__44u5__p9_0,
-	13,
-	13
-};
-
-static static_codebook _44u5__p9_0 = {
-	2, 169,
-	_vq_lengthlist__44u5__p9_0,
-	1, -514332672, 1627381760, 4, 0,
-	_vq_quantlist__44u5__p9_0,
-	NULL,
-	&_vq_auxt__44u5__p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__44u5__p9_1[] = {
-	 1, 4, 4, 7, 7, 8, 9, 7, 7, 8, 8, 9, 9,10,10, 5,
-	 6, 6, 9, 8,10,10, 9, 8, 9, 9,10, 9,11,10, 4, 6,
-	 6, 8, 9, 9,10, 8, 9, 9,10,10,10,11,10, 7, 8, 8,
-	10,10,11,11,10,10,11,11,11,11,11,11, 7, 8, 8,10,
-	10,11,11,10,10,11,11,11,11,11,12, 8, 9,10,11,10,
-	12,12,11,11,11,11,12,12,12,13, 8, 9, 9,11,11,11,
-	12,11,11,11,11,12,12,12,12, 8, 9, 9,10,10,11,11,
-	12,11,12,12,12,13,13,13, 8, 9, 9,10,10,11,11,12,
-	11,12,12,13,13,12,13, 9,10,10,11,11,12,11,12,13,
-	14,14,15,15,15,14, 9,10,10,11,11,12,12,12,12,13,
-	13,14,14,14,14, 9,10,11,12,11,12,13,14,13,14,13,
-	14,14,14,14, 9,11,11,11,11,12,13,13,13,14,13,15,
-	15,14,14,10,11,11,12,12,13,13,13,13,14,14,14,15,
-	15,15,10,11,11,12,12,12,13,13,13,15,14,15,14,14,
-	14,
-};
-
-static float _vq_quantthresh__44u5__p9_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
-};
-
-static long _vq_quantmap__44u5__p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p9_1 = {
-	_vq_quantthresh__44u5__p9_1,
-	_vq_quantmap__44u5__p9_1,
-	15,
-	15
-};
-
-static static_codebook _44u5__p9_1 = {
-	2, 225,
-	_vq_lengthlist__44u5__p9_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__44u5__p9_1,
-	NULL,
-	&_vq_auxt__44u5__p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u5__p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44u5__p9_2[] = {
-	 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10, 9, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10,10,10, 9,10,10,10,10, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9,10,
-	 9, 9, 9, 9, 9, 9, 9,10, 9,10, 9, 9, 9,10,10, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44u5__p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44u5__p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u5__p9_2 = {
-	_vq_quantthresh__44u5__p9_2,
-	_vq_quantmap__44u5__p9_2,
-	17,
-	17
-};
-
-static static_codebook _44u5__p9_2 = {
-	2, 289,
-	_vq_lengthlist__44u5__p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u5__p9_2,
-	NULL,
-	&_vq_auxt__44u5__p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u5__short[] = {
-	 4,11,16,14,18,15,18,15,17,17, 4, 6, 9, 9,12, 9,
-	14,10,14,17, 6, 6, 5, 7, 6, 8,10,10,16,17, 7, 8,
-	 7, 9, 9,10,12,12,14,17, 8, 6, 5, 7, 4, 7, 5, 7,
-	14,17, 9, 9, 8, 9, 7,10, 8,10,14,17,11, 9, 7, 9,
-	 4, 7, 3, 6,15,17,11,10,10,10, 6, 9, 5, 6,14,17,
-	17,17,10,15, 4, 8, 3, 5,12,17,17,17,12,16, 7,11,
-	 6, 8,16,17,
-};
-
-static static_codebook _huff_book__44u5__short = {
-	2, 100,
-	_huff_lengthlist__44u5__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u6__long[] = {
-	 3, 9,14,13,15,13,16,12,12,12, 5, 4, 6, 7, 8, 9,
-	10,10,13,12,10, 5, 5, 6, 6, 9, 9,10,14,14,10, 6,
-	 6, 7, 6, 8, 9, 9,13,12,13, 7, 5, 6, 4, 6, 6, 7,
-	11,15,10, 8, 7, 7, 6, 7, 7, 7,11,13,16,10, 8, 8,
-	 5, 6, 4, 6,10,14, 9, 9, 9, 8, 6, 6, 5, 4, 7,11,
-	11,11,12,11,10, 9, 9, 5, 5, 9,10,13,14,14,14,14,
-	15, 8, 7, 8,
-};
-
-static static_codebook _huff_book__44u6__long = {
-	2, 100,
-	_huff_lengthlist__44u6__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u6__p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u6__p1_0[] = {
-	 1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
-	 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,11,
-	10, 8,10,10, 8,11,10,10,12,13,10,13,13, 7,10,10,
-	10,13,11,10,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
-	10,10,10,13,13, 9,11,13, 8,10,11,10,13,13,10,13,
-	12,
-};
-
-static float _vq_quantthresh__44u6__p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u6__p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u6__p1_0 = {
-	_vq_quantthresh__44u6__p1_0,
-	_vq_quantmap__44u6__p1_0,
-	3,
-	3
-};
-
-static static_codebook _44u6__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u6__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u6__p1_0,
-	NULL,
-	&_vq_auxt__44u6__p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u6__p2_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u6__p2_0[] = {
-	 3, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
-	 7, 6, 7, 8, 6, 8, 8, 8, 8, 9, 8, 9, 9, 6, 7, 7,
-	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 7, 8, 6,
-	 7, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
-	 8,
+static const char _vq_lengthlist__44u5__p3_0[] = {
+         2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+        10, 9,13,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
+         9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+        13,14, 5, 7, 7, 9,10, 7, 9, 8,11,11, 7, 9, 9,11,
+        11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,13,13,
+        10,11,11,15,14, 9,11,11,14,14,13,14,14,17,16,12,
+        13,13,15,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
+        11,14,15,12,14,13,16,16,13,15,14,15,17, 5, 7, 7,
+        10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,
+        14,10,11,12,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
+         9,11,11,13,13,12,13,13,15,16,11,12,13,15,16, 6,
+         9, 9,11,11, 8,11,10,13,12, 9,11,11,13,14,11,13,
+        12,16,14,11,13,13,16,17,10,12,11,15,15,11,13,13,
+        16,16,11,13,13,17,16,14,15,15,17,17,14,16,16,17,
+        18, 9,11,11,14,15,10,12,12,15,15,11,13,13,16,17,
+        13,15,13,17,15,14,15,16,18, 0, 5, 7, 7,10,10, 7,
+         9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+        12,14,15, 6, 9, 9,12,11, 9,11,11,13,13, 8,10,11,
+        12,13,11,13,13,16,15,11,12,13,14,15, 7, 9, 9,11,
+        12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,16,
+        11,13,13,15,14, 9,11,11,15,14,11,13,13,17,15,10,
+        12,12,15,15,14,16,16,17,17,13,13,15,15,17,10,11,
+        12,15,15,11,13,13,16,16,11,13,13,15,15,14,15,15,
+        18,18,14,15,15,17,17, 8,10,10,13,13,10,12,11,15,
+        15,10,11,12,15,15,14,15,15,18,18,13,14,14,18,18,
+         9,11,11,15,16,11,13,13,17,17,11,13,13,16,16,15,
+        15,16,17, 0,14,15,17, 0, 0, 9,11,11,15,15,10,13,
+        12,18,16,11,13,13,15,16,14,16,15,20,20,14,15,16,
+        17, 0,13,14,14,20,16,14,15,16,19,18,14,15,15,19,
+         0,18,16, 0,20,20,16,18,18, 0, 0,12,14,14,18,18,
+        13,15,14,18,16,14,15,16,18,20,16,19,16, 0,17,17,
+        18,18,19, 0, 8,10,10,14,14,10,11,11,14,15,10,11,
+        12,15,15,13,15,14,19,17,13,15,15,17, 0, 9,11,11,
+        16,15,11,13,13,16,16,10,12,13,15,17,14,16,16,18,
+        18,14,15,15,18, 0, 9,11,11,15,15,11,13,13,16,17,
+        11,13,13,18,17,14,18,16,18,18,15,17,17,18, 0,12,
+        14,14,18,18,14,15,15,20, 0,13,14,15,17, 0,16,18,
+        17, 0, 0,16,16, 0,17,20,12,14,14,18,18,14,16,15,
+         0,18,14,16,15,18, 0,16,19,17, 0, 0,17,18,16, 0,
+         0,
 };
 
-static float _vq_quantthresh__44u6__p2_0[] = {
-	-0.5, 0.5, 
+static const static_codebook _44u5__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u5__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u5__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p2_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44u5__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p2_0 = {
-	_vq_quantthresh__44u6__p2_0,
-	_vq_quantmap__44u6__p2_0,
-	3,
-	3
-};
-
-static static_codebook _44u6__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u6__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u6__p2_0,
-	NULL,
-	&_vq_auxt__44u6__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u6__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u6__p3_0[] = {
-	 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
-	10, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
-	 9,11,11, 7, 8, 9,10,11,10,11,11,13,14, 9,10,11,
-	13,13, 5, 7, 7, 9, 9, 7, 9, 8,11,10, 7, 9, 9,11,
-	11, 9,11,10,14,13,10,11,11,14,13, 8,10,10,14,13,
-	10,12,11,15,14, 9,11,11,15,14,13,15,14,20,16,13,
-	13,14,16,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
-	12,14,15,13,13,14,16,16,13,14,14,16,17, 5, 7, 7,
-	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,15,
-	14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,12,13,
-	 9,11,11,13,13,11,12,13,14,16,11,12,13,16,16, 6,
-	 9, 8,11,11, 8,11,10,13,12, 9,10,11,12,13,11,13,
-	11,15,14,11,13,13,15,15,10,12,11,15,14,11,12,13,
-	17,16,11,13,13,16,17,14,15,16,17,17,14,15,16,20,
-	 0, 9,11,11,14,15,10,13,12,16,16,11,13,13,17,17,
-	13,15,14,17,15,15,16,16, 0, 0, 5, 7, 7,10,10, 7,
-	 9, 9,11,11, 7, 8, 9,11,11,10,11,11,14,14,10,11,
-	11,14,14, 6, 9, 9,11,11, 9,11,11,14,12, 8,10,11,
-	12,13,11,13,13,16,16,11,11,13,14,16, 7, 9, 9,11,
-	12, 9,11,11,13,13, 9,11,11,13,12,11,13,12,16,16,
-	12,13,12,16,14, 9,11,11,16,15,11,13,13,17,15,10,
-	12,12,15,16,14,16,16, 0,17,13,14,15,15,17,10,11,
-	12,15,15,11,13,13,17,17,11,13,13,15,16,14,15,15,
-	19,18,14,15,15,19,16, 8,10,10,14,14,10,12,11,15,
-	16,10,11,11,15,17,13,16,15,19,19,13,15,14,17,17,
-	 9,11,12,15,16,11,13,13,18,19,11,13,13,16,17,16,
-	16,17, 0, 0,15,15,16, 0,19, 9,11,11,15,16,10,13,
-	12,17,15,11,13,13,16,17,14,17,15,18,17,15,16,15,
-	18, 0,13,14,15, 0,19,14,16,16, 0,17,15,16,16, 0,
-	17,16,17, 0, 0, 0,16,17,19, 0, 0,12,14,14,17,17,
-	13,15,13, 0,19,14,16,16,18,19,16,18,15,19,18,17,
-	18,17,19, 0, 8,10,10,14,13,10,11,11,16,15,10,11,
-	11,15,15,13,15,15,19,18,14,15,16, 0,18, 9,11,11,
-	15,14,11,13,13, 0,16,10,12,13,15,17,14,16,16, 0,
-	18,15,16,17,17, 0, 9,11,11,16,15,11,13,13,16,16,
-	11,14,13,18,18,15,17,15,18,17,15,16,18, 0, 0,12,
-	14,14,18,19,14,15,16, 0,18,13,14,15,18, 0,17,17,
-	17, 0, 0,16,15,18,17, 0,12,14,15,17,19,14,16,16,
-	19, 0,14,17,16, 0,18,17,19,17, 0, 0,16,18,17, 0,
-	17,
+static const char _vq_lengthlist__44u5__p4_0[] = {
+         4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+         9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+         8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
+        11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
+        10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,12,11,
+         9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
+        11,12,13,14, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,11,14,13,11,12,12,13,13, 5, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+        12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
+         8, 9, 9,11,11,10,10,11,11,13,10,11,11,12,13, 6,
+         7, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+        12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,
+        15, 9,10,10,12,12, 9,11,10,13,12,10,11,11,13,13,
+        11,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7,
+         8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
+        10,12,12, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 8, 9,
+        10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
+        10, 8, 9, 9,11,11, 8, 9, 8,11,10,10,11,11,13,12,
+        10,11,10,13,11, 9,10,10,12,12,10,11,11,13,12, 9,
+        10,10,12,13,12,13,13,14,15,11,11,13,12,14, 9,10,
+        10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,
+        14,14,12,13,11,14,12, 8, 9, 9,12,12, 9,10,10,12,
+        12, 9,10,10,12,12,12,12,12,14,14,11,12,12,14,13,
+         9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
+        12,13,14,15,12,13,13,15,14, 9,10,10,12,12,10,11,
+        10,13,12,10,11,11,12,13,12,13,12,15,13,12,13,13,
+        14,15,11,12,12,14,13,11,12,12,14,15,12,13,13,15,
+        14,13,12,14,12,16,13,14,14,15,15,11,11,12,14,14,
+        11,12,11,14,13,12,13,13,14,15,13,14,12,16,12,14,
+        14,15,16,16, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
+        10,12,13,11,12,12,13,13,12,12,13,14,14, 9,10,10,
+        12,12,10,11,10,13,12,10,10,11,12,13,12,13,13,15,
+        14,12,12,13,13,15, 9,10,10,12,13,10,11,11,12,13,
+        10,11,11,13,13,12,13,13,14,15,12,13,12,15,14,11,
+        12,11,14,13,12,13,13,15,14,11,11,12,13,14,14,15,
+        14,16,15,13,12,14,13,16,11,12,12,13,14,12,13,13,
+        14,15,11,12,11,14,14,14,14,14,15,16,13,15,12,16,
+        12,
 };
 
-static float _vq_quantthresh__44u6__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u5__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u5__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u5__p4_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u5__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p3_0 = {
-	_vq_quantthresh__44u6__p3_0,
-	_vq_quantmap__44u6__p3_0,
-	5,
-	5
+static const char _vq_lengthlist__44u5__p5_0[] = {
+         2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+        11,10, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7,10, 9,
+        10,10,11,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
+        10,10,11,11,13,12, 8, 8, 9, 9,10,11,11,12,13,10,
+        11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,
+        14,
 };
 
-static static_codebook _44u6__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u6__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u6__p3_0,
-	NULL,
-	&_vq_auxt__44u6__p3_0,
-	NULL,
-	0
+static const static_codebook _44u5__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u5__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u5__p5_0,
+        0
 };
 
-static long _vq_quantlist__44u6__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44u5__p6_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u6__p4_0[] = {
-	 4, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
-	 9,10,10,12,12, 9, 9,10,12,12,11,12,12,13,13,11,
-	11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,11,13,13,11,12,12,13,13, 6, 7, 7,
-	 9, 9, 7, 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,
-	11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 9,10,10,
-	 8, 8, 8,10,10,10,10,11,12,12,10,10,11,12,12, 6,
-	 7, 7,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
-	10,12,11,10,10,11,12,12, 9,10,10,12,12,10,10,11,
-	12,12,10,11,10,13,12,12,12,12,12,14,12,12,12,13,
-	14, 9,10,10,12,12, 9,10,10,12,12,10,10,11,12,13,
-	11,12,11,14,12,12,12,13,14,14, 6, 7, 7, 9, 9, 7,
-	 8, 7,10, 9, 7, 7, 8,10,10, 9,10,10,12,11, 9,10,
-	10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 8,
-	10,10,10,10,11,12,12,10,10,10,11,12, 7, 8, 8,10,
-	10, 8, 8, 8,10,10, 8, 8, 8,10,10,10,11,10,12,12,
-	10,11,10,12,11, 9,10,10,12,12,10,11,10,13,12, 9,
-	10,10,12,12,12,12,12,14,14,11,11,12,12,13, 9,10,
-	10,12,12,10,11,11,12,12,10,11,10,12,12,12,12,12,
-	14,14,12,12,12,14,12, 8, 9, 9,11,11, 9,10,10,12,
-	12, 9,10,10,12,12,11,12,12,13,13,11,12,12,13,13,
-	 9,10,10,12,12,10,10,11,12,13,10,11,10,12,12,12,
-	12,13,13,14,12,12,12,14,14, 9,10,10,12,12, 9,10,
-	10,12,12,10,10,10,12,12,12,12,12,14,13,12,12,12,
-	14,14,11,12,12,13,13,11,12,12,14,14,12,12,12,14,
-	14,13,12,14,12,15,13,14,14,15,15,11,11,11,13,13,
-	11,12,11,14,13,12,12,12,14,14,12,14,12,15,12,13,
-	14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,12,13,13,11,12,12,13,14, 9,10,10,
-	12,12,10,11,10,13,12, 9,10,10,12,13,12,12,12,15,
-	14,12,12,13,13,14, 9,10,10,12,12,10,10,11,12,12,
-	10,11,10,12,12,12,13,12,14,14,12,13,12,14,13,11,
-	11,11,13,13,12,12,12,14,13,11,11,12,13,14,13,14,
-	14,15,15,12,12,14,12,15,11,12,12,13,14,12,12,12,
-	14,14,11,12,12,14,14,13,14,14,15,15,13,14,12,16,
-	12,
+static const char _vq_lengthlist__44u5__p6_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+         9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+         8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
+         8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
+         9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,11,10,11,
+        11,
 };
 
-static float _vq_quantthresh__44u6__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u5__p6_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u5__p6_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u5__p6_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u5__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p4_0 = {
-	_vq_quantthresh__44u6__p4_0,
-	_vq_quantmap__44u6__p4_0,
-	5,
-	5
+static const char _vq_lengthlist__44u5__p7_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,11,10, 7,
+        11,10, 5, 9, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12,
+        12, 9,12,12, 8,12,12,11,12,12,10,12,13, 7,12,12,
+        11,12,12,10,12,13, 4, 9, 9, 9,12,12, 9,12,12, 7,
+        12,11,10,13,13,11,12,12, 7,12,12,10,13,13,11,12,
+        12,
 };
 
-static static_codebook _44u6__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u6__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u6__p4_0,
-	NULL,
-	&_vq_auxt__44u6__p4_0,
-	NULL,
-	0
+static const static_codebook _44u5__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u5__p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44u5__p7_0,
+        0
 };
 
-static long _vq_quantlist__44u6__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u5__p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44u6__p5_0[] = {
-	 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
-	11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7,10, 9,
-	10, 9,12,12, 6, 7, 8, 9,10, 9,10,12,12, 8, 8, 8,
-	10, 9,12,11,13,13, 8, 8, 8, 9,10,11,12,12,13,10,
-	11,11,12,11,13,12,14,14,10,10,11,11,12,13,13,14,
-	14,
+static const char _vq_lengthlist__44u5__p7_1[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
+         8, 8, 9, 8, 8, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 8,
+         9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+         8, 9, 9, 9, 9, 9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9,
+         9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+        10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
+         9, 9, 9, 9, 9,10,10,10,10,
 };
 
-static float _vq_quantthresh__44u6__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44u6__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u6__p5_0 = {
-	_vq_quantthresh__44u6__p5_0,
-	_vq_quantmap__44u6__p5_0,
-	9,
-	9
-};
-
-static static_codebook _44u6__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u6__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u6__p5_0,
-	NULL,
-	&_vq_auxt__44u6__p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u6__p6_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44u6__p6_0[] = {
-	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
-	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
-	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
-	 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
-	 9, 9,10,10,11,11,11,11, 9, 9, 9,10,10,10,11,11,
-	11,
-};
-
-static float _vq_quantthresh__44u6__p6_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44u6__p6_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u6__p6_0 = {
-	_vq_quantthresh__44u6__p6_0,
-	_vq_quantmap__44u6__p6_0,
-	9,
-	9
-};
-
-static static_codebook _44u6__p6_0 = {
-	2, 81,
-	_vq_lengthlist__44u6__p6_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u6__p6_0,
-	NULL,
-	&_vq_auxt__44u6__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u6__p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u6__p7_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,11,10, 8,
-	11,10, 5, 8, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12,
-	11, 9,11,12, 8,11,12,11,12,13,10,13,12, 7,12,11,
-	10,12,12,10,13,13, 4, 9, 9, 8,11,11, 9,11,12, 7,
-	12,12,10,13,13,10,12,13, 8,12,12,10,13,13,11,13,
-	12,
+static const static_codebook _44u5__p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u5__p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u5__p7_1,
+        0
 };
 
-static float _vq_quantthresh__44u6__p7_0[] = {
-	-5.5, 5.5, 
+static const long _vq_quantlist__44u5__p8_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantmap__44u6__p7_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u5__p8_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
+         9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
+        11, 6, 8, 7, 9, 9,10,10,11,11,13,12, 6, 8, 8, 9,
+         9,10,10,11,11,12,13, 8, 9, 9,10,10,12,12,13,12,
+        14,13, 8, 9, 9,10,10,12,12,13,13,14,14, 9,11,11,
+        12,12,13,13,14,14,15,14, 9,11,11,12,12,13,13,14,
+        14,15,14,11,12,12,13,13,14,14,15,14,15,14,11,11,
+        12,13,13,14,14,14,14,15,15,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p7_0 = {
-	_vq_quantthresh__44u6__p7_0,
-	_vq_quantmap__44u6__p7_0,
-	3,
-	3
+static const static_codebook _44u5__p8_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u5__p8_0,
+        1, -524582912, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44u5__p8_0,
+        0
 };
 
-static static_codebook _44u6__p7_0 = {
-	4, 81,
-	_vq_lengthlist__44u6__p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44u6__p7_0,
-	NULL,
-	&_vq_auxt__44u6__p7_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u5__p8_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__44u6__p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const char _vq_lengthlist__44u5__p8_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 6,
+         7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+         8, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7,
+         7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+         8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static long _vq_lengthlist__44u6__p7_1[] = {
-	 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6,
-	 8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8,
-	 8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7,
-	 7, 8, 8, 9, 9, 9, 9, 7, 8, 7, 8, 8, 9, 9, 9, 9,
-	 9, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8,
-	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 8, 8,
-	 8, 9, 9, 9, 9, 9, 9,10,10,
+static const static_codebook _44u5__p8_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u5__p8_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u5__p8_1,
+        0
 };
 
-static float _vq_quantthresh__44u6__p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const long _vq_quantlist__44u5__p9_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__44u6__p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__44u5__p9_0[] = {
+         1, 3, 2,12,10,13,13,13,13,13,13,13,13, 4, 9, 9,
+        13,13,13,13,13,13,13,13,13,13, 5,10, 9,13,13,13,
+        13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,
+        13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+        13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
+        12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+        12,12,12,12,12,12,12,12,12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p7_1 = {
-	_vq_quantthresh__44u6__p7_1,
-	_vq_quantmap__44u6__p7_1,
-	11,
-	11
+static const static_codebook _44u5__p9_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u5__p9_0,
+        1, -514332672, 1627381760, 4, 0,
+        (long *)_vq_quantlist__44u5__p9_0,
+        0
 };
 
-static static_codebook _44u6__p7_1 = {
-	2, 121,
-	_vq_lengthlist__44u6__p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u6__p7_1,
-	NULL,
-	&_vq_auxt__44u6__p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__44u5__p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantlist__44u6__p8_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const char _vq_lengthlist__44u5__p9_1[] = {
+         1, 4, 4, 7, 7, 8, 8, 8, 7, 8, 7, 9, 8, 9, 9, 4,
+         7, 6, 9, 8,10,10, 9, 8, 9, 9, 9, 9, 9, 8, 5, 6,
+         6, 8, 9,10,10, 9, 9, 9,10,10,10,10,11, 7, 8, 8,
+        10,10,11,11,10,10,11,11,11,12,11,11, 7, 8, 8,10,
+        10,11,11,10,10,11,11,12,11,11,11, 8, 9, 9,11,11,
+        12,12,11,11,12,11,12,12,12,12, 8, 9,10,11,11,12,
+        12,11,11,12,12,12,12,12,12, 8, 9, 9,10,10,12,11,
+        12,12,12,12,12,12,12,13, 8, 9, 9,11,11,11,11,12,
+        12,12,12,13,12,13,13, 9,10,10,11,11,12,12,12,13,
+        12,13,13,13,14,13, 9,10,10,11,11,12,12,12,13,13,
+        12,13,13,14,13, 9,11,10,12,11,13,12,12,13,13,13,
+        13,13,13,14, 9,10,10,12,12,12,12,12,13,13,13,13,
+        13,14,14,10,11,11,12,12,12,13,13,13,14,14,13,14,
+        14,14,10,11,11,12,12,12,12,13,12,13,14,13,14,14,
+        14,
 };
 
-static long _vq_lengthlist__44u6__p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
-	 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
-	11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
-	 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
-	13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
-	11,11,12,12,13,13,14,14,10,10,10,11,11,12,13,13,
-	13,14,14,11,12,12,13,13,13,13,14,14,15,14,11,11,
-	11,13,13,14,13,14,14,15,14,
+static const static_codebook _44u5__p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u5__p9_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44u5__p9_1,
+        0
 };
 
-static float _vq_quantthresh__44u6__p8_0[] = {
-	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
-	38.5, 49.5, 
+static const long _vq_quantlist__44u5__p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantmap__44u6__p8_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__44u5__p9_2[] = {
+         2, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+         9,10, 9,10,10,10, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+         9, 9,10, 9,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,10, 9,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+         9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,10, 9,
+        10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
+         9,10, 9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+         9, 9,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+         9,10,10, 9,10,10,10,10,10,10,10,10,10,10, 9, 9,
+         9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+         9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+         9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p8_0 = {
-	_vq_quantthresh__44u6__p8_0,
-	_vq_quantmap__44u6__p8_0,
-	11,
-	11
+static const static_codebook _44u5__p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u5__p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u5__p9_2,
+        0
 };
 
-static static_codebook _44u6__p8_0 = {
-	2, 121,
-	_vq_lengthlist__44u6__p8_0,
-	1, -524582912, 1618345984, 4, 0,
-	_vq_quantlist__44u6__p8_0,
-	NULL,
-	&_vq_auxt__44u6__p8_0,
-	NULL,
-	0
+static const char _huff_lengthlist__44u5__short[] = {
+         4,10,17,13,17,13,17,17,17,17, 3, 6, 8, 9,11, 9,
+        15,12,16,17, 6, 5, 5, 7, 7, 8,10,11,17,17, 7, 8,
+         7, 9, 9,10,13,13,17,17, 8, 6, 5, 7, 4, 7, 5, 8,
+        14,17, 9, 9, 8, 9, 7, 9, 8,10,16,17,12,10, 7, 8,
+         4, 7, 4, 7,16,17,12,11, 9,10, 6, 9, 5, 7,14,17,
+        14,13,10,15, 4, 8, 3, 5,14,17,17,14,11,15, 6,10,
+         6, 8,15,17,
 };
 
-static long _vq_quantlist__44u6__p8_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const static_codebook _huff_book__44u5__short = {
+        2, 100,
+        (char *)_huff_lengthlist__44u5__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__44u6__p8_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 6,
-	 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8,
-	 8, 6, 7, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7,
-	 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+static const char _huff_lengthlist__44u6__long[] = {
+         3, 9,14,13,14,13,16,12,13,14, 5, 4, 6, 6, 8, 9,
+        11,10,12,15,10, 5, 5, 6, 6, 8,10,10,13,16,10, 6,
+         6, 6, 6, 8, 9, 9,12,14,13, 7, 6, 6, 4, 6, 6, 7,
+        11,14,10, 7, 7, 7, 6, 6, 6, 7,10,13,15,10, 9, 8,
+         5, 6, 5, 6,10,14,10, 9, 8, 8, 6, 6, 5, 4, 6,11,
+        11,11,12,11,10, 9, 9, 5, 5, 9,10,12,15,13,13,13,
+        13, 8, 7, 7,
 };
 
-static float _vq_quantthresh__44u6__p8_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _huff_book__44u6__long = {
+        2, 100,
+        (char *)_huff_lengthlist__44u6__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantmap__44u6__p8_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44u6__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p8_1 = {
-	_vq_quantthresh__44u6__p8_1,
-	_vq_quantmap__44u6__p8_1,
-	11,
-	11
+static const char _vq_lengthlist__44u6__p1_0[] = {
+         1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+         9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
+        10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+        10,13,11,10,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
+        10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
+        12,
 };
 
-static static_codebook _44u6__p8_1 = {
-	2, 121,
-	_vq_lengthlist__44u6__p8_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u6__p8_1,
-	NULL,
-	&_vq_auxt__44u6__p8_1,
-	NULL,
-	0
+static const static_codebook _44u6__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u6__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u6__p1_0,
+        0
 };
 
-static long _vq_quantlist__44u6__p9_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const long _vq_quantlist__44u6__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u6__p9_0[] = {
-	 1, 3, 3,10,12,13,13,13,13,13,13,13,13,13,13, 3,
-	 9, 9,13,13,13,13,13,13,13,13,13,13,12,12, 4, 9,
-	 9,12,12,12,12,12,12,12,12,12,12,12,12, 9,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12, 9,11,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-	12,
+static const char _vq_lengthlist__44u6__p2_0[] = {
+         3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+         7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+         8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7,
+         7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+         8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+         9,
 };
 
-static float _vq_quantthresh__44u6__p9_0[] = {
-	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
-	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
+static const static_codebook _44u6__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u6__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u6__p2_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p9_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const long _vq_quantlist__44u6__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p9_0 = {
-	_vq_quantthresh__44u6__p9_0,
-	_vq_quantmap__44u6__p9_0,
-	15,
-	15
+static const char _vq_lengthlist__44u6__p3_0[] = {
+         2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+         9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
+         9,11,11, 7, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+        13,14, 5, 7, 7, 9,10, 6, 9, 8,11,11, 7, 9, 9,11,
+        11, 9,11,10,14,13,10,11,11,14,13, 8,10,10,13,13,
+        10,11,11,15,15, 9,11,11,14,14,13,14,14,17,16,12,
+        13,14,16,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
+        12,14,15,12,14,13,16,15,13,14,14,15,17, 5, 7, 7,
+        10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,
+        14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
+         9,11,11,13,13,11,13,13,14,15,11,12,13,15,16, 6,
+         9, 9,11,12, 8,11,10,13,12, 9,11,11,13,14,11,13,
+        12,16,14,11,13,13,15,16,10,12,11,14,15,11,13,13,
+        15,17,11,13,13,17,16,15,15,16,17,16,14,15,16,18,
+         0, 9,11,11,14,15,10,12,12,16,15,11,13,13,16,16,
+        13,15,14,18,15,14,16,16, 0, 0, 5, 7, 7,10,10, 7,
+         9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+        12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
+        12,13,11,13,13,16,15,11,12,13,14,16, 7, 9, 9,11,
+        12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,16,15,
+        11,13,12,15,15, 9,11,11,15,14,11,13,13,17,16,10,
+        12,13,15,16,14,16,16, 0,18,14,14,15,15,17,10,11,
+        12,15,15,11,13,13,16,16,11,13,13,16,16,14,16,16,
+        19,17,14,15,15,17,17, 8,10,10,14,14,10,12,11,15,
+        15,10,11,12,16,15,14,15,15,18,20,13,14,16,17,18,
+         9,11,11,15,16,11,13,13,17,17,11,13,13,17,16,15,
+        16,16, 0, 0,15,16,16, 0, 0, 9,11,11,15,15,10,13,
+        12,17,15,11,13,13,17,16,15,17,15,20,19,15,16,16,
+        19, 0,13,15,14, 0,17,14,15,16, 0,20,15,16,16, 0,
+        19,17,18, 0, 0, 0,16,17,18, 0, 0,12,14,14,19,18,
+        13,15,14, 0,17,14,15,16,19,19,16,18,16, 0,19,19,
+        20,17,20, 0, 8,10,10,13,14,10,11,11,15,15,10,12,
+        12,15,16,14,15,14,19,16,14,15,15, 0,18, 9,11,11,
+        16,15,11,13,13, 0,16,11,12,13,16,17,14,16,17, 0,
+        19,15,16,16,18, 0, 9,11,11,15,16,11,13,13,16,16,
+        11,14,13,18,17,15,16,16,18,20,15,17,19, 0, 0,12,
+        14,14,17,17,14,16,15, 0, 0,13,14,15,19, 0,16,18,
+        20, 0, 0,16,16,18,18, 0,12,14,14,17,20,14,16,16,
+        19, 0,14,16,14, 0,20,16,20,17, 0, 0,17, 0,15, 0,
+        19,
 };
 
-static static_codebook _44u6__p9_0 = {
-	2, 225,
-	_vq_lengthlist__44u6__p9_0,
-	1, -514071552, 1627381760, 4, 0,
-	_vq_quantlist__44u6__p9_0,
-	NULL,
-	&_vq_auxt__44u6__p9_0,
-	NULL,
-	0
+static const static_codebook _44u6__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u6__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u6__p3_0,
+        0
 };
 
-static long _vq_quantlist__44u6__p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const long _vq_quantlist__44u6__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u6__p9_1[] = {
-	 1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 5,
-	 6, 6, 8, 8,10,10, 9, 9,10, 9,10, 9,10,10, 4, 6,
-	 6, 8, 9,10,10, 8, 9, 9,10,10,10,10,10, 7, 9, 8,
-	10,10,11,11,10,10,11,11,11,11,12,12, 7, 8, 8,10,
-	10,11,11,10,10,10,11,11,11,11,12, 8,10,10,11,11,
-	12,12,11,11,11,11,12,12,12,13, 8, 9, 9,11,11,12,
-	12,11,11,12,12,12,12,12,12, 8, 9, 9,10,10,11,11,
-	13,12,13,12,13,13,13,13, 8, 9, 9,10,10,11,11,12,
-	12,12,12,13,12,13,12, 9,10,10,11,11,12,12,13,13,
-	14,12,13,13,14,13, 9,10,10,11,11,12,12,12,12,13,
-	13,13,13,14,14, 9,11,10,11,11,12,13,13,12,13,13,
-	15,13,14,14, 9,10,10,11,12,12,13,13,13,13,13,14,
-	14,14,14,10,11,11,12,12,13,12,13,13,14,14,14,14,
-	14,15,10,11,11,11,12,13,13,13,13,14,14,14,14,14,
-	14,
+static const char _vq_lengthlist__44u6__p4_0[] = {
+         4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+         9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10,
+        11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
+        10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
+         9,10,10,12,12, 9,10,10,12,12,11,12,12,14,13,11,
+        11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,11,13,12,11,12,12,13,13, 5, 7, 7,
+         9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
+        11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
+         8, 9, 9,11,11,10,10,11,12,13,10,10,11,12,12, 6,
+         7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
+        10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+        13,13,10,11,11,12,13,12,12,12,13,14,12,12,13,14,
+        14, 9,10,10,12,12, 9,10,10,13,12,10,11,11,13,13,
+        11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
+         8, 7,10,10, 7, 8, 8,10,10, 9,10,10,12,11, 9,10,
+        10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
+        10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
+        10, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,10,13,12,
+        10,11,11,13,12, 9,10,10,12,12,10,11,11,13,12, 9,
+        10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
+        10,12,12,10,11,11,13,13,10,11,10,13,12,12,12,12,
+        14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
+        12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,
+         9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+        12,13,14,15,12,12,13,14,14, 9,10,10,12,12, 9,11,
+        10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,
+        14,15,11,12,12,14,13,11,12,12,14,14,12,13,13,14,
+        14,13,13,14,14,16,13,14,14,15,15,11,12,11,13,13,
+        11,12,11,14,13,12,12,13,14,15,12,14,12,15,12,13,
+        14,15,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,12,14,13,11,12,12,13,13, 9,10,10,
+        12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
+        14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
+        10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
+        11,11,13,13,12,13,12,14,14,11,11,12,13,14,14,14,
+        14,16,15,12,12,14,12,15,11,12,12,13,14,12,13,13,
+        14,15,11,12,12,14,14,13,14,14,16,16,13,14,13,16,
+        13,
 };
 
-static float _vq_quantthresh__44u6__p9_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+static const static_codebook _44u6__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u6__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u6__p4_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const long _vq_quantlist__44u6__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p9_1 = {
-	_vq_quantthresh__44u6__p9_1,
-	_vq_quantmap__44u6__p9_1,
-	15,
-	15
+static const char _vq_lengthlist__44u6__p5_0[] = {
+         2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+        11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9,
+        10, 9,12,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
+        10, 9,12,11,13,13, 8, 8, 9, 9,10,11,12,13,13,10,
+        11,11,12,12,13,13,14,14,10,10,11,11,12,13,13,14,
+        14,
 };
 
-static static_codebook _44u6__p9_1 = {
-	2, 225,
-	_vq_lengthlist__44u6__p9_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__44u6__p9_1,
-	NULL,
-	&_vq_auxt__44u6__p9_1,
-	NULL,
-	0
+static const static_codebook _44u6__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u6__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u6__p5_0,
+        0
 };
 
-static long _vq_quantlist__44u6__p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44u6__p6_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u6__p9_2[] = {
-	 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10, 9, 9, 9,10,
-	 9,
+static const char _vq_lengthlist__44u6__p6_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+         9, 9, 4, 4, 5, 6, 6, 7, 8, 9, 9, 5, 6, 6, 7, 7,
+         8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
+         8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,10,11, 9,
+         9, 9,10,10,11,11,12,11, 9, 9, 9,10,10,11,11,11,
+        12,
 };
 
-static float _vq_quantthresh__44u6__p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44u6__p6_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u6__p6_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u6__p6_0,
+        0
 };
 
-static long _vq_quantmap__44u6__p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44u6__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u6__p9_2 = {
-	_vq_quantthresh__44u6__p9_2,
-	_vq_quantmap__44u6__p9_2,
-	17,
-	17
+static const char _vq_lengthlist__44u6__p7_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10,10, 8,
+        10,10, 5, 8, 9, 7,10,10, 7,10, 9, 4, 8, 8, 9,11,
+        11, 8,11,11, 7,11,11,10,10,13,10,13,13, 7,11,11,
+        10,13,12,10,13,13, 5, 9, 8, 8,11,11, 9,11,11, 7,
+        11,11,10,13,13,10,12,13, 7,11,11,10,13,13, 9,13,
+        10,
 };
 
-static static_codebook _44u6__p9_2 = {
-	2, 289,
-	_vq_lengthlist__44u6__p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u6__p9_2,
-	NULL,
-	&_vq_auxt__44u6__p9_2,
-	NULL,
-	0
+static const static_codebook _44u6__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u6__p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44u6__p7_0,
+        0
 };
 
-static long _huff_lengthlist__44u6__short[] = {
-	 5,11,15,14,17,14,17,15,17,17, 4, 6, 9, 9,14, 9,
-	17,10,15,17, 6, 6, 5, 7, 7, 9,11,10,15,17, 6, 8,
-	 8,10, 9,11,14,13,16,17, 7, 6, 5, 7, 5, 7, 5, 8,
-	15,17, 9, 8, 8, 9, 8,10,10,11,14,17,10, 8, 7, 9,
-	 4, 7, 3, 5,11,17,10,10,10,10, 6, 9, 4, 5,11,17,
-	16,16,13,15, 5,10, 4, 3, 9,16,17,17,14,17, 7,11,
-	 6, 6,11,17,
+static const long _vq_quantlist__44u6__p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static static_codebook _huff_book__44u6__short = {
-	2, 100,
-	_huff_lengthlist__44u6__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const char _vq_lengthlist__44u6__p7_1[] = {
+         3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 6,
+         8, 8, 8, 8, 8, 8, 4, 5, 5, 6, 7, 8, 8, 8, 8, 8,
+         8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
+         7, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 9, 9,
+         9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
+         8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9,
 };
 
-static long _huff_lengthlist__44u7__long[] = {
-	 3, 9,15,13,16,13,16,12,12,12, 5, 5, 7, 8, 8,10,
-	11,10,13,13,10, 5, 5, 6, 6, 9, 9,10,14,14, 9, 6,
-	 6, 7, 6, 8, 9,10,13,12,13, 7, 5, 6, 4, 6, 6, 8,
-	12,13,11, 8, 7, 8, 6, 7, 7, 7,11,13,15,10, 8, 8,
-	 5, 6, 4, 5, 9,13, 9, 9, 8, 9, 7, 7, 4, 4, 6,11,
-	11,11,12,12,10,10, 8, 5, 5, 9,10,12,13,15,13,13,
-	12, 7, 6, 8,
+static const static_codebook _44u6__p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u6__p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u6__p7_1,
+        0
 };
 
-static static_codebook _huff_book__44u7__long = {
-	2, 100,
-	_huff_lengthlist__44u7__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const long _vq_quantlist__44u6__p8_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__44u7__p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u6__p8_0[] = {
+         1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
+         9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
+        11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
+         9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
+        13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
+        11,11,13,13,13,13,15,14, 9,10,10,12,11,12,13,13,
+        13,14,15,11,12,12,13,13,13,13,15,14,15,15,11,11,
+        12,13,13,14,14,14,15,15,15,
 };
 
-static long _vq_lengthlist__44u7__p1_0[] = {
-	 1, 4, 4, 5, 7, 7, 4, 7, 7, 5, 8, 8, 8,10,10, 7,
-	10,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,11,
-	10, 8,10,10, 8,11,10,10,12,13,11,13,13, 7,10,10,
-	10,13,11,11,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
-	10,10,11,13,13,10,11,13, 8,11,11,10,13,13,10,13,
-	12,
+static const static_codebook _44u6__p8_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u6__p8_0,
+        1, -524582912, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44u6__p8_0,
+        0
 };
 
-static float _vq_quantthresh__44u7__p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u6__p8_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantmap__44u7__p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u6__p8_1[] = {
+         3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 7,
+         7, 7, 8, 7, 8, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8,
+         8, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 7, 7,
+         7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+         8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
+         8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p1_0 = {
-	_vq_quantthresh__44u7__p1_0,
-	_vq_quantmap__44u7__p1_0,
-	3,
-	3
+static const static_codebook _44u6__p8_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u6__p8_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u6__p8_1,
+        0
 };
 
-static static_codebook _44u7__p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u7__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u7__p1_0,
-	NULL,
-	&_vq_auxt__44u7__p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u6__p9_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantlist__44u7__p2_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u6__p9_0[] = {
+         1, 3, 2, 9, 8,15,15,15,15,15,15,15,15,15,15, 4,
+         8, 9,13,14,14,14,14,14,14,14,14,14,14,14, 5, 8,
+         9,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+        14,
 };
 
-static long _vq_lengthlist__44u7__p2_0[] = {
-	 3, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
-	 7, 7, 5, 6, 6, 6, 7, 7, 6, 8, 8, 5, 6, 6, 6, 8,
-	 7, 6, 7, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7,
-	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 7, 8, 6,
-	 7, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
-	 9,
+static const static_codebook _44u6__p9_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u6__p9_0,
+        1, -514071552, 1627381760, 4, 0,
+        (long *)_vq_quantlist__44u6__p9_0,
+        0
 };
 
-static float _vq_quantthresh__44u7__p2_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u6__p9_1[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__44u7__p2_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u6__p9_1[] = {
+         1, 4, 4, 7, 7, 8, 9, 8, 8, 9, 8, 9, 8, 9, 9, 4,
+         7, 6, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 7,
+         6, 9, 9,10,10, 9, 9,10,10,10,10,11,11, 7, 9, 8,
+        10,10,11,11,10,10,11,11,11,11,11,11, 7, 8, 9,10,
+        10,11,11,10,10,11,11,11,11,11,12, 8,10,10,11,11,
+        12,12,11,11,12,12,12,12,13,12, 8,10,10,11,11,12,
+        11,11,11,11,12,12,12,12,13, 8, 9, 9,11,10,11,11,
+        12,12,12,12,13,12,13,12, 8, 9, 9,11,11,11,11,12,
+        12,12,12,12,13,13,13, 9,10,10,11,12,12,12,12,12,
+        13,13,13,13,13,13, 9,10,10,11,11,12,12,12,12,13,
+        13,13,13,14,13,10,10,10,12,11,12,12,13,13,13,13,
+        13,13,13,13,10,10,11,11,11,12,12,13,13,13,13,13,
+        13,13,13,10,11,11,12,12,13,12,12,13,13,13,13,13,
+        13,14,10,11,11,12,12,13,12,13,13,13,14,13,13,14,
+        13,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p2_0 = {
-	_vq_quantthresh__44u7__p2_0,
-	_vq_quantmap__44u7__p2_0,
-	3,
-	3
+static const static_codebook _44u6__p9_1 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u6__p9_1,
+        1, -522338304, 1620115456, 4, 0,
+        (long *)_vq_quantlist__44u6__p9_1,
+        0
 };
 
-static static_codebook _44u7__p2_0 = {
-	4, 81,
-	_vq_lengthlist__44u7__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u7__p2_0,
-	NULL,
-	&_vq_auxt__44u7__p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u6__p9_2[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__44u7__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u6__p9_2[] = {
+         3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9,
+         9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+         9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+         9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9,10, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9,10,10,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10, 9, 9,
+        10,
 };
 
-static long _vq_lengthlist__44u7__p3_0[] = {
-	 2, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
-	 9, 9,12,12, 8, 9, 9,12,12, 5, 7, 7,10, 9, 7, 9,
-	 9,11,11, 6, 8, 9,10,11,10,11,11,13,14, 9,10,11,
-	13,13, 5, 7, 7, 9, 9, 6, 9, 8,11,10, 7, 9, 9,11,
-	11, 9,11,10,13,13,10,11,11,14,13, 8,10,10,14,13,
-	10,11,11,16,14, 9,11,11,14,14,13,15,14,17,16,12,
-	13,14,16,15, 8, 9,10,13,14, 9,11,11,14,14,10,11,
-	11,14,15,13,13,14,17,17,13,14,15,16,17, 5, 7, 7,
-	10,10, 7, 9, 8,11,11, 7, 8, 9,11,11,10,11,11,14,
-	14,10,11,11,14,14, 7, 9, 9,11,11, 9,11,11,13,13,
-	 9,11,11,13,13,11,12,13,15,17,11,12,13,16,18, 6,
-	 8, 8,11,11, 8,10,10,13,12, 9,11,11,12,13,11,13,
-	11,16,14,11,13,12,16,16,10,11,11,15,15,11,13,13,
-	16,16,11,13,13,18,16,14,14,15,17,16,14,15,17,19,
-	 0, 9,11,11,14,15,10,12,12,15,17,11,13,13,15,17,
-	14,15,13, 0,15,15,17,16,18, 0, 5, 7, 7, 9,10, 7,
-	 9, 9,11,11, 7, 8, 9,11,11,10,11,11,14,14,10,11,
-	11,14,14, 6, 8, 9,11,11, 9,11,11,14,13, 8,10,10,
-	11,14,11,13,13,17,15,11,12,13,14,16, 7, 9, 9,11,
-	11, 9,11,11,13,12, 9,11,11,12,13,11,13,12,15,15,
-	11,13,12,16,15, 9,11,11,15,15,11,12,13,16,15,10,
-	11,12,16,15,15,16,16, 0, 0,14,13,15,16,19, 9,11,
-	12,15,15,11,13,13,17,16,11,13,12,15,17,14,16,16,
-	18, 0,15,15,16,18,17, 8,10,10,13,14,10,11,11,15,
-	16,10,11,11,15,16,14,15,15,17,19,14,14,15,19,19,
-	 9,11,11,16,15,11,13,13,17,17,11,13,13,17,17,15,
-	17,16, 0, 0,15,17,17, 0,17, 9,11,11,15,15,11,13,
-	12,16,16,11,13,13,18,17,15,16,15,19,19,14,16,18,
-	17,19,13,15,15, 0,18,14,16,17,17,18,14,16,16,19,
-	19,18,19,19, 0, 0,16,17,18,19, 0,12,14,14,16,18,
-	13,16,14, 0,19,14,16,17,19, 0,16,19,16,19,17,17,
-	18,18, 0, 0, 8,10,10,14,13, 9,11,11,15,14,10,11,
-	12,14,16,13,15,14,19,19,14,16,16,18,17, 9,11,11,
-	16,15,11,13,13, 0,17,10,12,13,15,16,15,18,16,19,
-	19,14,15,16,18,18, 9,11,12,15,15,11,13,13,17,19,
-	11,13,13,17,17,15,17,16,19,19,15,17,16, 0, 0,12,
-	14,14, 0,19,14,16,15, 0,19,13,14,16,19, 0,16,18,
-	18, 0, 0,16,16,17,17, 0,13,14,14,17, 0,14,17,16,
-	 0,19,14,16,16,19,18,17,19,17, 0, 0,18,18,17, 0,
-	 0,
+static const static_codebook _44u6__p9_2 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u6__p9_2,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u6__p9_2,
+        0
 };
 
-static float _vq_quantthresh__44u7__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const char _huff_lengthlist__44u6__short[] = {
+         4,11,16,13,17,13,17,16,17,17, 4, 7, 9, 9,13,10,
+        16,12,16,17, 7, 6, 5, 7, 8, 9,12,12,16,17, 6, 9,
+         7, 9,10,10,15,15,17,17, 6, 7, 5, 7, 5, 7, 7,10,
+        16,17, 7, 9, 8, 9, 8,10,11,11,15,17, 7, 7, 7, 8,
+         5, 8, 8, 9,15,17, 8, 7, 9, 9, 7, 8, 7, 2, 7,15,
+        14,13,13,15, 5,10, 4, 3, 6,17,17,15,13,17, 7,11,
+         7, 6, 9,16,
 };
 
-static long _vq_quantmap__44u7__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const static_codebook _huff_book__44u6__short = {
+        2, 100,
+        (char *)_huff_lengthlist__44u6__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p3_0 = {
-	_vq_quantthresh__44u7__p3_0,
-	_vq_quantmap__44u7__p3_0,
-	5,
-	5
+static const char _huff_lengthlist__44u7__long[] = {
+         3, 9,14,13,15,14,16,13,13,14, 5, 5, 7, 7, 8, 9,
+        11,10,12,15,10, 6, 5, 6, 6, 9,10,10,13,16,10, 6,
+         6, 6, 6, 8, 9, 9,12,15,14, 7, 6, 6, 5, 6, 6, 8,
+        12,15,10, 8, 7, 7, 6, 7, 7, 7,11,13,14,10, 9, 8,
+         5, 6, 4, 5, 9,12,10, 9, 9, 8, 6, 6, 5, 3, 6,11,
+        12,11,12,12,10, 9, 8, 5, 5, 8,10,11,15,13,13,13,
+        12, 8, 6, 7,
 };
 
-static static_codebook _44u7__p3_0 = {
-	4, 625,
-	_vq_lengthlist__44u7__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u7__p3_0,
-	NULL,
-	&_vq_auxt__44u7__p3_0,
-	NULL,
-	0
+static const static_codebook _huff_book__44u7__long = {
+        2, 100,
+        (char *)_huff_lengthlist__44u7__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44u7__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44u7__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u7__p4_0[] = {
-	 5, 6, 6, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 7,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 6, 7, 7,10, 9, 7, 7, 8,10,
-	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
-	 9,10,10,12,12, 9,10,10,11,12,11,12,12,13,13,11,
-	11,12,12,13, 8, 9, 9,11,11, 9,10,10,12,11, 9,10,
-	10,12,12,11,12,11,13,12,11,12,12,13,14, 6, 7, 7,
-	 9, 9, 7, 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,
-	11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 8,10,10,
-	 8, 8, 8,10,10,10,10,11,12,12,10,10,11,12,12, 6,
-	 7, 7,10,10, 7, 8, 8,10,10, 8, 8, 8,10,11, 9,10,
-	10,12,11,10,10,11,12,12, 9,10,10,12,12,10,10,10,
-	12,12,10,11,10,12,12,12,12,12,13,14,12,12,12,13,
-	14, 9,10,10,11,12, 9,10,10,12,12,10,10,11,12,12,
-	11,12,11,14,12,12,12,12,14,14, 6, 7, 7, 9, 9, 7,
-	 8, 7,10, 9, 7, 7, 8, 9,10, 9,10,10,12,11, 9,10,
-	10,11,12, 6, 7, 7,10,10, 8, 8, 8,11,10, 7, 8, 8,
-	10,10,10,10,10,12,12,10,10,10,11,12, 7, 8, 8,10,
-	10, 8, 8, 8,10,10, 8, 8, 8,10,10,10,11,10,12,12,
-	10,11,10,12,12, 9,10,10,12,12,10,11,10,13,12, 9,
-	10,10,12,12,12,12,12,14,14,11,11,12,12,14, 9,10,
-	10,12,12,10,10,10,12,12,10,11,10,12,12,12,12,12,
-	14,14,12,12,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
-	12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,
-	 9,10,10,12,12,10,10,10,12,12,10,11,11,12,12,12,
-	12,13,14,14,12,12,12,14,14, 9,10, 9,12,12, 9,10,
-	10,12,12,10,10,11,12,12,12,12,11,14,13,12,12,12,
-	13,14,11,12,12,13,13,12,12,12,14,14,12,13,12,14,
-	14,13,13,14,13,15,14,14,14,15,15,11,11,11,13,13,
-	11,12,11,14,13,12,12,12,14,14,12,13,12,15,12,13,
-	14,14,15,15, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,12,13,13,11,12,12,13,14, 9,10,10,
-	12,11,10,10,10,12,12, 9,10,10,12,12,12,13,12,14,
-	13,11,12,12,13,14, 9,10,10,12,12,10,10,10,12,12,
-	10,11,11,12,12,12,12,12,14,14,12,13,12,14,13,11,
-	11,11,13,13,12,12,12,14,13,11,11,12,13,14,13,14,
-	14,15,15,13,12,13,12,15,11,12,12,13,14,12,12,12,
-	14,14,11,12,12,14,14,13,14,14,15,15,13,14,13,15,
-	13,
+static const char _vq_lengthlist__44u7__p1_0[] = {
+         1, 4, 4, 4, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+        10,10, 5, 8, 8, 7,10,10, 8,10,10, 5, 8, 8, 8,11,
+        10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+        10,13,12,10,13,13, 5, 8, 8, 8,11,10, 8,10,11, 7,
+        10,10,10,13,13,10,12,13, 8,11,11,10,13,13,10,13,
+        12,
 };
 
-static float _vq_quantthresh__44u7__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u7__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u7__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u7__p1_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u7__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p4_0 = {
-	_vq_quantthresh__44u7__p4_0,
-	_vq_quantmap__44u7__p4_0,
-	5,
-	5
+static const char _vq_lengthlist__44u7__p2_0[] = {
+         3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+         7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+         7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
+         7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+         8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+         9,
 };
 
-static static_codebook _44u7__p4_0 = {
-	4, 625,
-	_vq_lengthlist__44u7__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u7__p4_0,
-	NULL,
-	&_vq_auxt__44u7__p4_0,
-	NULL,
-	0
+static const static_codebook _44u7__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u7__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u7__p2_0,
+        0
 };
 
-static long _vq_quantlist__44u7__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u7__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u7__p5_0[] = {
-	 2, 3, 3, 6, 6, 8, 8,10,10, 3, 5, 5, 8, 7, 8, 8,
-	11,11, 4, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9,
-	10, 9,12,12, 6, 7, 8, 9,10, 9,10,12,12, 8, 8, 8,
-	10, 9,12,11,13,13, 8, 8, 8, 9,10,11,12,13,13,10,
-	11,11,12,11,13,13,14,14,10,11,11,12,12,13,13,14,
-	14,
+static const char _vq_lengthlist__44u7__p3_0[] = {
+         2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+         9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
+         9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+        13,14, 5, 7, 7, 9, 9, 7, 9, 8,11,11, 7, 9, 9,11,
+        11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
+        10,11,12,15,14, 9,11,11,15,14,13,14,14,16,16,12,
+        13,14,17,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
+        12,14,15,12,14,13,16,16,13,14,15,15,17, 5, 7, 7,
+        10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,15,
+        14,10,11,12,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+         9,11,11,13,13,11,13,13,14,17,11,13,13,15,16, 6,
+         9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
+        12,16,14,11,13,13,16,16,10,12,12,15,15,11,13,13,
+        16,16,11,13,13,16,15,14,16,17,17,19,14,16,16,18,
+         0, 9,11,11,14,15,10,13,12,16,15,11,13,13,16,16,
+        14,15,14, 0,16,14,16,16,18, 0, 5, 7, 7,10,10, 7,
+         9, 9,12,11, 7, 9, 9,11,12,10,11,11,15,14,10,11,
+        12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
+        12,13,11,13,13,17,15,11,12,13,14,15, 7, 9, 9,11,
+        12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,16,16,
+        11,13,13,15,14, 9,11,11,14,15,11,13,13,16,15,10,
+        12,13,16,16,15,16,16, 0, 0,14,13,15,16,18,10,11,
+        11,15,15,11,13,14,16,18,11,13,13,16,15,15,16,16,
+        19, 0,14,15,15,16,16, 8,10,10,13,13,10,12,11,16,
+        15,10,11,11,16,15,13,15,16,18, 0,13,14,15,17,17,
+         9,11,11,15,15,11,13,13,16,18,11,13,13,16,17,15,
+        16,16, 0, 0,15,18,16, 0,17, 9,11,11,15,15,11,13,
+        12,17,15,11,13,14,16,17,15,18,15, 0,17,15,16,16,
+        18,19,13,15,14, 0,18,14,16,16,19,18,14,16,15,19,
+        19,16,18,19, 0, 0,16,17, 0, 0, 0,12,14,14,17,17,
+        13,16,14, 0,18,14,16,15,18, 0,16,18,16,19,17,18,
+        19,17, 0, 0, 8,10,10,14,14, 9,12,11,15,15,10,11,
+        12,15,17,13,15,15,18,16,14,16,15,18,17, 9,11,11,
+        16,15,11,13,13, 0,16,11,12,13,16,15,15,16,16, 0,
+        17,15,15,16,18,17, 9,12,11,15,17,11,13,13,16,16,
+        11,14,13,16,16,15,15,16,18,19,16,18,16, 0, 0,12,
+        14,14, 0,16,14,16,16, 0,18,13,14,15,16, 0,17,16,
+        18, 0, 0,16,16,17,19, 0,13,14,14,17, 0,14,17,16,
+         0,19,14,15,15,18,19,17,16,18, 0, 0,15,19,16, 0,
+         0,
 };
 
-static float _vq_quantthresh__44u7__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44u7__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u7__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u7__p3_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44u7__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p5_0 = {
-	_vq_quantthresh__44u7__p5_0,
-	_vq_quantmap__44u7__p5_0,
-	9,
-	9
+static const char _vq_lengthlist__44u7__p4_0[] = {
+         4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+         9, 9,11,11, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8,
+         8,10,10, 6, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10,
+        11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
+        10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
+         9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
+        11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,11, 9,10,
+        10,12,12,11,12,11,13,13,11,12,12,13,13, 6, 7, 7,
+         9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
+        11, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
+         8, 9, 9,11,11,10,11,11,12,12,10,10,11,12,13, 6,
+         7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
+        10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+        13,13,10,11,11,13,12,12,12,13,13,14,12,12,13,14,
+        14, 9,10,10,12,12, 9,10,10,12,12,10,11,11,13,13,
+        11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
+         8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,11, 9,10,
+        10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
+        10,11,10,11,11,13,12,10,10,11,11,13, 7, 8, 8,10,
+        10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,10,13,12,
+        10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12, 9,
+        10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
+        10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,12,
+        14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
+        12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,
+         9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
+        13,13,14,14,12,12,13,14,14, 9,10,10,12,12, 9,11,
+        10,13,12,10,10,11,12,13,11,13,12,14,13,12,12,13,
+        14,14,11,12,12,13,13,11,12,13,14,14,12,13,13,14,
+        14,13,13,14,14,16,13,14,14,16,16,11,11,11,13,13,
+        11,12,11,14,13,12,12,13,14,15,13,14,12,16,13,14,
+        14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,12,14,13,11,12,12,13,14, 9,10,10,
+        12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
+        14,12,12,13,13,14, 9,10,10,12,12,10,11,11,12,13,
+        10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
+        12,12,13,13,12,13,12,14,14,11,11,12,13,14,13,15,
+        14,16,15,13,12,14,13,16,11,12,12,13,13,12,13,13,
+        14,14,12,12,12,14,14,13,14,14,15,15,13,14,13,16,
+        14,
 };
 
-static static_codebook _44u7__p5_0 = {
-	2, 81,
-	_vq_lengthlist__44u7__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u7__p5_0,
-	NULL,
-	&_vq_auxt__44u7__p5_0,
-	NULL,
-	0
+static const static_codebook _44u7__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u7__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u7__p4_0,
+        0
 };
 
-static long _vq_quantlist__44u7__p6_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u7__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__44u7__p6_0[] = {
-	 4, 4, 4, 5, 5, 7, 7, 9, 9, 4, 4, 4, 6, 6, 7, 7,
-	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
-	 8, 8, 9, 9, 5, 6, 6, 6, 7, 8, 8, 9, 9, 7, 7, 7,
-	 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,10, 9,
-	 9, 9,10, 9,10,10,11,11, 9, 9, 9, 9,10,10,10,11,
-	11,
+static const char _vq_lengthlist__44u7__p5_0[] = {
+         2, 3, 3, 6, 6, 7, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+        11,11, 3, 5, 5, 7, 7, 8, 9,11,11, 6, 8, 7, 9, 9,
+        10,10,12,12, 6, 7, 8, 9,10,10,10,12,12, 8, 8, 8,
+        10,10,12,11,13,13, 8, 8, 9,10,10,11,11,13,13,10,
+        11,11,12,12,13,13,14,14,10,11,11,12,12,13,13,14,
+        14,
 };
 
-static float _vq_quantthresh__44u7__p6_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44u7__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u7__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u7__p5_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p6_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44u7__p6_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p6_0 = {
-	_vq_quantthresh__44u7__p6_0,
-	_vq_quantmap__44u7__p6_0,
-	9,
-	9
+static const char _vq_lengthlist__44u7__p6_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 8, 7,
+         9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+         8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
+         8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,11,11, 9,
+         9, 9,10,10,11,10,12,11, 9, 9, 9,10,10,11,11,11,
+        12,
 };
 
-static static_codebook _44u7__p6_0 = {
-	2, 81,
-	_vq_lengthlist__44u7__p6_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u7__p6_0,
-	NULL,
-	&_vq_auxt__44u7__p6_0,
-	NULL,
-	0
+static const static_codebook _44u7__p6_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u7__p6_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u7__p6_0,
+        0
 };
 
-static long _vq_quantlist__44u7__p7_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44u7__p7_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_lengthlist__44u7__p7_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8,10,10, 8,
-	10,10, 5, 8, 9, 8,10,10, 8,10,10, 4, 9, 9, 9,11,
-	12, 8,12,11, 8,12,11,11,12,13,10,13,13, 7,12,11,
-	10,13,12,10,13,13, 4, 9, 9, 8,11,12, 9,11,12, 7,
-	11,12,10,13,13,10,12,13, 8,11,12,10,13,13,10,13,
-	12,
+static const char _vq_lengthlist__44u7__p7_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8, 9, 9, 7,
+        10,10, 5, 8, 9, 7, 9,10, 8, 9, 9, 4, 9, 9, 9,11,
+        10, 8,10,10, 7,11,10,10,10,12,10,12,12, 7,10,10,
+        10,12,11,10,12,12, 5, 9, 9, 8,10,10, 9,11,11, 7,
+        11,10,10,12,12,10,11,12, 7,10,11,10,12,12,10,12,
+        10,
 };
 
-static float _vq_quantthresh__44u7__p7_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _44u7__p7_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u7__p7_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44u7__p7_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p7_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44u7__p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p7_0 = {
-	_vq_quantthresh__44u7__p7_0,
-	_vq_quantmap__44u7__p7_0,
-	3,
-	3
+static const char _vq_lengthlist__44u7__p7_1[] = {
+         3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6,
+         8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8,
+         8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7,
+         7, 8, 8, 9, 9, 9, 9, 7, 8, 7, 8, 8, 9, 9, 9, 9,
+         9, 9, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8,
+         9, 9, 9, 9,10, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9,10, 8, 8, 8, 9, 9, 9, 9,10, 9,10,10, 8, 8,
+         8, 9, 9, 9, 9, 9,10,10,10,
 };
 
-static static_codebook _44u7__p7_0 = {
-	4, 81,
-	_vq_lengthlist__44u7__p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44u7__p7_0,
-	NULL,
-	&_vq_auxt__44u7__p7_0,
-	NULL,
-	0
+static const static_codebook _44u7__p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u7__p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u7__p7_1,
+        0
 };
 
-static long _vq_quantlist__44u7__p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44u7__p8_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44u7__p7_1[] = {
-	 3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6,
-	 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8,
-	 8, 6, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 6, 7,
-	 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 8, 7, 8, 8, 9, 9,
-	 9, 9, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
-	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
-	 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9,
+static const char _vq_lengthlist__44u7__p8_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
+         9, 9,11,10,12,12, 5, 6, 5, 7, 7, 9, 9,10,11,12,
+        12, 6, 7, 7, 8, 8,10,10,11,11,13,13, 6, 7, 7, 8,
+         8,10,10,11,12,13,13, 8, 9, 9,10,10,11,11,12,12,
+        14,14, 8, 9, 9,10,10,11,11,12,12,14,14,10,10,10,
+        11,11,13,12,14,14,15,15,10,10,10,12,12,13,13,14,
+        14,15,15,11,12,12,13,13,14,14,15,14,16,15,11,12,
+        12,13,13,14,14,15,15,15,16,
 };
 
-static float _vq_quantthresh__44u7__p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44u7__p8_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u7__p8_0,
+        1, -524582912, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44u7__p8_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44u7__p8_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p7_1 = {
-	_vq_quantthresh__44u7__p7_1,
-	_vq_quantmap__44u7__p7_1,
-	11,
-	11
+static const char _vq_lengthlist__44u7__p8_1[] = {
+         4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
+         7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+         7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
+         7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
+         8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+         7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
+         8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
+         7, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static static_codebook _44u7__p7_1 = {
-	2, 121,
-	_vq_lengthlist__44u7__p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u7__p7_1,
-	NULL,
-	&_vq_auxt__44u7__p7_1,
-	NULL,
-	0
+static const static_codebook _44u7__p8_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u7__p8_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u7__p8_1,
+        0
 };
 
-static long _vq_quantlist__44u7__p8_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44u7__p9_0[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44u7__p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
-	 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
-	11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
-	 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
-	14,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
-	11,11,12,12,13,13,14,14,10,10,10,11,11,12,13,13,
-	13,14,14,11,12,11,13,12,13,14,14,14,15,15,11,11,
-	12,13,13,13,13,14,14,15,15,
+static const char _vq_lengthlist__44u7__p9_0[] = {
+         1, 3, 3,10,10,10,10,10,10,10,10, 4,10,10,10,10,
+        10,10,10,10,10,10, 4,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,
 };
 
-static float _vq_quantthresh__44u7__p8_0[] = {
-	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
-	38.5, 49.5, 
+static const static_codebook _44u7__p9_0 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u7__p9_0,
+        1, -512171520, 1630791680, 4, 0,
+        (long *)_vq_quantlist__44u7__p9_0,
+        0
 };
 
-static long _vq_quantmap__44u7__p8_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44u7__p9_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u7__p8_0 = {
-	_vq_quantthresh__44u7__p8_0,
-	_vq_quantmap__44u7__p8_0,
-	11,
-	11
+static const char _vq_lengthlist__44u7__p9_1[] = {
+         1, 4, 4, 6, 5, 8, 6, 9, 8,10, 9,11,10, 4, 6, 6,
+         8, 8, 9, 9,11,10,11,11,11,11, 4, 6, 6, 8, 8,10,
+         9,11,11,11,11,11,12, 6, 8, 8,10,10,11,11,12,12,
+        13,12,13,13, 6, 8, 8,10,10,11,11,12,12,12,13,14,
+        13, 8,10,10,11,11,12,13,14,14,14,14,15,15, 8,10,
+        10,11,12,12,13,13,14,14,14,14,15, 9,11,11,13,13,
+        14,14,15,14,16,15,17,15, 9,11,11,12,13,14,14,15,
+        14,15,15,15,16,10,12,12,13,14,15,15,15,15,16,17,
+        16,17,10,13,12,13,14,14,16,16,16,16,15,16,17,11,
+        13,13,14,15,14,17,15,16,17,17,17,17,11,13,13,14,
+        15,15,15,15,17,17,16,17,16,
 };
 
-static static_codebook _44u7__p8_0 = {
-	2, 121,
-	_vq_lengthlist__44u7__p8_0,
-	1, -524582912, 1618345984, 4, 0,
-	_vq_quantlist__44u7__p8_0,
-	NULL,
-	&_vq_auxt__44u7__p8_0,
-	NULL,
-	0
+static const static_codebook _44u7__p9_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u7__p9_1,
+        1, -518889472, 1622704128, 4, 0,
+        (long *)_vq_quantlist__44u7__p9_1,
+        0
 };
 
-static long _vq_quantlist__44u7__p8_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u7__p8_1[] = {
-	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 6,
-	 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8,
-	 8, 6, 7, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7,
-	 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u7__p8_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u7__p8_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u7__p8_1 = {
-	_vq_quantthresh__44u7__p8_1,
-	_vq_quantmap__44u7__p8_1,
-	11,
-	11
-};
-
-static static_codebook _44u7__p8_1 = {
-	2, 121,
-	_vq_lengthlist__44u7__p8_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u7__p8_1,
-	NULL,
-	&_vq_auxt__44u7__p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u7__p9_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u7__p9_0[] = {
-	 1, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u7__p9_0[] = {
-	-2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 
-	2229.5, 2866.5, 
-};
-
-static long _vq_quantmap__44u7__p9_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u7__p9_0 = {
-	_vq_quantthresh__44u7__p9_0,
-	_vq_quantmap__44u7__p9_0,
-	11,
-	11
-};
-
-static static_codebook _44u7__p9_0 = {
-	2, 121,
-	_vq_lengthlist__44u7__p9_0,
-	1, -512171520, 1630791680, 4, 0,
-	_vq_quantlist__44u7__p9_0,
-	NULL,
-	&_vq_auxt__44u7__p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u7__p9_1[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u7__p9_1[] = {
-	 1, 4, 4, 5, 5, 7, 7,10, 9,11,11,12,12, 4, 7, 6,
-	 8, 8, 9, 9,11,10,13,12,13,13, 4, 6, 7, 8, 8, 9,
-	 9,10,11,13,13,12,13, 5, 8, 8,10, 9,12,11,12,12,
-	13,13,15,14, 6, 8, 8,10,10,11,11,13,12,13,14,14,
-	15, 8,10,10,12,11,13,13,14,15,15,16,15,16, 8, 9,
-	10,12,12,13,13,16,15,15,15,15,15,10,11,11,14,13,
-	14,14,16,16,15,16,16,16,10,12,12,12,14,14,14,15,
-	16,15,16,15,16,11,12,12,14,14,16,16,15,16,16,16,
-	16,16,12,12,13,13,15,15,14,15,16,16,16,16,16,12,
-	14,14,15,14,16,16,16,16,16,16,16,16,13,14,13,14,
-	15,16,15,16,16,16,16,16,16,
-};
-
-static float _vq_quantthresh__44u7__p9_1[] = {
-	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
-	122.5, 171.5, 220.5, 269.5, 
-};
-
-static long _vq_quantmap__44u7__p9_1[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u7__p9_1 = {
-	_vq_quantthresh__44u7__p9_1,
-	_vq_quantmap__44u7__p9_1,
-	13,
-	13
-};
-
-static static_codebook _44u7__p9_1 = {
-	2, 169,
-	_vq_lengthlist__44u7__p9_1,
-	1, -518889472, 1622704128, 4, 0,
-	_vq_quantlist__44u7__p9_1,
-	NULL,
-	&_vq_auxt__44u7__p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u7__p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
-};
-
-static long _vq_lengthlist__44u7__p9_2[] = {
-	 2, 4, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
-	 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8,
-};
-
-static float _vq_quantthresh__44u7__p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
-};
-
-static long _vq_quantmap__44u7__p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u7__p9_2 = {
-	_vq_quantthresh__44u7__p9_2,
-	_vq_quantmap__44u7__p9_2,
-	49,
-	49
-};
-
-static static_codebook _44u7__p9_2 = {
-	1, 49,
-	_vq_lengthlist__44u7__p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44u7__p9_2,
-	NULL,
-	&_vq_auxt__44u7__p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u7__short[] = {
-	 6,14,18,18,18,18,17,17,17,17, 4, 8,11,12,13,11,
-	13,11,16,17, 6, 7, 8, 9, 8, 9,12, 9,14,17, 6, 9,
-	11,12,12,12,15,12,17,17, 6, 6, 6, 8, 5, 7, 7, 8,
-	14,17, 7, 9, 9,11, 8,10,10,11,14,16, 8, 7, 7, 8,
-	 5, 7, 4, 5,11,17, 9, 8,10, 9, 7, 9, 4, 2, 9,16,
-	15,14,16,14, 8,14, 4, 3, 7,16,17,17,16,17, 9,15,
-	 6, 5,10,17,
-};
-
-static static_codebook _huff_book__44u7__short = {
-	2, 100,
-	_huff_lengthlist__44u7__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u8__long[] = {
-	 3, 9,13,13,14,13,13,13,13,14, 5, 4, 6, 8,10,12,
-	13,15,13,14, 9, 5, 3, 5, 8,10,12,14,13,13,11, 7,
-	 4, 3, 5, 7,10,11,12,14,11, 9, 7, 4, 4, 6, 8,10,
-	13,14,10,11, 9, 7, 6, 6, 7, 9,12,15,12,11,11, 8,
-	 7, 6, 6, 7,11,14,12,12,12,10, 8, 7, 6, 7, 9,13,
-	11,12,13,12,11, 8, 8, 7, 9,12,11,14,16,16,15,11,
-	10, 9, 9,11,
-};
-
-static static_codebook _huff_book__44u8__long = {
-	2, 100,
-	_huff_lengthlist__44u8__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u8__short[] = {
-	 7,15,18,18,18,18,18,18,18,18, 4, 6, 9,10,10,11,
-	16,15,18,18, 5, 6, 6, 6, 8,10,15,15,18,18, 5, 6,
-	 5, 4, 6, 9,12,15,17,18, 7, 6, 6, 5, 6, 5, 8,11,
-	15,18,10, 9, 9, 7, 4, 3, 6,10,16,17,13,12,12, 6,
-	 6, 4, 5, 9,14,16,16,17,13, 5, 5, 4, 5, 8,13,16,
-	17,17,14, 7, 7, 6, 7,10,15,17,17,17,17,11,12,12,
-	12,14,17,17,
-};
-
-static static_codebook _huff_book__44u8__short = {
-	2, 100,
-	_huff_lengthlist__44u8__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u8_p1_0[] = {
-	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
-	 8, 9, 5, 7, 7, 7, 9, 8, 8, 9, 9, 5, 7, 7, 7, 9,
-	 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,10,10, 7, 9, 9,
-	 9,10, 9, 9,10,11, 5, 7, 7, 7, 9, 9, 8, 9, 9, 7,
-	 9, 9, 9,11,10, 9, 9,10, 8, 9, 9, 9,10,10, 9,11,
-	10,
-};
-
-static float _vq_quantthresh__44u8_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u8_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p1_0 = {
-	_vq_quantthresh__44u8_p1_0,
-	_vq_quantmap__44u8_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44u8_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u8_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u8_p1_0,
-	NULL,
-	&_vq_auxt__44u8_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u8_p2_0[] = {
-	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
-	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 7, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10,
-	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,12,11, 9,10,10,12,12, 8, 9, 9,11,11,
-	 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,13,11,
-	11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,11,13,13,11,12,12,14,13, 5, 7, 7,
-	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
-	12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
-	 8, 9, 9,10,11,10,11,11,12,12,10,10,11,12,13, 6,
-	 8, 8,10,10, 7, 8, 8,11,10, 8, 8, 9,10,11,10,11,
-	10,12,11,10,11,11,12,12, 9,10,10,12,12,10,11,11,
-	13,13,10,11,11,13,13,12,12,13,13,14,12,12,13,14,
-	14, 9,10,10,12,12, 9,10,10,12,12,10,11,11,12,13,
-	11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
-	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,11, 9,10,
-	10,12,12, 6, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 8,
-	10,11,10,11,11,13,12,10,10,11,11,13, 7, 8, 8,10,
-	10, 8, 9, 9,11,10, 8, 9, 9,11,11,10,11,10,13,12,
-	10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12, 9,
-	10,10,12,12,12,13,13,14,14,11,11,12,12,14, 9,10,
-	10,12,12,10,11,11,13,13,10,11,11,13,12,12,13,12,
-	14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
-	12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,
-	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
-	13,13,14,15,12,12,13,14,14, 9,10,10,12,12, 9,11,
-	10,13,12,10,11,11,12,13,12,13,12,14,13,12,12,13,
-	14,14,11,12,12,14,14,12,12,12,14,14,12,13,13,14,
-	14,13,13,14,14,16,14,14,14,15,15,11,12,12,14,14,
-	11,12,11,14,13,12,12,13,14,14,13,14,12,15,13,14,
-	14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
-	10,12,12,11,12,12,14,13,11,12,12,13,14, 9,10,10,
-	12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
-	14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
-	10,11,11,13,13,12,12,12,14,14,12,13,12,15,14,11,
-	12,11,14,13,12,13,12,14,14,11,11,12,13,14,13,14,
-	14,16,15,13,12,14,13,15,11,12,12,13,14,12,13,13,
-	14,14,12,13,12,14,14,14,14,14,15,16,13,14,13,15,
-	14,
-};
-
-static float _vq_quantthresh__44u8_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u8_p2_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p2_0 = {
-	_vq_quantthresh__44u8_p2_0,
-	_vq_quantmap__44u8_p2_0,
-	5,
-	5
-};
-
-static static_codebook _44u8_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44u8_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u8_p2_0,
-	NULL,
-	&_vq_auxt__44u8_p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__44u8_p3_0[] = {
-	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
-	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
-	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 7, 7,
-	 8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
-	 9, 9,10,10,11,10,12,12, 9, 9, 9,10,10,10,11,12,
-	12,
-};
-
-static float _vq_quantthresh__44u8_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__44u8_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p3_0 = {
-	_vq_quantthresh__44u8_p3_0,
-	_vq_quantmap__44u8_p3_0,
-	9,
-	9
-};
-
-static static_codebook _44u8_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44u8_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u8_p3_0,
-	NULL,
-	&_vq_auxt__44u8_p3_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__44u8_p4_0[] = {
-	 4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11,
-	11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
-	12,12, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
-	11,11,12, 6, 6, 6, 7, 7, 8, 7, 9, 9, 9, 9,10,10,
-	11,11,12,12, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9,10,
-	10,11,11,12,12, 7, 7, 7, 8, 7, 9, 8, 9, 9,10, 9,
-	11,10,11,11,12,12, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9,
-	10,10,10,11,11,12,12, 8, 8, 8, 9, 9, 9, 9,10,10,
-	10,10,11,11,11,11,12,12, 8, 8, 8, 8, 9, 9, 9,10,
-	10,10,10,11,11,11,12,12,12, 9, 9, 9, 9, 9,10, 9,
-	10,10,11,10,11,11,12,12,12,12, 9, 9, 9, 9, 9, 9,
-	10,10,10,11,11,11,11,12,12,12,13,10,10,10,10,10,
-	11,10,11,11,11,11,12,12,12,12,12,13,10,10,10,10,
-	10,10,11,11,11,11,11,12,12,12,12,13,12,11,11,11,
-	11,11,11,11,12,12,12,12,12,12,12,13,13,13,11,11,
-	11,11,11,11,11,12,12,12,12,12,12,13,12,13,13,11,
-	12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,
-	12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,
-	13,
-};
-
-static float _vq_quantthresh__44u8_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__44u8_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p4_0 = {
-	_vq_quantthresh__44u8_p4_0,
-	_vq_quantmap__44u8_p4_0,
-	17,
-	17
-};
-
-static static_codebook _44u8_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44u8_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u8_p4_0,
-	NULL,
-	&_vq_auxt__44u8_p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p5_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u8_p5_0[] = {
-	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7, 8, 9, 7,
-	 9, 9, 5, 7, 8, 7, 9, 9, 7, 9, 8, 5, 7, 7, 8, 9,
-	 9, 7, 9, 9, 7, 9, 9, 8, 9,11, 9,11,11, 7, 9, 9,
-	 9,11,10, 9,11,11, 5, 7, 8, 7, 9, 9, 8, 9, 9, 7,
-	 9, 9, 9,11,11, 9,10,11, 7, 9, 9, 9,11,11, 8,11,
-	 9,
-};
-
-static float _vq_quantthresh__44u8_p5_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__44u8_p5_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p5_0 = {
-	_vq_quantthresh__44u8_p5_0,
-	_vq_quantmap__44u8_p5_0,
-	3,
-	3
-};
-
-static static_codebook _44u8_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44u8_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44u8_p5_0,
-	NULL,
-	&_vq_auxt__44u8_p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u8_p5_1[] = {
-	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8, 5, 6, 6, 6, 6,
-	 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
-	 8, 6, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 6, 6, 6, 7,
-	 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
-	 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u8_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u8_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p5_1 = {
-	_vq_quantthresh__44u8_p5_1,
-	_vq_quantmap__44u8_p5_1,
-	11,
-	11
-};
-
-static static_codebook _44u8_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44u8_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u8_p5_1,
-	NULL,
-	&_vq_auxt__44u8_p5_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u8_p6_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9,10,10,10, 5, 6, 6,
-	 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
-	 9, 9, 9,10,10,11,11, 7, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,11,11, 7, 7, 7, 8, 8, 9, 9,10,10,10,11,11,
-	11, 8, 9, 9, 9, 9,10,10,10,10,11,11,12,12, 8, 9,
-	 9, 9, 9,10,10,10,11,11,11,12,12, 8, 9, 9,10,10,
-	11,10,11,11,12,12,12,12, 9, 9, 9,10,10,11,11,11,
-	11,12,12,12,12,10,10,10,11,11,11,11,12,12,12,12,
-	13,13,10,10,10,11,11,11,11,12,12,12,12,13,13,11,
-	11,11,12,12,12,12,12,12,13,13,13,13,11,11,11,12,
-	12,12,12,12,12,13,13,13,13,
-};
-
-static float _vq_quantthresh__44u8_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44u8_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p6_0 = {
-	_vq_quantthresh__44u8_p6_0,
-	_vq_quantmap__44u8_p6_0,
-	13,
-	13
-};
-
-static static_codebook _44u8_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u8_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u8_p6_0,
-	NULL,
-	&_vq_auxt__44u8_p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u8_p6_1[] = {
-	 3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
-	 5, 5, 5, 5, 5, 5, 5, 5, 5,
-};
-
-static float _vq_quantthresh__44u8_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__44u8_p6_1[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p6_1 = {
-	_vq_quantthresh__44u8_p6_1,
-	_vq_quantmap__44u8_p6_1,
-	5,
-	5
-};
-
-static static_codebook _44u8_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u8_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u8_p6_1,
-	NULL,
-	&_vq_auxt__44u8_p6_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u8_p7_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
-	 8, 8, 9, 8, 9, 9,10,10,11,11, 4, 6, 6, 8, 8, 8,
-	 9, 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,10,10,
-	11,11,12,12, 7, 8, 8, 9, 9,10,10,10,10,11,11,12,
-	12, 8, 9, 9,10,10,10,10,11,11,12,12,13,13, 8, 9,
-	 9,10,10,10,11,11,11,12,13,13,13, 9, 9, 9,10,10,
-	11,11,12,12,13,13,14,14, 9, 9, 9,10,10,11,11,12,
-	12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,14,
-	14,14,10,10,11,11,12,12,12,13,13,13,14,14,15,11,
-	11,11,12,12,13,13,14,14,14,14,16,15,11,11,11,12,
-	12,13,13,14,14,14,14,16,15,
-};
-
-static float _vq_quantthresh__44u8_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
-};
-
-static long _vq_quantmap__44u8_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p7_0 = {
-	_vq_quantthresh__44u8_p7_0,
-	_vq_quantmap__44u8_p7_0,
-	13,
-	13
-};
-
-static static_codebook _44u8_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44u8_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44u8_p7_0,
-	NULL,
-	&_vq_auxt__44u8_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u8_p7_1[] = {
-	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
-	 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7,
-	 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
-	 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8,
-	 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7,
-	 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
-	 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
-	 7, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u8_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u8_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p7_1 = {
-	_vq_quantthresh__44u8_p7_1,
-	_vq_quantmap__44u8_p7_1,
-	11,
-	11
-};
-
-static static_codebook _44u8_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44u8_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u8_p7_1,
-	NULL,
-	&_vq_auxt__44u8_p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__44u8_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10,10,11,11, 4,
-	 6, 6, 8, 8,10,10, 9, 9,10,10,11,10,12,12, 4, 6,
-	 6, 8, 8, 9,10, 9, 9,10,10,11,11,11,12, 7, 8, 8,
-	10,10,11,11,11,10,11,11,13,12,13,12, 7, 8, 8,10,
-	10,11,11,10,11,11,11,12,12,13,13, 8,10, 9,11,11,
-	12,12,11,11,12,12,13,13,14,14, 8, 9, 9,11,11,12,
-	12,11,11,12,12,14,13,13,13, 8, 9, 9,11,10,12,11,
-	12,12,13,13,14,13,14,13, 8, 9, 9,11,11,11,12,12,
-	12,13,13,13,14,14,14, 9,10,10,12,11,12,12,13,13,
-	14,14,15,13,14,14, 9,10,10,11,12,12,12,13,13,14,
-	14,15,14,14,14,10,11,11,12,12,13,13,14,13,14,14,
-	15,14,15,15,10,11,11,12,12,13,13,13,14,14,14,14,
-	15,16,15,11,12,12,13,12,14,14,14,13,15,14,16,15,
-	16,15,11,12,12,13,13,13,14,14,15,15,15,15,16,15,
-	15,
-};
-
-static float _vq_quantthresh__44u8_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__44u8_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p8_0 = {
-	_vq_quantthresh__44u8_p8_0,
-	_vq_quantmap__44u8_p8_0,
-	15,
-	15
-};
-
-static static_codebook _44u8_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44u8_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44u8_p8_0,
-	NULL,
-	&_vq_auxt__44u8_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__44u8_p8_1[] = {
-	 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 7, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9,10, 8, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	10, 9,10,10, 9,10, 9,10, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9,10,10, 9,10,10, 9,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,
-	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9,10, 9,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9,10, 9, 9,10,10,10,10,10,10,10,10,
-	10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
-	10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
-	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
-	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
-	10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,
+static const long _vq_quantlist__44u7__p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static float _vq_quantthresh__44u8_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
+static const char _vq_lengthlist__44u7__p9_2[] = {
+         2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+         8,
 };
 
-static long _vq_quantmap__44u8_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
+static const static_codebook _44u7__p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44u7__p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44u7__p9_2,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u8_p8_1 = {
-	_vq_quantthresh__44u8_p8_1,
-	_vq_quantmap__44u8_p8_1,
-	21,
-	21
+static const char _huff_lengthlist__44u7__short[] = {
+         5,12,17,16,16,17,17,17,17,17, 4, 7,11,11,12, 9,
+        17,10,17,17, 7, 7, 8, 9, 7, 9,11,10,15,17, 7, 9,
+        10,11,10,12,14,12,16,17, 7, 8, 5, 7, 4, 7, 7, 8,
+        16,16, 6,10, 9,10, 7,10,11,11,16,17, 6, 8, 8, 9,
+         5, 7, 5, 8,16,17, 5, 5, 8, 7, 6, 7, 7, 6, 6,14,
+        12,10,12,11, 7,11, 4, 4, 2, 7,17,15,15,15, 8,15,
+         6, 8, 5, 9,
 };
 
-static static_codebook _44u8_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44u8_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44u8_p8_1,
-	NULL,
-	&_vq_auxt__44u8_p8_1,
-	NULL,
-	0
+static const static_codebook _huff_book__44u7__short = {
+        2, 100,
+        (char *)_huff_lengthlist__44u7__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44u8_p9_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _huff_lengthlist__44u8__long[] = {
+         3, 9,13,14,14,15,14,14,15,15, 5, 4, 6, 8,10,12,
+        12,14,15,15, 9, 5, 4, 5, 8,10,11,13,16,16,10, 7,
+         4, 3, 5, 7, 9,11,13,13,10, 9, 7, 4, 4, 6, 8,10,
+        12,14,13,11, 9, 6, 5, 5, 6, 8,12,14,13,11,10, 8,
+         7, 6, 6, 7,10,14,13,11,12,10, 8, 7, 6, 6, 9,13,
+        12,11,14,12,11, 9, 8, 7, 9,11,11,12,14,13,14,11,
+        10, 8, 8, 9,
 };
 
-static long _vq_lengthlist__44u8_p9_0[] = {
-	 1, 4, 4, 9, 9, 9, 9, 9, 9, 5, 9, 9, 8, 8, 8, 8,
-	 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8,
+static const static_codebook _huff_book__44u8__long = {
+        2, 100,
+        (char *)_huff_lengthlist__44u8__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44u8_p9_0[] = {
-	-3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5, 2327.5, 3258.5, 
+static const char _huff_lengthlist__44u8__short[] = {
+         6,14,18,18,17,17,17,17,17,17, 4, 7, 9, 9,10,13,
+        15,17,17,17, 6, 7, 5, 6, 8,11,16,17,16,17, 5, 7,
+         5, 4, 6,10,14,17,17,17, 6, 6, 6, 5, 7,10,13,16,
+        17,17, 7, 6, 7, 7, 7, 8, 7,10,15,16,12, 9, 9, 6,
+         6, 5, 3, 5,11,15,14,14,13, 5, 5, 7, 3, 4, 8,15,
+        17,17,13, 7, 7,10, 6, 6,10,15,17,17,16,10,11,14,
+        10,10,15,17,
 };
 
-static long _vq_quantmap__44u8_p9_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const static_codebook _huff_book__44u8__short = {
+        2, 100,
+        (char *)_huff_lengthlist__44u8__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u8_p9_0 = {
-	_vq_quantthresh__44u8_p9_0,
-	_vq_quantmap__44u8_p9_0,
-	9,
-	9
+static const long _vq_quantlist__44u8_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _44u8_p9_0 = {
-	2, 81,
-	_vq_lengthlist__44u8_p9_0,
-	1, -511895552, 1631393792, 4, 0,
-	_vq_quantlist__44u8_p9_0,
-	NULL,
-	&_vq_auxt__44u8_p9_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44u8_p1_0[] = {
+         1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
+         9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 7, 9,
+         9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,10, 7, 9, 9,
+         9,11,10, 9,10,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7,
+         9, 9, 9,11,10, 9,10,10, 8, 9, 9, 9,11,11, 9,11,
+        10,
 };
 
-static long _vq_quantlist__44u8_p9_1[] = {
-	9,
-	8,
-	10,
-	7,
-	11,
-	6,
-	12,
-	5,
-	13,
-	4,
-	14,
-	3,
-	15,
-	2,
-	16,
-	1,
-	17,
-	0,
-	18,
+static const static_codebook _44u8_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u8_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u8_p1_0,
+        0
 };
 
-static long _vq_lengthlist__44u8_p9_1[] = {
-	 1, 4, 4, 7, 7, 8, 8, 7, 8, 9, 9,10,10,11,11,12,
-	12,12,12, 4, 7, 6, 9, 9, 9, 9, 9, 8, 9, 9,11,10,
-	12,11,13,12,13,14, 4, 6, 6, 9, 9, 9, 9, 8, 9, 9,
-	10,10,11,12,12,12,12,13,12, 7, 9, 8,11,10,10,10,
-	10,10,11,11,12,11,14,12,13,14,14,13, 7, 8, 9,10,
-	10,10,10,10,10,11,11,12,13,13,13,14,15,15,13, 8,
-	 9, 9,11,11,11,11,11,12,13,12,14,14,14,14,14,14,
-	15,13, 8, 9, 9,10,11,11,11,12,12,13,12,13,14,13,
-	15,14,15,15,15, 8, 9, 9,10,10,12,11,13,12,13,13,
-	14,14,13,15,14,15,14,14, 8, 9, 9,10,11,12,12,13,
-	13,14,14,14,14,15,15,15,12,14,14, 9,11,10,11,11,
-	14,12,13,14,15,14,14,14,14,15,15,15,15,15, 9,10,
-	11,11,12,12,13,13,14,14,14,14,15,15,14,15,15,15,
-	15,10,11,11,12,12,14,14,13,14,14,15,15,15,15,15,
-	15,15,15,15,10,11,11,12,13,13,13,14,14,15,15,14,
-	14,15,15,15,15,14,15,11,12,13,15,13,14,15,15,15,
-	15,14,15,15,15,15,15,15,15,15,11,12,12,14,14,14,
-	13,14,15,15,14,15,15,15,15,15,15,15,15,13,13,14,
-	13,13,14,14,15,14,15,15,15,15,15,15,15,15,15,15,
-	11,14,13,14,14,15,14,14,15,15,15,15,15,15,15,15,
-	15,15,15,12,12,13,14,13,13,14,15,14,15,15,15,15,
-	15,15,15,15,15,15,13,13,14,14,13,15,14,14,15,15,
-	14,15,15,15,15,15,15,15,15,
+static const long _vq_quantlist__44u8_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__44u8_p9_1[] = {
-	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
-	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
-	367.5, 416.5, 
-};
-
-static long _vq_quantmap__44u8_p9_1[] = {
-	   17,   15,   13,   11,    9,    7,    5,    3,
-	    1,    0,    2,    4,    6,    8,   10,   12,
-	   14,   16,   18,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p9_1 = {
-	_vq_quantthresh__44u8_p9_1,
-	_vq_quantmap__44u8_p9_1,
-	19,
-	19
-};
-
-static static_codebook _44u8_p9_1 = {
-	2, 361,
-	_vq_lengthlist__44u8_p9_1,
-	1, -518287360, 1622704128, 5, 0,
-	_vq_quantlist__44u8_p9_1,
-	NULL,
-	&_vq_auxt__44u8_p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u8_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
-};
-
-static long _vq_lengthlist__44u8_p9_2[] = {
-	 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
-};
-
-static float _vq_quantthresh__44u8_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
-};
-
-static long _vq_quantmap__44u8_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u8_p9_2 = {
-	_vq_quantthresh__44u8_p9_2,
-	_vq_quantmap__44u8_p9_2,
-	49,
-	49
-};
-
-static static_codebook _44u8_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44u8_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44u8_p9_2,
-	NULL,
-	&_vq_auxt__44u8_p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u9__long[] = {
-	 3, 9,13,13,14,14,13,14,14,13, 5, 5, 9,10,12,13,
-	13,14,14,14, 9, 5, 6, 6, 8,11,12,14,14,14,11, 7,
-	 5, 3, 5, 8,10,12,13,12,12,10, 7, 4, 3, 5, 8,10,
-	12,13,10,12, 9, 7, 4, 4, 6, 8,11,13,12,12,11, 9,
-	 7, 5, 6, 7, 9,13,12,12,12,11, 8, 7, 6, 6, 8,12,
-	12,12,13,12,10, 9, 7, 7, 8,11,11,13,15,15,14,12,
-	10, 9, 9,10,
-};
-
-static static_codebook _huff_book__44u9__long = {
-	2, 100,
-	_huff_lengthlist__44u9__long,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__44u9__short[] = {
-	10,17,18,18,18,18,18,18,18,18, 5, 8,12,13,14,13,
-	16,17,16,17, 5, 6, 8, 8,10, 9,12,16,16,17, 5, 6,
-	 7, 5, 6, 9,12,15,16,16, 7, 6, 6, 4, 5, 7, 9,14,
-	15,17,10, 8, 8, 6, 6, 3, 5, 9,13,18,14,11,11,10,
-	 6, 3, 4, 7,13,17,15,16,16,10, 5, 6, 4, 4, 9,13,
-	18,18,18,11, 6, 8, 5, 6,10,15,18,18,18,14,10,11,
-	 9,10,16,18,
-};
-
-static static_codebook _huff_book__44u9__short = {
-	2, 100,
-	_huff_lengthlist__44u9__short,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__44u9_p1_0[] = {
-	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
-	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9,
-	 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,10, 7, 9, 9,
-	 9,11,10, 9,10,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7,
-	 9, 9, 9,11,11, 9,10,11, 8, 9, 9, 9,10,10, 9,11,
-	10,
-};
-
-static float _vq_quantthresh__44u9_p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__44u9_p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p1_0 = {
-	_vq_quantthresh__44u9_p1_0,
-	_vq_quantmap__44u9_p1_0,
-	3,
-	3
-};
-
-static static_codebook _44u9_p1_0 = {
-	4, 81,
-	_vq_lengthlist__44u9_p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__44u9_p1_0,
-	NULL,
-	&_vq_auxt__44u9_p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p2_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__44u9_p2_0[] = {
-	 3, 6, 5, 8, 8, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
-	 9, 9,11,10, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8,
-	 8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10,
-	11,11, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
-	10, 9,10, 9,11,11, 9,10,10,11,11, 8, 9, 9,11,11,
-	 9,10,10,12,11, 9,10,10,11,11,11,12,12,13,13,11,
-	11,11,12,13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
-	10,12,12,11,11,11,13,12,11,11,11,13,13, 6, 7, 7,
-	 9, 9, 7, 8, 8,10, 9, 7, 8, 8, 9,10, 9,10,10,11,
-	11, 9,10,10,11,11, 7, 8, 8,10,10, 8, 9, 9,10,10,
-	 8, 9, 9,10,10,10,10,10,12,12,10,10,10,11,12, 7,
-	 8, 8,10,10, 8, 9, 8,10,10, 8, 9, 9,10,10, 9,10,
-	10,12,11,10,10,10,12,12, 9,10,10,12,11,10,10,10,
-	12,12,10,10,10,12,12,12,12,12,12,13,11,12,12,13,
-	13, 9,10,10,11,11, 9,10,10,12,11,10,10,10,12,12,
-	11,12,11,13,12,12,12,12,13,13, 6, 7, 7, 9, 9, 7,
-	 8, 8,10, 9, 7, 8, 8, 9,10, 9,10,10,12,11, 9,10,
-	10,11,11, 7, 8, 8,10, 9, 8, 9, 9,11,10, 8, 8, 9,
-	10,10,10,10,10,12,12,10,10,10,11,12, 7, 8, 8,10,
-	10, 8, 9, 9,10,10, 8, 9, 9,10,10,10,10,10,12,12,
-	10,10,10,12,12, 9,10,10,11,11,10,11,10,12,12, 9,
-	10,10,11,12,11,12,12,13,13,11,11,12,11,13, 9,10,
-	10,11,12,10,10,10,12,12,10,10,10,12,12,11,12,12,
-	13,13,12,12,12,13,13, 8, 9, 9,11,11, 9,10,10,12,
-	11, 9,10,10,11,12,11,12,12,13,13,11,11,12,13,13,
-	 9,10,10,12,12,10,10,10,12,12,10,11,10,12,12,12,
-	12,12,13,13,12,12,12,13,13, 9,10,10,12,11,10,10,
-	10,12,11,10,10,10,12,12,11,12,12,13,13,12,12,12,
-	13,14,11,12,12,13,13,11,12,12,13,13,11,12,12,13,
-	13,13,13,14,13,15,13,13,13,14,14,11,11,11,13,13,
-	11,12,11,13,13,11,12,12,13,13,12,13,12,14,12,13,
-	13,13,15,14, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
-	10,11,12,11,12,11,13,13,11,12,12,13,13, 9,10,10,
-	11,11,10,11,10,12,12, 9,10,10,12,12,12,12,12,13,
-	13,11,11,12,12,13, 9,10,10,12,12,10,10,11,12,12,
-	10,11,10,12,12,11,12,12,13,13,12,12,12,13,13,11,
-	11,11,13,13,11,12,12,13,13,11,11,12,13,13,13,13,
-	13,14,14,12,12,13,12,14,11,11,12,13,13,12,12,12,
-	14,13,11,12,12,13,13,13,13,13,14,14,13,13,13,14,
-	13,
+static const char _vq_lengthlist__44u8_p2_0[] = {
+         4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+         9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,10,
+        11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+        10, 9,10, 9,12,11, 9,10,10,12,12, 8, 9, 9,12,11,
+         9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,11,
+        11,12,13,14, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,11,13,13,11,12,12,14,14, 5, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+        12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
+         8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 6,
+         8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+        10,13,12,10,11,11,13,13, 9,10,10,12,12,10,11,11,
+        13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,
+        14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
+        11,13,12,14,13,12,13,13,14,14, 5, 7, 7, 9, 9, 7,
+         8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
+        10,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
+        10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
+        10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
+        10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
+        10,11,12,13,12,13,13,14,14,12,12,13,13,14, 9,10,
+        10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,
+        15,14,12,13,13,14,13, 8, 9, 9,11,11, 9,10,10,12,
+        12, 9,10,10,12,12,12,12,12,14,13,11,12,12,14,14,
+         9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+        13,13,14,15,12,13,13,14,15, 9,10,10,12,12,10,11,
+        10,13,12,10,11,11,13,13,12,13,12,15,14,12,13,13,
+        14,15,11,12,12,14,14,12,13,13,14,14,12,13,13,15,
+        14,14,14,14,14,16,14,14,15,16,16,11,12,12,14,14,
+        11,12,12,14,14,12,13,13,14,15,13,14,13,16,14,14,
+        14,14,16,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+        10,12,12,11,12,12,14,13,11,12,12,14,14, 9,10,10,
+        12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15,
+        14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
+        10,11,11,13,13,12,13,13,14,14,12,13,13,15,14,11,
+        12,12,14,13,12,13,13,15,14,11,12,12,13,14,14,15,
+        14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,
+        14,15,12,13,12,15,14,14,14,14,16,15,14,15,13,16,
+        14,
 };
 
-static float _vq_quantthresh__44u9_p2_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u8_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u8_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u8_p2_0,
+        0
 };
 
-static long _vq_quantmap__44u9_p2_0[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u8_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p2_0 = {
-	_vq_quantthresh__44u9_p2_0,
-	_vq_quantmap__44u9_p2_0,
-	5,
-	5
+static const char _vq_lengthlist__44u8_p3_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+         9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+         8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
+         8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
+         9, 9,10,10,11,10,12,11, 9, 9, 9, 9,10,11,11,11,
+        12,
 };
 
-static static_codebook _44u9_p2_0 = {
-	4, 625,
-	_vq_lengthlist__44u9_p2_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u9_p2_0,
-	NULL,
-	&_vq_auxt__44u9_p2_0,
-	NULL,
-	0
+static const static_codebook _44u8_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u8_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u8_p3_0,
+        0
 };
 
-static long _vq_quantlist__44u9_p3_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const long _vq_quantlist__44u8_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_lengthlist__44u9_p3_0[] = {
-	 3, 4, 4, 5, 5, 7, 7, 9, 8, 4, 5, 5, 6, 6, 7, 7,
-	 9, 9, 4, 5, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 6,
-	 8, 7, 9, 9, 5, 6, 6, 6, 7, 7, 8, 9, 9, 7, 7, 7,
-	 8, 7, 9, 8,10,10, 7, 7, 7, 7, 8, 8, 9,10,10, 9,
-	 9, 9, 9, 9,10,10,11,11, 9, 9, 9, 9, 9,10,10,11,
-	11,
+static const char _vq_lengthlist__44u8_p4_0[] = {
+         4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11,
+        11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
+        12,12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+        11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+        11,11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,
+        10,11,11,12,12, 7, 7, 7, 8, 8, 9, 8,10, 9,10, 9,
+        11,10,12,11,13,12, 7, 7, 7, 8, 8, 8, 9, 9,10, 9,
+        10,10,11,11,12,12,13, 8, 8, 8, 9, 9, 9, 9,10,10,
+        11,10,11,11,12,12,13,13, 8, 8, 8, 9, 9, 9,10,10,
+        10,10,11,11,11,12,12,12,13, 8, 9, 9, 9, 9,10, 9,
+        11,10,11,11,12,11,13,12,13,13, 8, 9, 9, 9, 9, 9,
+        10,10,11,11,11,11,12,12,13,13,13,10,10,10,10,10,
+        11,10,11,11,12,11,13,12,13,13,14,13,10,10,10,10,
+        10,10,11,11,11,11,12,12,13,13,13,13,14,11,11,11,
+        11,11,12,11,12,12,13,12,13,13,14,13,14,14,11,11,
+        11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,11,
+        12,12,12,12,13,12,13,12,13,13,14,13,14,14,14,14,
+        11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,
+        14,
 };
 
-static float _vq_quantthresh__44u9_p3_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const static_codebook _44u8_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u8_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u8_p4_0,
+        0
 };
 
-static long _vq_quantmap__44u9_p3_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const long _vq_quantlist__44u8_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p3_0 = {
-	_vq_quantthresh__44u9_p3_0,
-	_vq_quantmap__44u9_p3_0,
-	9,
-	9
+static const char _vq_lengthlist__44u8_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
+         9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
+        10, 8,10,10, 7,10,10, 9,10,12, 9,12,11, 7,10,10,
+         9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+        10,10, 9,11,11, 9,10,11, 7,10,10, 9,11,11,10,12,
+        10,
 };
 
-static static_codebook _44u9_p3_0 = {
-	2, 81,
-	_vq_lengthlist__44u9_p3_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__44u9_p3_0,
-	NULL,
-	&_vq_auxt__44u9_p3_0,
-	NULL,
-	0
+static const static_codebook _44u8_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u8_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44u8_p5_0,
+        0
 };
 
-static long _vq_quantlist__44u9_p4_0[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
+static const long _vq_quantlist__44u8_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44u9_p4_0[] = {
-	 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
-	11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 9,11,10,
-	12,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9,10,10,
-	11,11,11, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,12, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10,
-	10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9,
-	10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 8, 9, 9,
-	 9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8, 9, 9,
-	10,10,11,10,12,11,12,12, 8, 8, 8, 8, 8, 8, 9, 9,
-	 9,10,10,10,11,11,12,12,13, 8, 8, 8, 9, 9, 9, 9,
-	10,10,11,10,11,11,12,12,13,12, 8, 8, 9, 9, 9, 9,
-	 9,10,10,10,11,11,11,12,12,12,13, 9,10, 9,10,10,
-	10,10,11,10,11,11,12,11,13,12,13,13, 9, 9,10,10,
-	10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,
-	11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,
-	11,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,
-	12,11,12,12,12,12,12,12,13,13,13,13,14,13,14,14,
-	11,11,12,12,12,12,12,12,12,12,13,13,13,13,14,14,
-	14,
+static const char _vq_lengthlist__44u8_p5_1[] = {
+         4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 5, 5, 6, 6,
+         7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8,
+         8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7,
+         7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+         8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 8, 7,
+         8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8,
+         8, 8, 8, 8, 8, 8, 8, 9, 9,
 };
 
-static float _vq_quantthresh__44u9_p4_0[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+static const static_codebook _44u8_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u8_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u8_p5_1,
+        0
 };
 
-static long _vq_quantmap__44u9_p4_0[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
+static const long _vq_quantlist__44u8_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p4_0 = {
-	_vq_quantthresh__44u9_p4_0,
-	_vq_quantmap__44u9_p4_0,
-	17,
-	17
+static const char _vq_lengthlist__44u8_p6_0[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 6, 7, 7, 7, 8, 8, 8, 8, 9,
+         9,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 8,10, 9,11,
+        10, 7, 8, 8, 8, 8, 8, 9, 9, 9,10,10,11,11, 7, 8,
+         8, 8, 8, 9, 8, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
+         9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
+         9,10,10,11,11, 9, 9, 9, 9,10,10,10,10,10,10,11,
+        11,12, 9, 9, 9,10, 9,10,10,10,10,11,10,12,11,10,
+        10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
+        11,11,11,11,11,12,11,12,12,
 };
 
-static static_codebook _44u9_p4_0 = {
-	2, 289,
-	_vq_lengthlist__44u9_p4_0,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__44u9_p4_0,
-	NULL,
-	&_vq_auxt__44u9_p4_0,
-	NULL,
-	0
+static const static_codebook _44u8_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u8_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u8_p6_0,
+        0
 };
 
-static long _vq_quantlist__44u9_p5_0[] = {
-	1,
-	0,
-	2,
+static const long _vq_quantlist__44u8_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__44u9_p5_0[] = {
-	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7, 8, 9, 7,
-	 8, 9, 5, 7, 8, 7, 9, 8, 7, 9, 8, 5, 8, 8, 8, 9,
-	 9, 7, 9, 9, 7, 9, 9, 8, 9,11, 9,11,10, 7, 9, 9,
-	 9,11, 9, 9,10,11, 5, 7, 8, 7, 9, 9, 8, 9, 9, 7,
-	 9, 9, 9,11,10, 9, 9,11, 7, 9, 9, 9,10,11, 8,11,
-	 9,
+static const char _vq_lengthlist__44u8_p6_1[] = {
+         3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+         5, 5, 5, 5, 5, 5, 5, 5, 5,
 };
 
-static float _vq_quantthresh__44u9_p5_0[] = {
-	-5.5, 5.5, 
+static const static_codebook _44u8_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u8_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u8_p6_1,
+        0
 };
 
-static long _vq_quantmap__44u9_p5_0[] = {
-	    1,    0,    2,
+static const long _vq_quantlist__44u8_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p5_0 = {
-	_vq_quantthresh__44u9_p5_0,
-	_vq_quantmap__44u9_p5_0,
-	3,
-	3
+static const char _vq_lengthlist__44u8_p7_0[] = {
+         1, 4, 5, 6, 6, 7, 7, 8, 8,10,10,11,11, 5, 6, 6,
+         7, 7, 8, 8, 9, 9,11,10,12,11, 5, 6, 6, 7, 7, 8,
+         8, 9, 9,10,11,11,12, 6, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,12,13,
+        12, 7, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
+         8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
+        11,11,12,12,13,13,14,14, 9, 9, 9,10,10,11,11,12,
+        12,13,13,14,14,10,11,11,12,11,13,12,13,13,14,14,
+        15,15,10,11,11,11,12,12,13,13,14,14,14,15,15,11,
+        12,12,13,13,14,13,15,14,15,15,16,15,11,11,12,13,
+        13,13,14,14,14,15,15,15,16,
 };
 
-static static_codebook _44u9_p5_0 = {
-	4, 81,
-	_vq_lengthlist__44u9_p5_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__44u9_p5_0,
-	NULL,
-	&_vq_auxt__44u9_p5_0,
-	NULL,
-	0
+static const static_codebook _44u8_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u8_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44u8_p7_0,
+        0
 };
 
-static long _vq_quantlist__44u9_p5_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44u8_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_lengthlist__44u9_p5_1[] = {
-	 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6,
-	 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
-	 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
-	 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7,
-	 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
-	 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7,
-	 7, 7, 7, 8, 8, 8, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u9_p5_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u9_p5_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p5_1 = {
-	_vq_quantthresh__44u9_p5_1,
-	_vq_quantmap__44u9_p5_1,
-	11,
-	11
-};
-
-static static_codebook _44u9_p5_1 = {
-	2, 121,
-	_vq_lengthlist__44u9_p5_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u9_p5_1,
-	NULL,
-	&_vq_auxt__44u9_p5_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u9_p6_0[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 5, 5,
-	 7, 7, 8, 8, 8, 8,10,10,11,11, 4, 5, 5, 7, 7, 8,
-	 8, 8, 8,10,10,11,11, 6, 7, 7, 8, 7, 8, 8, 9, 9,
-	10,10,11,11, 6, 7, 7, 8, 7, 8, 8, 9, 9,10,10,11,
-	11, 7, 8, 8, 8, 8, 9, 9, 9,10,11,11,12,12, 7, 8,
-	 8, 8, 8, 9, 9,10, 9,11,11,12,12, 8, 9, 8, 9, 9,
-	10,10,10,10,11,11,12,12, 8, 8, 8, 9, 9,10, 9,10,
-	10,11,11,12,12, 9,10,10,10,10,11,11,11,11,12,12,
-	13,13, 9,10,10,10,10,11,11,11,11,12,12,13,12,10,
-	11,11,11,11,12,12,12,12,12,12,13,13,10,11,11,11,
-	11,12,12,12,12,13,12,13,13,
-};
-
-static float _vq_quantthresh__44u9_p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
-};
-
-static long _vq_quantmap__44u9_p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p6_0 = {
-	_vq_quantthresh__44u9_p6_0,
-	_vq_quantmap__44u9_p6_0,
-	13,
-	13
+static const char _vq_lengthlist__44u8_p7_1[] = {
+         4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
+         7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7,
+         7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8,
+         8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7,
+         8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
+         8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
+         7, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static static_codebook _44u9_p6_0 = {
-	2, 169,
-	_vq_lengthlist__44u9_p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__44u9_p6_0,
-	NULL,
-	&_vq_auxt__44u9_p6_0,
-	NULL,
-	0
+static const static_codebook _44u8_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u8_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u8_p7_1,
+        0
 };
 
-static long _vq_quantlist__44u9_p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const long _vq_quantlist__44u8_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_lengthlist__44u9_p6_1[] = {
-	 4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5,
-	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+static const char _vq_lengthlist__44u8_p8_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10, 9,11,10, 4,
+         6, 6, 8, 8,10, 9, 9, 9,10,10,11,10,12,10, 4, 6,
+         6, 8, 8,10,10, 9, 9,10,10,11,11,11,12, 7, 8, 8,
+        10,10,11,11,11,10,12,11,12,12,13,11, 7, 8, 8,10,
+        10,11,11,10,10,11,11,12,12,13,13, 8,10,10,11,11,
+        12,11,12,11,13,12,13,12,14,13, 8,10, 9,11,11,12,
+        12,12,12,12,12,13,13,14,13, 8, 9, 9,11,10,12,11,
+        13,12,13,13,14,13,14,13, 8, 9, 9,10,11,12,12,12,
+        12,13,13,14,15,14,14, 9,10,10,12,11,13,12,13,13,
+        14,13,14,14,14,14, 9,10,10,12,12,12,12,13,13,14,
+        14,14,15,14,14,10,11,11,13,12,13,12,14,14,14,14,
+        14,14,15,15,10,11,11,12,12,13,13,14,14,14,15,15,
+        14,16,15,11,12,12,13,12,14,14,14,13,15,14,15,15,
+        15,17,11,12,12,13,13,14,14,14,15,15,14,15,15,14,
+        17,
 };
 
-static float _vq_quantthresh__44u9_p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const static_codebook _44u8_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u8_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44u8_p8_0,
+        0
 };
 
-static long _vq_quantmap__44u9_p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const long _vq_quantlist__44u8_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p6_1 = {
-	_vq_quantthresh__44u9_p6_1,
-	_vq_quantmap__44u9_p6_1,
-	5,
-	5
-};
-
-static static_codebook _44u9_p6_1 = {
-	2, 25,
-	_vq_lengthlist__44u9_p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__44u9_p6_1,
-	NULL,
-	&_vq_auxt__44u9_p6_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p7_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
-};
-
-static long _vq_lengthlist__44u9_p7_0[] = {
-	 1, 5, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 5, 6, 6,
-	 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
-	 8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10,
-	11,11,12,12, 7, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
-	12, 8, 8, 8, 9, 9,10,10,11,10,12,12,13,12, 8, 8,
-	 8, 9, 9,10,10,11,11,12,12,12,13, 9, 9, 9,10,10,
-	11,11,12,11,13,13,13,14, 9, 9, 9,10,10,11,11,11,
-	12,13,12,13,13,10,10,10,11,11,12,12,13,12,13,13,
-	14,14,10,10,10,11,11,11,12,12,12,13,13,14,14,11,
-	11,11,12,12,13,13,13,13,14,14,15,14,11,11,11,12,
-	12,13,13,13,14,14,15,15,15,
-};
-
-static float _vq_quantthresh__44u9_p7_0[] = {
-	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
-	27.5, 38.5, 49.5, 60.5, 
-};
-
-static long _vq_quantmap__44u9_p7_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p7_0 = {
-	_vq_quantthresh__44u9_p7_0,
-	_vq_quantmap__44u9_p7_0,
-	13,
-	13
-};
-
-static static_codebook _44u9_p7_0 = {
-	2, 169,
-	_vq_lengthlist__44u9_p7_0,
-	1, -523206656, 1618345984, 4, 0,
-	_vq_quantlist__44u9_p7_0,
-	NULL,
-	&_vq_auxt__44u9_p7_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
-};
-
-static long _vq_lengthlist__44u9_p7_1[] = {
-	 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7,
-	 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 7,
-	 7, 7, 7, 7, 7, 7, 8, 8, 8,
-};
-
-static float _vq_quantthresh__44u9_p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
-};
-
-static long _vq_quantmap__44u9_p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const char _vq_lengthlist__44u8_p8_1[] = {
+         4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8,
+         8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
+         7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10, 8, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
+        10, 9,10, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,
+        10,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10,10, 9,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+        10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
+        10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
+        10, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+         9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+         9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10, 9, 9, 9,10, 9,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+         9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+         9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p7_1 = {
-	_vq_quantthresh__44u9_p7_1,
-	_vq_quantmap__44u9_p7_1,
-	11,
-	11
+static const static_codebook _44u8_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44u8_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u8_p8_1,
+        0
 };
 
-static static_codebook _44u9_p7_1 = {
-	2, 121,
-	_vq_lengthlist__44u9_p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__44u9_p7_1,
-	NULL,
-	&_vq_auxt__44u9_p7_1,
-	NULL,
-	0
+static const long _vq_quantlist__44u8_p9_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantlist__44u9_p8_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const char _vq_lengthlist__44u8_p9_0[] = {
+         1, 3, 3, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9,
+         9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
+         8,
 };
 
-static long _vq_lengthlist__44u9_p8_0[] = {
-	 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 9,10,10,11,11, 4,
-	 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,11, 4, 6,
-	 6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8,
-	10,10,11,11,11,10,11,11,12,12,13,12, 7, 8, 8,10,
-	10,11,11,10,10,11,12,12,12,13,13, 8,10, 9,11,11,
-	12,12,11,12,12,12,13,13,14,14, 8, 9, 9,11,11,12,
-	12,11,12,12,13,13,13,14,14, 8, 9, 9,10,10,11,11,
-	13,12,13,13,14,14,15,14, 8, 9, 9,10,10,11,12,12,
-	13,13,13,14,14,14,15, 9,10,10,11,11,13,12,13,13,
-	14,14,15,15,15,15, 9,10,10,11,12,12,12,13,13,14,
-	15,14,15,15,15,10,11,11,12,12,13,13,14,14,15,15,
-	15,16,16,15,10,11,11,12,12,13,14,14,14,15,14,15,
-	16,16,17,11,12,12,13,13,14,14,15,14,16,15,15,16,
-	16,16,11,12,12,13,13,14,14,14,15,15,15,16,16,17,
-	16,
+static const static_codebook _44u8_p9_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u8_p9_0,
+        1, -511895552, 1631393792, 4, 0,
+        (long *)_vq_quantlist__44u8_p9_0,
+        0
 };
 
-static float _vq_quantthresh__44u9_p8_0[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+static const long _vq_quantlist__44u8_p9_1[] = {
+        9,
+        8,
+        10,
+        7,
+        11,
+        6,
+        12,
+        5,
+        13,
+        4,
+        14,
+        3,
+        15,
+        2,
+        16,
+        1,
+        17,
+        0,
+        18,
 };
 
-static long _vq_quantmap__44u9_p8_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
+static const char _vq_lengthlist__44u8_p9_1[] = {
+         1, 4, 4, 7, 7, 8, 7, 8, 6, 9, 7,10, 8,11,10,11,
+        11,11,11, 4, 7, 6, 9, 9,10, 9, 9, 9,10,10,11,10,
+        11,10,11,11,13,11, 4, 7, 7, 9, 9, 9, 9, 9, 9,10,
+        10,11,10,11,11,11,12,11,12, 7, 9, 8,11,11,11,11,
+        10,10,11,11,12,12,12,12,12,12,14,13, 7, 8, 9,10,
+        11,11,11,10,10,11,11,11,11,12,12,14,12,13,14, 8,
+         9, 9,11,11,11,11,11,11,12,12,14,12,15,14,14,14,
+        15,14, 8, 9, 9,11,11,11,11,12,11,12,12,13,13,13,
+        13,13,13,14,14, 8, 9, 9,11,10,12,11,12,12,13,13,
+        13,13,15,14,14,14,16,16, 8, 9, 9,10,11,11,12,12,
+        12,13,13,13,14,14,14,15,16,15,15, 9,10,10,11,12,
+        12,13,13,13,14,14,16,14,14,16,16,16,16,15, 9,10,
+        10,11,11,12,13,13,14,15,14,16,14,15,16,16,16,16,
+        15,10,11,11,12,13,13,14,15,15,15,15,15,16,15,16,
+        15,16,15,15,10,11,11,13,13,14,13,13,15,14,15,15,
+        16,15,15,15,16,15,16,10,12,12,14,14,14,14,14,16,
+        16,15,15,15,16,16,16,16,16,16,11,12,12,14,14,14,
+        14,15,15,16,15,16,15,16,15,16,16,16,16,12,12,13,
+        14,14,15,16,16,16,16,16,16,15,16,16,16,16,16,16,
+        12,13,13,14,14,14,14,15,16,15,16,16,16,16,16,16,
+        16,16,16,12,13,14,14,14,16,15,16,15,16,16,16,16,
+        16,16,16,16,16,16,12,14,13,14,15,15,15,16,15,16,
+        16,15,16,16,16,16,16,16,16,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p8_0 = {
-	_vq_quantthresh__44u9_p8_0,
-	_vq_quantmap__44u9_p8_0,
-	15,
-	15
+static const static_codebook _44u8_p9_1 = {
+        2, 361,
+        (char *)_vq_lengthlist__44u8_p9_1,
+        1, -518287360, 1622704128, 5, 0,
+        (long *)_vq_quantlist__44u8_p9_1,
+        0
 };
 
-static static_codebook _44u9_p8_0 = {
-	2, 225,
-	_vq_lengthlist__44u9_p8_0,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__44u9_p8_0,
-	NULL,
-	&_vq_auxt__44u9_p8_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p8_1[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__44u9_p8_1[] = {
-	 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 7, 7, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
-	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 8, 8,
-	 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,
-	 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10,
-	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10,10,10, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,10, 9,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
-	10, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,
-	10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
-	 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,10,10,10,
-	10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
-	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
-	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,10,
-	10,10,10,10,10,10,10,10,10,
-};
-
-static float _vq_quantthresh__44u9_p8_1[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__44u9_p8_1[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p8_1 = {
-	_vq_quantthresh__44u9_p8_1,
-	_vq_quantmap__44u9_p8_1,
-	21,
-	21
-};
-
-static static_codebook _44u9_p8_1 = {
-	2, 441,
-	_vq_lengthlist__44u9_p8_1,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__44u9_p8_1,
-	NULL,
-	&_vq_auxt__44u9_p8_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p9_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__44u9_p9_0[] = {
-	 1, 5, 5,10,10,10,10,10,10,10,10,10,10,10,10, 5,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10, 5,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,
-};
-
-static float _vq_quantthresh__44u9_p9_0[] = {
-	-6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5, 
-	1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 
-};
-
-static long _vq_quantmap__44u9_p9_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__44u9_p9_0 = {
-	_vq_quantthresh__44u9_p9_0,
-	_vq_quantmap__44u9_p9_0,
-	15,
-	15
-};
-
-static static_codebook _44u9_p9_0 = {
-	2, 225,
-	_vq_lengthlist__44u9_p9_0,
-	1, -510036736, 1631393792, 4, 0,
-	_vq_quantlist__44u9_p9_0,
-	NULL,
-	&_vq_auxt__44u9_p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__44u9_p9_1[] = {
-	9,
-	8,
-	10,
-	7,
-	11,
-	6,
-	12,
-	5,
-	13,
-	4,
-	14,
-	3,
-	15,
-	2,
-	16,
-	1,
-	17,
-	0,
-	18,
-};
-
-static long _vq_lengthlist__44u9_p9_1[] = {
-	 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 9,10,10,12,11,12,
-	11,12,12, 4, 7, 6, 9, 9, 9, 9, 9, 9,10, 9,11, 9,
-	11,11,13,12,14,12, 4, 6, 6, 9, 9, 9, 9, 8, 9,10,
-	10,11,11,12,12,12,13,13,13, 7, 9, 8,11,11,11,11,
-	10,10,11,11,12,12,14,13,14,14,15,13, 7, 9, 9,10,
-	10,10,10,10,10,11,11,12,13,13,13,14,14,15,13, 8,
-	 9, 9,12,10,11,11,12,11,12,12,13,13,14,14,15,16,
-	15,14, 8, 9, 9,10,11,12,11,11,12,13,12,14,14,13,
-	15,16,15,14,16, 7, 9, 9,10,10,12,11,12,13,16,13,
-	14,16,14,15,15,15,15,15, 7, 9, 9,10,11,11,12,12,
-	13,14,16,14,14,16,16,14,14,14,15, 9,10,11,12,12,
-	12,13,13,13,16,15,16,15,14,15,15,15,16,16, 9,10,
-	11,12,13,13,14,13,14,15,14,14,16,16,16,16,16,16,
-	16,10,11,11,13,13,15,13,15,13,14,16,16,16,16,16,
-	16,15,14,16,11,11,12,12,13,13,15,13,15,14,15,16,
-	16,16,16,16,16,16,16,12,13,13,13,13,15,14,15,16,
-	16,16,16,14,16,16,16,16,16,16,13,12,12,14,14,13,
-	15,14,16,15,16,16,16,16,16,16,16,16,15,12,12,13,
-	13,14,16,15,16,15,16,16,16,16,16,16,16,16,16,16,
-	12,13,13,14,15,14,14,16,16,15,16,16,16,16,16,16,
-	15,16,16,13,14,14,13,14,14,15,16,15,16,16,16,16,
-	16,16,16,16,15,16,12,13,13,14,14,14,14,16,16,16,
-	16,16,16,15,16,16,16,16,16,
+static const long _vq_quantlist__44u8_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static float _vq_quantthresh__44u9_p9_1[] = {
-	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
-	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
-	367.5, 416.5, 
+static const char _vq_lengthlist__44u8_p9_2[] = {
+         2, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static long _vq_quantmap__44u9_p9_1[] = {
-	   17,   15,   13,   11,    9,    7,    5,    3,
-	    1,    0,    2,    4,    6,    8,   10,   12,
-	   14,   16,   18,
+static const static_codebook _44u8_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44u8_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44u8_p9_2,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p9_1 = {
-	_vq_quantthresh__44u9_p9_1,
-	_vq_quantmap__44u9_p9_1,
-	19,
-	19
+static const char _huff_lengthlist__44u9__long[] = {
+         3, 9,13,13,14,15,14,14,15,15, 5, 5, 9,10,12,12,
+        13,14,16,15,10, 6, 6, 6, 8,11,12,13,16,15,11, 7,
+         5, 3, 5, 8,10,12,15,15,10,10, 7, 4, 3, 5, 8,10,
+        12,12,12,12, 9, 7, 5, 4, 6, 8,10,13,13,12,11, 9,
+         7, 5, 5, 6, 9,12,14,12,12,10, 8, 6, 6, 6, 7,11,
+        13,12,14,13,10, 8, 7, 7, 7,10,11,11,12,13,12,11,
+        10, 8, 8, 9,
 };
 
-static static_codebook _44u9_p9_1 = {
-	2, 361,
-	_vq_lengthlist__44u9_p9_1,
-	1, -518287360, 1622704128, 5, 0,
-	_vq_quantlist__44u9_p9_1,
-	NULL,
-	&_vq_auxt__44u9_p9_1,
-	NULL,
-	0
+static const static_codebook _huff_book__44u9__long = {
+        2, 100,
+        (char *)_huff_lengthlist__44u9__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_quantlist__44u9_p9_2[] = {
-	24,
-	23,
-	25,
-	22,
-	26,
-	21,
-	27,
-	20,
-	28,
-	19,
-	29,
-	18,
-	30,
-	17,
-	31,
-	16,
-	32,
-	15,
-	33,
-	14,
-	34,
-	13,
-	35,
-	12,
-	36,
-	11,
-	37,
-	10,
-	38,
-	9,
-	39,
-	8,
-	40,
-	7,
-	41,
-	6,
-	42,
-	5,
-	43,
-	4,
-	44,
-	3,
-	45,
-	2,
-	46,
-	1,
-	47,
-	0,
-	48,
+static const char _huff_lengthlist__44u9__short[] = {
+         9,16,18,18,17,17,17,17,17,17, 5, 8,11,12,11,12,
+        17,17,16,16, 6, 6, 8, 8, 9,10,14,15,16,16, 6, 7,
+         7, 4, 6, 9,13,16,16,16, 6, 6, 7, 4, 5, 8,11,15,
+        17,16, 7, 6, 7, 6, 6, 8, 9,10,14,16,11, 8, 8, 7,
+         6, 6, 3, 4,10,15,14,12,12,10, 5, 6, 3, 3, 8,13,
+        15,17,15,11, 6, 8, 6, 6, 9,14,17,15,15,12, 8,10,
+         9, 9,12,15,
 };
 
-static long _vq_lengthlist__44u9_p9_2[] = {
-	 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
-	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const static_codebook _huff_book__44u9__short = {
+        2, 100,
+        (char *)_huff_lengthlist__44u9__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static float _vq_quantthresh__44u9_p9_2[] = {
-	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
-	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
-	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+static const long _vq_quantlist__44u9_p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__44u9_p9_2[] = {
-	   47,   45,   43,   41,   39,   37,   35,   33,
-	   31,   29,   27,   25,   23,   21,   19,   17,
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,   18,   20,   22,   24,   26,   28,   30,
-	   32,   34,   36,   38,   40,   42,   44,   46,
-	   48,
+static const char _vq_lengthlist__44u9_p1_0[] = {
+         1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
+         9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9,
+         9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,11, 7, 9, 9,
+         9,11,10, 9,11,11, 5, 7, 7, 7, 9, 9, 8, 9,10, 7,
+         9, 9, 9,11,11, 9,10,11, 7, 9,10, 9,11,11, 9,11,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__44u9_p9_2 = {
-	_vq_quantthresh__44u9_p9_2,
-	_vq_quantmap__44u9_p9_2,
-	49,
-	49
+static const static_codebook _44u9_p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u9_p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44u9_p1_0,
+        0
 };
 
-static static_codebook _44u9_p9_2 = {
-	1, 49,
-	_vq_lengthlist__44u9_p9_2,
-	1, -526909440, 1611661312, 6, 0,
-	_vq_quantlist__44u9_p9_2,
-	NULL,
-	&_vq_auxt__44u9_p9_2,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p2_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__8u0__p1_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u9_p2_0[] = {
+         3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+         9, 9,11,10, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+         8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10,
+        11,11, 6, 7, 7, 9, 9, 7, 8, 8,10, 9, 7, 8, 8,10,
+        10, 9,10, 9,11,11, 9,10,10,11,11, 8, 9, 9,11,11,
+         9,10,10,12,11, 9,10,10,11,12,11,11,11,13,13,11,
+        11,11,12,13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
+        10,12,11,11,12,11,13,12,11,11,12,13,13, 6, 7, 7,
+         9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+        11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
+         8, 9, 9,10,10,10,11,11,12,12,10,10,11,12,12, 7,
+         8, 8,10,10, 8, 9, 8,10,10, 8, 9, 9,10,10,10,11,
+        10,12,11,10,10,11,12,12, 9,10,10,11,12,10,11,11,
+        12,12,10,11,10,12,12,12,12,12,13,13,11,12,12,13,
+        13, 9,10,10,11,11, 9,10,10,12,12,10,11,11,12,13,
+        11,12,11,13,12,12,12,12,13,14, 6, 7, 7, 9, 9, 7,
+         8, 8,10,10, 7, 8, 8,10,10, 9,10,10,11,11, 9,10,
+        10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,10, 8, 8, 9,
+        10,10,10,11,10,12,12,10,10,11,11,12, 7, 8, 8,10,
+        10, 8, 9, 9,10,10, 8, 9, 9,10,10,10,11,10,12,12,
+        10,11,10,12,12, 9,10,10,12,11,10,11,11,12,12, 9,
+        10,10,12,12,12,12,12,13,13,11,11,12,12,14, 9,10,
+        10,11,12,10,11,11,12,12,10,11,11,12,12,11,12,12,
+        14,14,12,12,12,13,13, 8, 9, 9,11,11, 9,10,10,12,
+        11, 9,10,10,12,12,11,12,11,13,13,11,11,12,13,13,
+         9,10,10,12,12,10,11,11,12,12,10,11,11,12,12,12,
+        12,12,14,14,12,12,12,13,13, 9,10,10,12,11,10,11,
+        10,12,12,10,11,11,12,12,11,12,12,14,13,12,12,12,
+        13,14,11,12,11,13,13,11,12,12,13,13,12,12,12,14,
+        14,13,13,13,13,15,13,13,14,15,15,11,11,11,13,13,
+        11,12,11,13,13,11,12,12,13,13,12,13,12,15,13,13,
+        13,14,14,15, 8, 9, 9,11,11, 9,10,10,11,12, 9,10,
+        10,11,12,11,12,11,13,13,11,12,12,13,13, 9,10,10,
+        11,12,10,11,10,12,12,10,10,11,12,13,12,12,12,14,
+        13,11,12,12,13,14, 9,10,10,12,12,10,11,11,12,12,
+        10,11,11,12,12,12,12,12,14,13,12,12,12,14,13,11,
+        11,11,13,13,11,12,12,14,13,11,11,12,13,13,13,13,
+        13,15,14,12,12,13,13,15,11,12,12,13,13,12,12,12,
+        13,14,11,12,12,13,13,13,13,14,14,15,13,13,13,14,
+        14,
 };
 
-static long _vq_lengthlist__8u0__p1_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
-	10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11,
-	11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11,
-	10,13,12,10,13,13, 5, 9, 8, 8,11,11, 8,11,11, 7,
-	11,11, 9,13,13,10,12,13, 7,11,11,10,13,13,10,13,
-	11,
+static const static_codebook _44u9_p2_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44u9_p2_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u9_p2_0,
+        0
 };
 
-static float _vq_quantthresh__8u0__p1_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u9_p3_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_quantmap__8u0__p1_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u9_p3_0[] = {
+         3, 4, 4, 5, 5, 7, 7, 8, 8, 4, 5, 5, 6, 6, 7, 7,
+         9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+         8, 8, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
+         8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,10, 8,
+         9, 9,10, 9,10,10,11,11, 8, 9, 9, 9,10,10,10,11,
+        11,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p1_0 = {
-	_vq_quantthresh__8u0__p1_0,
-	_vq_quantmap__8u0__p1_0,
-	3,
-	3
+static const static_codebook _44u9_p3_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44u9_p3_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u9_p3_0,
+        0
 };
 
-static static_codebook _8u0__p1_0 = {
-	4, 81,
-	_vq_lengthlist__8u0__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8u0__p1_0,
-	NULL,
-	&_vq_auxt__8u0__p1_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p4_0[] = {
+        8,
+        7,
+        9,
+        6,
+        10,
+        5,
+        11,
+        4,
+        12,
+        3,
+        13,
+        2,
+        14,
+        1,
+        15,
+        0,
+        16,
 };
 
-static long _vq_quantlist__8u0__p2_0[] = {
-	1,
-	0,
-	2,
+static const char _vq_lengthlist__44u9_p4_0[] = {
+         4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+        11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+        11,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+        10,11,11, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,12,11, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10,
+        10,11,11,11,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
+        10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
+         9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8,10, 9,
+        10,10,11,10,12,11,13,12, 8, 8, 8, 8, 8, 9, 9, 9,
+        10,10,10,10,11,11,12,12,12, 8, 8, 8, 9, 9, 9, 9,
+        10,10,11,10,12,11,12,12,13,12, 8, 8, 8, 9, 9, 9,
+         9,10,10,10,11,11,11,12,12,12,13, 9, 9, 9,10,10,
+        10,10,11,10,11,11,12,11,13,12,13,13, 9, 9,10,10,
+        10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,
+        11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,
+        10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,
+        11,11,12,11,12,12,12,12,13,13,13,13,14,13,14,14,
+        11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,
+        14,
 };
 
-static long _vq_lengthlist__8u0__p2_0[] = {
-	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6,
-	 7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9,
-	 9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8,
-	 8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
-	 8, 8, 8,10,10, 8, 8,10, 6, 8, 9, 8,10,10, 7,10,
-	 8,
+static const static_codebook _44u9_p4_0 = {
+        2, 289,
+        (char *)_vq_lengthlist__44u9_p4_0,
+        1, -529530880, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u9_p4_0,
+        0
 };
 
-static float _vq_quantthresh__8u0__p2_0[] = {
-	-0.5, 0.5, 
+static const long _vq_quantlist__44u9_p5_0[] = {
+        1,
+        0,
+        2,
 };
 
-static long _vq_quantmap__8u0__p2_0[] = {
-	    1,    0,    2,
+static const char _vq_lengthlist__44u9_p5_0[] = {
+         1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
+         9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
+        10, 8,10,10, 7,10,10, 9,10,12, 9,11,11, 7,10,10,
+         9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+        10,10, 9,12,11, 9,10,11, 7,10,10, 9,11,11,10,12,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p2_0 = {
-	_vq_quantthresh__8u0__p2_0,
-	_vq_quantmap__8u0__p2_0,
-	3,
-	3
+static const static_codebook _44u9_p5_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44u9_p5_0,
+        1, -529137664, 1618345984, 2, 0,
+        (long *)_vq_quantlist__44u9_p5_0,
+        0
 };
 
-static static_codebook _8u0__p2_0 = {
-	4, 81,
-	_vq_lengthlist__8u0__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8u0__p2_0,
-	NULL,
-	&_vq_auxt__8u0__p2_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p5_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__8u0__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u9_p5_1[] = {
+         5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 6,
+         7, 7, 7, 7, 8, 7, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+         7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 6, 6, 6, 7,
+         7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
+         8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+         8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8,
+         8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+         8, 8, 8, 8, 8, 8, 8, 8, 8,
 };
 
-static long _vq_lengthlist__8u0__p3_0[] = {
-	 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
-	10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
-	10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11,
-	12,13, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
-	11, 9,10,11,12,12,10,11,11,12,12, 8,11,11,14,13,
-	10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,
-	14,12,16,15, 8,11,11,13,14,10,11,12,13,15,10,11,
-	12,13,15,11,12,13,14,15,12,12,14,14,16, 5, 8, 8,
-	11,11, 9,11,11,12,12, 8,10,11,12,12,11,12,12,15,
-	14,11,12,12,14,14, 7,11,10,13,12,10,11,12,13,14,
-	10,12,12,14,13,12,13,13,14,15,12,13,13,15,15, 7,
-	10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,
-	12,14,14,11,13,13,15,16, 9,12,12,15,14,11,13,13,
-	15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,
-	16, 9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,
-	13,14,14,17,16,13,15,15,17,18, 5, 8, 9,11,11, 8,
-	11,11,12,12, 8,10,11,12,12,11,12,12,14,14,11,12,
-	12,14,15, 7,11,10,12,13,10,12,12,14,13,10,11,12,
-	13,14,11,13,13,15,14,12,13,13,14,15, 7,10,11,13,
-	13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,
-	12,13,13,15,14, 9,12,12,16,15,10,13,13,15,15,11,
-	13,13,17,15,12,15,15,18,17,13,14,14,15,16, 9,12,
-	12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,
-	16,16,13,15,14,17,15, 7,11,11,15,15,10,13,13,16,
-	15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,
-	 9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,
-	15,16,17,19,13,15,16, 0,18, 9,12,12,16,15,11,14,
-	13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,
-	17,19,11,14,14,19,16,12,14,15, 0,18,12,16,15,18,
-	17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,
-	13,15,14,19,19,12,16,15,18,17,15,17,15, 0,16,14,
-	17,16,19, 0, 7,11,11,14,14,10,12,12,15,15,10,13,
-	13,16,15,13,15,15,17, 0,14,15,15,16,19, 9,12,12,
-	16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,
-	 0,14,18,17,17,19, 9,12,12,15,16,11,13,13,15,17,
-	12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,
-	14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,
-	17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,
-	19, 0,12,14,15,19,19,14,16,16, 0,18,15,19,14,18,
-	16,
+static const static_codebook _44u9_p5_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u9_p5_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u9_p5_1,
+        0
 };
 
-static float _vq_quantthresh__8u0__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u9_p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__8u0__p3_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u9_p6_0[] = {
+         2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
+         7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 5, 6, 7, 7, 8,
+         8, 8, 8, 9, 9,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+        10,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
+        10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, 7, 8,
+         8, 8, 8, 9, 9, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
+         9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
+         9,10,10,11,11, 9, 9, 9,10,10,10,10,10,11,11,11,
+        11,12, 9, 9, 9,10,10,10,10,10,10,11,10,12,11,10,
+        10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
+        10,11,11,11,11,12,11,12,12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p3_0 = {
-	_vq_quantthresh__8u0__p3_0,
-	_vq_quantmap__8u0__p3_0,
-	5,
-	5
+static const static_codebook _44u9_p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u9_p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44u9_p6_0,
+        0
 };
 
-static static_codebook _8u0__p3_0 = {
-	4, 625,
-	_vq_lengthlist__8u0__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8u0__p3_0,
-	NULL,
-	&_vq_auxt__8u0__p3_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_quantlist__8u0__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u9_p6_1[] = {
+         4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5,
+         5, 5, 5, 5, 5, 5, 5, 5, 5,
 };
 
-static long _vq_lengthlist__8u0__p4_0[] = {
-	 3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9,
-	 9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7,
-	 8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10,
-	11,12, 6, 7, 7,10,10, 7, 8, 8,10,10, 7, 8, 7,10,
-	10, 9,10,10,12,11,10,10,10,11,10, 9,10,10,12,11,
-	10,10,10,13,11, 9,10,10,12,12,11,11,12,12,13,11,
-	11,11,12,13, 9,10,10,12,12,10,10,11,12,12,10,10,
-	11,12,12,11,11,11,13,13,11,12,12,13,13, 5, 7, 7,
-	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,11,12,
-	12,10,11,10,12,12, 7, 8, 8,11,11, 7, 8, 9,10,11,
-	 8, 9, 9,11,11,11,10,11,10,12,10,11,11,12,13, 7,
-	 8, 8,10,11, 8, 9, 8,12,10, 8, 9, 9,11,12,10,11,
-	10,13,11,10,11,11,13,12, 9,11,10,13,12,10,10,11,
-	12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,
-	13, 9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,
-	12,13,11,14,12,12,12,12,14,14, 5, 7, 7,10,10, 7,
-	 8, 8,10,10, 7, 8, 8,11,10,10,11,11,12,12,10,11,
-	10,12,12, 7, 8, 8,10,11, 8, 9, 9,12,11, 8, 8, 9,
-	10,11,10,11,11,12,13,11,10,11,11,13, 6, 8, 8,10,
-	11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,11,11,12,12,
-	10,11,10,13,10, 9,11,10,13,12,10,12,11,13,13,10,
-	10,11,12,13,11,12,13,15,14,11,11,13,12,13, 9,10,
-	11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,
-	13,14,12,12,11,14,11, 8,10,10,12,13,10,11,11,13,
-	13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,
-	 9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,
-	12,13,15,14,12,13,13,15,13, 9,10,11,12,13,10,12,
-	10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,
-	15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,
-	13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,
-	11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,
-	15,14,16,15, 8,10,10,12,12,10,10,10,12,13,10,11,
-	11,13,13,12,12,12,13,14,13,13,13,15,15, 9,10,10,
-	12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,
-	14,12,12,13,15,14, 9,10,10,13,12,10,10,12,12,13,
-	10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,
-	12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,
-	14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,
-	14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,
-	12,
+static const static_codebook _44u9_p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44u9_p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44u9_p6_1,
+        0
 };
 
-static float _vq_quantthresh__8u0__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u9_p7_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_quantmap__8u0__p4_0[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u9_p7_0[] = {
+         1, 4, 5, 6, 6, 7, 7, 8, 9,10,10,11,11, 5, 6, 6,
+         7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
+         8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10,
+        11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+        12, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
+         8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
+        11,11,12,12,13,13,13,13, 9, 9, 9,10,10,11,11,12,
+        12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,13,
+        15,14,10,10,10,11,11,12,12,13,13,14,14,14,14,11,
+        11,12,12,12,13,13,14,14,14,14,15,15,11,11,12,12,
+        12,13,13,14,14,14,15,15,15,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p4_0 = {
-	_vq_quantthresh__8u0__p4_0,
-	_vq_quantmap__8u0__p4_0,
-	5,
-	5
+static const static_codebook _44u9_p7_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44u9_p7_0,
+        1, -523206656, 1618345984, 4, 0,
+        (long *)_vq_quantlist__44u9_p7_0,
+        0
 };
 
-static static_codebook _8u0__p4_0 = {
-	4, 625,
-	_vq_lengthlist__8u0__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8u0__p4_0,
-	NULL,
-	&_vq_auxt__8u0__p4_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p7_1[] = {
+        5,
+        4,
+        6,
+        3,
+        7,
+        2,
+        8,
+        1,
+        9,
+        0,
+        10,
 };
 
-static long _vq_quantlist__8u0__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
+static const char _vq_lengthlist__44u9_p7_1[] = {
+         5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7,
+         7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 7,
+         7, 7, 7, 7, 7, 8, 8, 8, 8,
 };
 
-static long _vq_lengthlist__8u0__p5_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8,
-	10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9,
-	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
-	 9, 9,10,10,12,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
-	10,10,11,11,11,12,12,12, 9,10,10,11,11,12,12,12,
-	12,
+static const static_codebook _44u9_p7_1 = {
+        2, 121,
+        (char *)_vq_lengthlist__44u9_p7_1,
+        1, -531365888, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44u9_p7_1,
+        0
 };
 
-static float _vq_quantthresh__8u0__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+static const long _vq_quantlist__44u9_p8_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__8u0__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
+static const char _vq_lengthlist__44u9_p8_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,11,10, 4,
+         6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,10, 4, 6,
+         6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8,
+        10,10,11,11,10,10,11,11,12,12,13,12, 7, 8, 8,10,
+        10,11,11,10,10,11,11,12,12,12,13, 8,10, 9,11,11,
+        12,12,11,11,12,12,13,13,14,13, 8, 9, 9,11,11,12,
+        12,11,12,12,12,13,13,14,13, 8, 9, 9,10,10,12,11,
+        13,12,13,13,14,13,15,14, 8, 9, 9,10,10,11,12,12,
+        12,13,13,13,14,14,14, 9,10,10,12,11,13,12,13,13,
+        14,13,14,14,14,15, 9,10,10,11,12,12,12,13,13,14,
+        14,14,15,15,15,10,11,11,12,12,13,13,14,14,14,14,
+        15,14,16,15,10,11,11,12,12,13,13,13,14,14,14,14,
+        14,15,16,11,12,12,13,13,14,13,14,14,15,14,15,16,
+        16,16,11,12,12,13,13,14,13,14,14,15,15,15,16,15,
+        15,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p5_0 = {
-	_vq_quantthresh__8u0__p5_0,
-	_vq_quantmap__8u0__p5_0,
-	9,
-	9
+static const static_codebook _44u9_p8_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u9_p8_0,
+        1, -520986624, 1620377600, 4, 0,
+        (long *)_vq_quantlist__44u9_p8_0,
+        0
 };
 
-static static_codebook _8u0__p5_0 = {
-	2, 81,
-	_vq_lengthlist__8u0__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8u0__p5_0,
-	NULL,
-	&_vq_auxt__8u0__p5_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p8_1[] = {
+        10,
+        9,
+        11,
+        8,
+        12,
+        7,
+        13,
+        6,
+        14,
+        5,
+        15,
+        4,
+        16,
+        3,
+        17,
+        2,
+        18,
+        1,
+        19,
+        0,
+        20,
 };
 
-static long _vq_quantlist__8u0__p6_0[] = {
-	6,
-	5,
-	7,
-	4,
-	8,
-	3,
-	9,
-	2,
-	10,
-	1,
-	11,
-	0,
-	12,
+static const char _vq_lengthlist__44u9_p8_1[] = {
+         4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
+         7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10, 8, 8,
+         8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+        10, 9,10, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
+         9, 9, 9, 9, 9,10,10, 9,10,10,10,10,10, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+        10,10, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+        10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+         9, 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+         9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+        10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+        10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+        10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+         9, 9, 9, 9,10, 9, 9,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+         9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,
 };
 
-static long _vq_lengthlist__8u0__p6_0[] = {
-	 1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6,
-	 9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11,
-	11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14,
-	14,14,17,16, 7, 9, 9,11,11,13,12,13,13,14,14,17,
-	 0, 9,11,11,12,13,14,14,14,13,15,14,17,17, 9,11,
-	11,12,12,14,14,13,14,14,15, 0, 0,11,12,12,15,14,
-	15,14,15,14,15,16,17, 0,11,12,13,13,13,14,14,15,
-	14,15,15, 0, 0,12,14,14,15,15,14,16,15,15,17,16,
-	 0,18,13,14,14,15,14,15,14,15,16,17,16, 0, 0,17,
-	17,18, 0,16,18,16, 0, 0, 0,17, 0, 0,16, 0, 0,16,
-	16, 0,15, 0,17, 0, 0, 0, 0,
+static const static_codebook _44u9_p8_1 = {
+        2, 441,
+        (char *)_vq_lengthlist__44u9_p8_1,
+        1, -529268736, 1611661312, 5, 0,
+        (long *)_vq_quantlist__44u9_p8_1,
+        0
 };
 
-static float _vq_quantthresh__8u0__p6_0[] = {
-	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
-	12.5, 17.5, 22.5, 27.5, 
+static const long _vq_quantlist__44u9_p9_0[] = {
+        7,
+        6,
+        8,
+        5,
+        9,
+        4,
+        10,
+        3,
+        11,
+        2,
+        12,
+        1,
+        13,
+        0,
+        14,
 };
 
-static long _vq_quantmap__8u0__p6_0[] = {
-	   11,    9,    7,    5,    3,    1,    0,    2,
-	    4,    6,    8,   10,   12,
+static const char _vq_lengthlist__44u9_p9_0[] = {
+         1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 4,
+        10,11,11,11,11,11,11,11,11,11,11,11,11,11, 4,10,
+        10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p6_0 = {
-	_vq_quantthresh__8u0__p6_0,
-	_vq_quantmap__8u0__p6_0,
-	13,
-	13
+static const static_codebook _44u9_p9_0 = {
+        2, 225,
+        (char *)_vq_lengthlist__44u9_p9_0,
+        1, -510036736, 1631393792, 4, 0,
+        (long *)_vq_quantlist__44u9_p9_0,
+        0
 };
 
-static static_codebook _8u0__p6_0 = {
-	2, 169,
-	_vq_lengthlist__8u0__p6_0,
-	1, -526516224, 1616117760, 4, 0,
-	_vq_quantlist__8u0__p6_0,
-	NULL,
-	&_vq_auxt__8u0__p6_0,
-	NULL,
-	0
+static const long _vq_quantlist__44u9_p9_1[] = {
+        9,
+        8,
+        10,
+        7,
+        11,
+        6,
+        12,
+        5,
+        13,
+        4,
+        14,
+        3,
+        15,
+        2,
+        16,
+        1,
+        17,
+        0,
+        18,
 };
 
-static long _vq_quantlist__8u0__p6_1[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const char _vq_lengthlist__44u9_p9_1[] = {
+         1, 4, 4, 7, 7, 8, 7, 8, 7, 9, 8,10, 9,10,10,11,
+        11,12,12, 4, 7, 6, 9, 9,10, 9, 9, 8,10,10,11,10,
+        12,10,13,12,13,12, 4, 6, 6, 9, 9, 9, 9, 9, 9,10,
+        10,11,11,11,12,12,12,12,12, 7, 9, 8,11,10,10,10,
+        11,10,11,11,12,12,13,12,13,13,13,13, 7, 8, 9,10,
+        10,11,11,10,10,11,11,11,12,13,13,13,13,14,14, 8,
+         9, 9,11,11,12,11,12,12,13,12,12,13,13,14,15,14,
+        14,14, 8, 9, 9,10,11,11,11,12,12,13,12,13,13,14,
+        14,14,15,14,16, 8, 9, 9,11,10,12,12,12,12,15,13,
+        13,13,17,14,15,15,15,14, 8, 9, 9,10,11,11,12,13,
+        12,13,13,13,14,15,14,14,14,16,15, 9,11,10,12,12,
+        13,13,13,13,14,14,16,15,14,14,14,15,15,17, 9,10,
+        10,11,11,13,13,13,14,14,13,15,14,15,14,15,16,15,
+        16,10,11,11,12,12,13,14,15,14,15,14,14,15,17,16,
+        15,15,17,17,10,12,11,13,12,14,14,13,14,15,15,15,
+        15,16,17,17,15,17,16,11,12,12,14,13,15,14,15,16,
+        17,15,17,15,17,15,15,16,17,15,11,11,12,14,14,14,
+        14,14,15,15,16,15,17,17,17,16,17,16,15,12,12,13,
+        14,14,14,15,14,15,15,16,16,17,16,17,15,17,17,16,
+        12,14,12,14,14,15,15,15,14,14,16,16,16,15,16,16,
+        15,17,15,12,13,13,14,15,14,15,17,15,17,16,17,17,
+        17,16,17,16,17,17,12,13,13,14,16,15,15,15,16,15,
+        17,17,15,17,15,17,16,16,17,
 };
 
-static long _vq_lengthlist__8u0__p6_1[] = {
-	 1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6,
-	 7, 7, 7, 7, 6, 7, 7, 7, 7,
+static const static_codebook _44u9_p9_1 = {
+        2, 361,
+        (char *)_vq_lengthlist__44u9_p9_1,
+        1, -518287360, 1622704128, 5, 0,
+        (long *)_vq_quantlist__44u9_p9_1,
+        0
 };
 
-static float _vq_quantthresh__8u0__p6_1[] = {
-	-1.5, -0.5, 0.5, 1.5, 
+static const long _vq_quantlist__44u9_p9_2[] = {
+        24,
+        23,
+        25,
+        22,
+        26,
+        21,
+        27,
+        20,
+        28,
+        19,
+        29,
+        18,
+        30,
+        17,
+        31,
+        16,
+        32,
+        15,
+        33,
+        14,
+        34,
+        13,
+        35,
+        12,
+        36,
+        11,
+        37,
+        10,
+        38,
+        9,
+        39,
+        8,
+        40,
+        7,
+        41,
+        6,
+        42,
+        5,
+        43,
+        4,
+        44,
+        3,
+        45,
+        2,
+        46,
+        1,
+        47,
+        0,
+        48,
 };
 
-static long _vq_quantmap__8u0__p6_1[] = {
-	    3,    1,    0,    2,    4,
+static const char _vq_lengthlist__44u9_p9_2[] = {
+         2, 4, 4, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+         6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+         7,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p6_1 = {
-	_vq_quantthresh__8u0__p6_1,
-	_vq_quantmap__8u0__p6_1,
-	5,
-	5
+static const static_codebook _44u9_p9_2 = {
+        1, 49,
+        (char *)_vq_lengthlist__44u9_p9_2,
+        1, -526909440, 1611661312, 6, 0,
+        (long *)_vq_quantlist__44u9_p9_2,
+        0
 };
 
-static static_codebook _8u0__p6_1 = {
-	2, 25,
-	_vq_lengthlist__8u0__p6_1,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8u0__p6_1,
-	NULL,
-	&_vq_auxt__8u0__p6_1,
-	NULL,
-	0
+static const char _huff_lengthlist__44un1__long[] = {
+         5, 6,12, 9,14, 9, 9,19, 6, 1, 5, 5, 8, 7, 9,19,
+        12, 4, 4, 7, 7, 9,11,18, 9, 5, 6, 6, 8, 7, 8,17,
+        14, 8, 7, 8, 8,10,12,18, 9, 6, 8, 6, 8, 6, 8,18,
+         9, 8,11, 8,11, 7, 5,15,16,18,18,18,17,15,11,18,
 };
 
-static long _vq_quantlist__8u0__p7_0[] = {
-	1,
-	0,
-	2,
+static const static_codebook _huff_book__44un1__long = {
+        2, 64,
+        (char *)_huff_lengthlist__44un1__long,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
-static long _vq_lengthlist__8u0__p7_0[] = {
-	 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
-	 7,
+static const long _vq_quantlist__44un1__p1_0[] = {
+        1,
+        0,
+        2,
 };
 
-static float _vq_quantthresh__8u0__p7_0[] = {
-	-157.5, 157.5, 
+static const char _vq_lengthlist__44un1__p1_0[] = {
+         1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+        10,11, 5, 8, 8, 8,11,10, 8,11,10, 4, 9, 9, 8,11,
+        11, 8,11,11, 8,12,11,10,12,14,11,13,13, 7,11,11,
+        10,13,11,11,13,14, 4, 8, 9, 8,11,11, 8,11,12, 7,
+        11,11,11,14,13,10,11,13, 8,11,12,11,13,13,10,14,
+        12,
 };
 
-static long _vq_quantmap__8u0__p7_0[] = {
-	    1,    0,    2,
+static const static_codebook _44un1__p1_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44un1__p1_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44un1__p1_0,
+        0
 };
 
-static encode_aux_threshmatch _vq_auxt__8u0__p7_0 = {
-	_vq_quantthresh__8u0__p7_0,
-	_vq_quantmap__8u0__p7_0,
-	3,
-	3
+static const long _vq_quantlist__44un1__p2_0[] = {
+        1,
+        0,
+        2,
 };
 
-static static_codebook _8u0__p7_0 = {
-	4, 81,
-	_vq_lengthlist__8u0__p7_0,
-	1, -518803456, 1628680192, 2, 0,
-	_vq_quantlist__8u0__p7_0,
-	NULL,
-	&_vq_auxt__8u0__p7_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44un1__p2_0[] = {
+         2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+         7, 9, 5, 7, 7, 6, 8, 7, 7, 9, 8, 4, 7, 7, 7, 9,
+         8, 7, 8, 8, 7, 9, 8, 8, 8,10, 9,10,10, 6, 8, 8,
+         7,10, 8, 9,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
+         8, 8, 9,10,10, 7, 8,10, 6, 8, 9, 9,10,10, 8,10,
+         8,
 };
 
-static long _vq_quantlist__8u0__p7_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const static_codebook _44un1__p2_0 = {
+        4, 81,
+        (char *)_vq_lengthlist__44un1__p2_0,
+        1, -535822336, 1611661312, 2, 0,
+        (long *)_vq_quantlist__44un1__p2_0,
+        0
 };
 
-static long _vq_lengthlist__8u0__p7_1[] = {
-	 1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5,
-	 7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6,
-	 7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6,
-	11, 8,11,11,11,11,11,11,11,11,11,11, 5, 6, 6, 9,
-	10,11,10,11,11,11,11,11,11,11,11, 7,10,10,11,11,
-	11,11,11,11,11,11,11,11,11,11, 7,11, 8,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
+static const long _vq_quantlist__44un1__p3_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__8u0__p7_1[] = {
-	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
-	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
-};
-
-static long _vq_quantmap__8u0__p7_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u0__p7_1 = {
-	_vq_quantthresh__8u0__p7_1,
-	_vq_quantmap__8u0__p7_1,
-	15,
-	15
-};
-
-static static_codebook _8u0__p7_1 = {
-	2, 225,
-	_vq_lengthlist__8u0__p7_1,
-	1, -520986624, 1620377600, 4, 0,
-	_vq_quantlist__8u0__p7_1,
-	NULL,
-	&_vq_auxt__8u0__p7_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u0__p7_2[] = {
-	10,
-	9,
-	11,
-	8,
-	12,
-	7,
-	13,
-	6,
-	14,
-	5,
-	15,
-	4,
-	16,
-	3,
-	17,
-	2,
-	18,
-	1,
-	19,
-	0,
-	20,
-};
-
-static long _vq_lengthlist__8u0__p7_2[] = {
-	 1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10,
-	11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11,
-	10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9,
-	10,11,10,11,12,11,10,11,11,11,11,11,11,12,10, 8,
-	 9, 9,10, 9,10,10, 9,10,10,10,10,10, 9,10,10,10,
-	10, 9,10,10, 9, 9, 9, 9,10,10, 9, 9,10,10,11,10,
-	 9,12,10,11,10, 9,10,10,10, 8, 9, 9,10, 9,10, 9,
-	 9,10,10, 9,10, 9,11,10,10,10,10,10, 9,10, 8, 8,
-	 9, 9,10, 9,11, 9, 8, 9, 9,10,11,10,10,10,11,12,
-	 9, 9,11, 8, 9, 8,11,10,11,10,10, 9,11,10,10,10,
-	10,10,10,10,11,11,11,11, 8, 9, 9, 9,10,10,10,11,
-	11,12,11,12,11,10,10,10,12,11,11,11,10, 8,10, 9,
-	11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,
-	11,10, 9, 9,10,11,12,10,10,10,11,10,11,11,10,12,
-	12,10,11,10,11,12,10, 9,10,10,11,10,11,11,11,11,
-	11,12,11,11,11, 9,11,10,11,10,11,10, 9, 9,10,11,
-	11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,
-	11, 9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,
-	11,11,11,10,11,11, 9,11,10,11,11,11,10,10,10,11,
-	11,11,12,10,11,10,11,11,11,11,12, 9,11,10,11,11,
-	10,10,11,11, 9,11,11,12,10,10,10,10,10,11,11,10,
-	 9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,
-	10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,
-	10,10,11,11,11,11,10,10,10,12,11,11,11,11,10, 9,
-	10,11,11,11,12,11,11,11,12,10,11,11,11, 9,10,11,
-	11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,
-	10,11, 9,10,11,11,11,11,11,10,11,11,10,12,11,11,
-	11,12,11,11,11,10,10,11,11,
-};
-
-static float _vq_quantthresh__8u0__p7_2[] = {
-	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
-	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
-	6.5, 7.5, 8.5, 9.5, 
-};
-
-static long _vq_quantmap__8u0__p7_2[] = {
-	   19,   17,   15,   13,   11,    9,    7,    5,
-	    3,    1,    0,    2,    4,    6,    8,   10,
-	   12,   14,   16,   18,   20,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u0__p7_2 = {
-	_vq_quantthresh__8u0__p7_2,
-	_vq_quantmap__8u0__p7_2,
-	21,
-	21
-};
-
-static static_codebook _8u0__p7_2 = {
-	2, 441,
-	_vq_lengthlist__8u0__p7_2,
-	1, -529268736, 1611661312, 5, 0,
-	_vq_quantlist__8u0__p7_2,
-	NULL,
-	&_vq_auxt__8u0__p7_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__8u0__single[] = {
-	 4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16,
-	 9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17,
-	10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15,
-	 7, 6, 7, 5, 6, 4, 5,15,12,13,18,12,17,11, 9,17,
-};
-
-static static_codebook _huff_book__8u0__single = {
-	2, 64,
-	_huff_lengthlist__8u0__single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p1_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__8u1__p1_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7,
-	 9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10,
-	10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10,
-	 9,12,11,10,12,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
-	10,10,10,12,12, 9,11,12, 7,10,10,10,12,12, 9,12,
-	10,
-};
-
-static float _vq_quantthresh__8u1__p1_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__8u1__p1_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p1_0 = {
-	_vq_quantthresh__8u1__p1_0,
-	_vq_quantmap__8u1__p1_0,
-	3,
-	3
-};
-
-static static_codebook _8u1__p1_0 = {
-	4, 81,
-	_vq_lengthlist__8u1__p1_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8u1__p1_0,
-	NULL,
-	&_vq_auxt__8u1__p1_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p2_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__8u1__p2_0[] = {
-	 3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6,
-	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8,
-	 8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8,
-	 7, 9, 7, 8, 9, 9, 5, 6, 6, 6, 7, 7, 7, 8, 8, 6,
-	 8, 7, 8, 9, 9, 7, 7, 9, 6, 7, 8, 8, 9, 9, 7, 9,
-	 7,
-};
-
-static float _vq_quantthresh__8u1__p2_0[] = {
-	-0.5, 0.5, 
-};
-
-static long _vq_quantmap__8u1__p2_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p2_0 = {
-	_vq_quantthresh__8u1__p2_0,
-	_vq_quantmap__8u1__p2_0,
-	3,
-	3
-};
-
-static static_codebook _8u1__p2_0 = {
-	4, 81,
-	_vq_lengthlist__8u1__p2_0,
-	1, -535822336, 1611661312, 2, 0,
-	_vq_quantlist__8u1__p2_0,
-	NULL,
-	&_vq_auxt__8u1__p2_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p3_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
-};
-
-static long _vq_lengthlist__8u1__p3_0[] = {
-	 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
-	10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
-	10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11,
-	12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
-	11,10,11,11,12,12,10,11,11,12,12, 9,11,11,14,13,
-	10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,
-	13,13,15,14, 8,11,11,13,14,10,11,12,13,15,10,11,
-	12,14,14,12,13,13,14,15,12,13,13,14,15, 5, 8, 8,
-	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
-	13,11,12,12,13,14, 8,10,10,12,12, 9,11,12,13,14,
-	10,12,12,13,13,12,12,13,14,14,11,13,13,15,15, 7,
-	10,10,12,12, 9,12,11,14,12,10,11,12,13,14,12,13,
-	12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,
-	15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,
-	15, 9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,
-	13,14,13,15,14,13,14,14,17, 0, 5, 8, 8,11,11, 8,
-	10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
-	12,14,14, 7,10,10,12,12,10,12,12,13,13, 9,11,12,
-	12,13,11,12,13,15,15,11,12,13,14,15, 8,10,10,12,
-	12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,
-	12,13,12,15,13, 9,12,12,14,14,11,13,13,16,15,11,
-	12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,
-	12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,
-	16,17,13,15,14,16,15, 8,11,11,14,15,10,12,12,15,
-	15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,
-	 9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,
-	15,16,19,17,13,15,15, 0,17, 9,12,12,15,15,11,14,
-	13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,
-	17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,
-	18,15,15,16,15,19,14,16,16, 0, 0,11,14,14,16,17,
-	12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,
-	16,16,18,18, 7,11,11,14,14,10,12,12,15,15,10,12,
-	13,15,15,13,14,15,16,16,14,15,15,18,18, 9,12,12,
-	15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,
-	16,15,16,16,17,17, 9,12,12,15,15,11,13,13,15,17,
-	11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,
-	14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,
-	16,19,18,16,15,17,17, 0,11,14,14,17,17,12,15,15,
-	18, 0,12,15,14,18,16,14,17,17,19, 0,16,18,15, 0,
-	16,
-};
-
-static float _vq_quantthresh__8u1__p3_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__8u1__p3_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p3_0 = {
-	_vq_quantthresh__8u1__p3_0,
-	_vq_quantmap__8u1__p3_0,
-	5,
-	5
-};
-
-static static_codebook _8u1__p3_0 = {
-	4, 625,
-	_vq_lengthlist__8u1__p3_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8u1__p3_0,
-	NULL,
-	&_vq_auxt__8u1__p3_0,
-	NULL,
-	0
+static const char _vq_lengthlist__44un1__p3_0[] = {
+         1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+        10, 9,12,12, 9, 9,10,11,12, 6, 8, 8,10,10, 8,10,
+        10,11,11, 8, 9,10,11,11,10,11,11,13,13,10,11,11,
+        12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10,10,11,
+        11,10,11,11,13,12,10,11,11,13,12, 9,11,11,15,13,
+        10,12,11,15,13,10,11,11,15,14,12,14,13,16,15,12,
+        13,13,17,16, 9,11,11,13,15,10,11,12,14,15,10,11,
+        12,14,15,12,13,13,15,16,12,13,13,16,16, 5, 8, 8,
+        11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+        14,11,12,12,14,14, 8,11,10,13,12,10,11,12,12,13,
+        10,12,12,13,13,12,12,13,13,15,11,12,13,15,14, 7,
+        10,10,12,12, 9,12,11,13,12,10,12,12,13,14,12,13,
+        12,15,13,11,13,12,14,15,10,12,12,16,14,11,12,12,
+        16,15,11,13,12,17,16,13,13,15,15,17,13,15,15,20,
+        17,10,12,12,14,16,11,12,12,15,15,11,13,13,15,18,
+        13,14,13,15,15,13,15,14,16,16, 5, 8, 8,11,11, 8,
+        10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+        12,14,15, 7,10,10,13,12,10,12,12,14,13, 9,10,12,
+        12,13,11,13,13,15,15,11,12,13,13,15, 8,10,10,12,
+        13,10,12,12,13,13,10,12,11,13,13,11,13,12,15,15,
+        12,13,12,15,13,10,12,12,16,14,11,12,12,16,15,10,
+        12,12,16,14,14,15,14,18,16,13,13,14,15,16,10,12,
+        12,14,16,11,13,13,16,16,11,13,12,14,16,13,15,15,
+        18,18,13,15,13,16,14, 8,11,11,16,16,10,13,13,17,
+        16,10,12,12,16,15,14,16,15,20,17,13,14,14,17,17,
+         9,12,12,16,16,11,13,14,16,17,11,13,13,16,16,15,
+        15,19,18, 0,14,15,15,18,18, 9,12,12,17,16,11,13,
+        12,17,16,11,12,13,15,17,15,16,15, 0,19,14,15,14,
+        19,18,12,14,14, 0,16,13,14,14,19,18,13,15,16,17,
+        16,15,15,17,18, 0,14,16,16,19, 0,12,14,14,16,18,
+        13,15,13,17,18,13,15,14,17,18,15,18,14,18,18,16,
+        17,16, 0,17, 8,11,11,15,15,10,12,12,16,16,10,13,
+        13,16,16,13,15,14,17,17,14,15,17,17,18, 9,12,12,
+        16,15,11,13,13,16,16,11,12,13,17,17,14,14,15,17,
+        17,14,15,16, 0,18, 9,12,12,16,17,11,13,13,16,17,
+        11,14,13,18,17,14,16,14,17,17,15,17,17,18,18,12,
+        14,14, 0,16,13,15,15,19, 0,12,13,15, 0, 0,14,17,
+        16,19, 0,16,15,18,18, 0,12,14,14,17, 0,13,14,14,
+        17, 0,13,15,14, 0,18,15,16,16, 0,18,15,18,15, 0,
+        17,
 };
 
-static long _vq_quantlist__8u1__p4_0[] = {
-	2,
-	1,
-	3,
-	0,
-	4,
+static const static_codebook _44un1__p3_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44un1__p3_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44un1__p3_0,
+        0
 };
 
-static long _vq_lengthlist__8u1__p4_0[] = {
-	 4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9,
-	 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7,
-	 8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10,
-	10,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 7,10,
-	 9, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
-	 9,10,10,12,11, 9,10,10,12,12,11,11,12,12,13,11,
-	11,12,12,13, 9, 9,10,12,11, 9,10,10,12,12,10,10,
-	10,12,12,11,12,11,13,12,11,12,11,13,12, 6, 7, 7,
-	 9, 9, 7, 8, 8,10,10, 7, 8, 7,10, 9,10,10,10,12,
-	12,10,10,10,12,11, 7, 8, 7,10,10, 7, 7, 9,10,11,
-	 8, 9, 9,11,10,10,10,11,10,12,10,10,11,12,12, 7,
-	 8, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,11,11,10,11,
-	10,12,11,10,11,11,12,12, 9,10,10,12,12, 9,10,10,
-	12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,
-	14, 9,10,10,12,12, 9,11,10,12,12,10,11,11,12,12,
-	11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
-	 7, 7, 9,10, 7, 8, 8,10,10,10,10,10,11,11,10,10,
-	10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
-	10,11,10,10,10,11,12,10,10,11,11,13, 6, 7, 8,10,
-	10, 8, 9, 9,10,10, 7, 9, 7,11,10,10,11,10,12,12,
-	10,11,10,12,10, 9,10,10,12,12,10,11,11,13,12, 9,
-	10,10,12,12,12,12,12,14,13,11,11,12,11,14, 9,10,
-	10,11,12,10,11,11,12,13, 9,10,10,12,12,12,12,12,
-	14,13,11,12,10,14,11, 9, 9,10,11,12, 9,10,10,12,
-	12, 9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,
-	 9,10, 9,12,12, 9,10,11,12,13,10,11,10,13,11,12,
-	12,13,13,14,12,12,12,13,13, 9,10,10,12,12,10,11,
-	10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,
-	13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,
-	13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,
-	10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,
-	13,14,14,14, 9,10, 9,12,12, 9,10,10,12,12,10,10,
-	10,12,12,11,11,12,12,13,12,12,12,14,14, 9,10,10,
-	12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,
-	13,12,12,13,13,14, 9,10,10,12,13,10,10,11,11,12,
-	 9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,
-	12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,
-	13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,
-	13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,
-	10,
+static const long _vq_quantlist__44un1__p4_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static float _vq_quantthresh__8u1__p4_0[] = {
-	-1.5, -0.5, 0.5, 1.5, 
-};
-
-static long _vq_quantmap__8u1__p4_0[] = {
-	    3,    1,    0,    2,    4,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p4_0 = {
-	_vq_quantthresh__8u1__p4_0,
-	_vq_quantmap__8u1__p4_0,
-	5,
-	5
-};
-
-static static_codebook _8u1__p4_0 = {
-	4, 625,
-	_vq_lengthlist__8u1__p4_0,
-	1, -533725184, 1611661312, 3, 0,
-	_vq_quantlist__8u1__p4_0,
-	NULL,
-	&_vq_auxt__8u1__p4_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p5_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__8u1__p5_0[] = {
-	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8,
-	10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
-	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
-	 9, 9,10,10,12,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
-	10,10,11,11,11,11,13,12, 9,10,10,11,11,12,12,12,
-	13,
-};
-
-static float _vq_quantthresh__8u1__p5_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__8u1__p5_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p5_0 = {
-	_vq_quantthresh__8u1__p5_0,
-	_vq_quantmap__8u1__p5_0,
-	9,
-	9
-};
-
-static static_codebook _8u1__p5_0 = {
-	2, 81,
-	_vq_lengthlist__8u1__p5_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8u1__p5_0,
-	NULL,
-	&_vq_auxt__8u1__p5_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p6_0[] = {
-	4,
-	3,
-	5,
-	2,
-	6,
-	1,
-	7,
-	0,
-	8,
-};
-
-static long _vq_lengthlist__8u1__p6_0[] = {
-	 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7,
-	 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
-	 8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
-	 8, 8, 8, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10,10, 9,
-	 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__8u1__p6_0[] = {
-	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
-};
-
-static long _vq_quantmap__8u1__p6_0[] = {
-	    7,    5,    3,    1,    0,    2,    4,    6,
-	    8,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p6_0 = {
-	_vq_quantthresh__8u1__p6_0,
-	_vq_quantmap__8u1__p6_0,
-	9,
-	9
-};
-
-static static_codebook _8u1__p6_0 = {
-	2, 81,
-	_vq_lengthlist__8u1__p6_0,
-	1, -531628032, 1611661312, 4, 0,
-	_vq_quantlist__8u1__p6_0,
-	NULL,
-	&_vq_auxt__8u1__p6_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p7_0[] = {
-	1,
-	0,
-	2,
-};
-
-static long _vq_lengthlist__8u1__p7_0[] = {
-	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8,
-	10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12,
-	12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12,
-	10,13,12,10,13,13, 4,10,10, 9,12,12, 9,12,12, 7,
-	12,12,10,13,13,10,12,13, 7,11,12,10,13,13,10,13,
-	11,
-};
-
-static float _vq_quantthresh__8u1__p7_0[] = {
-	-5.5, 5.5, 
-};
-
-static long _vq_quantmap__8u1__p7_0[] = {
-	    1,    0,    2,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p7_0 = {
-	_vq_quantthresh__8u1__p7_0,
-	_vq_quantmap__8u1__p7_0,
-	3,
-	3
+static const char _vq_lengthlist__44un1__p4_0[] = {
+         3, 5, 5, 9, 9, 5, 6, 6,10, 9, 5, 6, 6, 9,10,10,
+        10,10,12,11, 9,10,10,12,12, 5, 7, 7,10,10, 7, 7,
+         8,10,11, 7, 7, 8,10,11,10,10,11,11,13,10,10,11,
+        11,13, 6, 7, 7,10,10, 7, 8, 7,11,10, 7, 8, 7,10,
+        10,10,11, 9,13,11,10,11,10,13,11,10,10,10,14,13,
+        10,11,11,14,13,10,10,11,13,14,12,12,13,15,15,12,
+        12,13,13,14,10,10,10,12,13,10,11,10,13,13,10,11,
+        11,13,13,12,13,12,14,13,12,13,13,14,13, 5, 7, 7,
+        10,10, 7, 8, 8,11,10, 7, 8, 8,10,10,11,11,11,13,
+        13,10,11,11,12,12, 7, 8, 8,11,11, 7, 8, 9,10,12,
+         8, 9, 9,11,11,11,10,12,11,14,11,11,12,13,13, 6,
+         8, 8,10,11, 7, 9, 7,12,10, 8, 9,10,11,12,10,12,
+        10,14,11,11,12,11,13,13,10,11,11,14,14,10,10,11,
+        13,14,11,12,12,15,13,12,11,14,12,16,12,13,14,15,
+        16,10,10,11,13,14,10,11,10,14,12,11,12,12,13,14,
+        12,13,11,15,12,14,14,14,15,15, 5, 7, 7,10,10, 7,
+         8, 8,10,10, 7, 8, 8,10,11,10,11,10,12,12,10,11,
+        11,12,13, 6, 8, 8,11,11, 8, 9, 9,12,11, 7, 7, 9,
+        10,12,11,11,11,12,13,11,10,12,11,15, 7, 8, 8,11,
+        11, 8, 9, 9,11,11, 7, 9, 8,12,10,11,12,11,13,12,
+        11,12,10,15,11,10,11,10,14,12,11,12,11,14,13,10,
+        10,11,13,14,13,13,13,17,15,12,11,14,12,15,10,10,
+        11,13,14,11,12,12,14,14,10,11,10,14,13,13,14,13,
+        16,17,12,14,11,16,12, 9,10,10,14,13,10,11,10,14,
+        14,10,11,11,13,13,13,14,14,16,15,12,13,13,14,14,
+         9,11,10,14,13,10,10,12,13,14,11,12,11,14,13,13,
+        14,14,14,15,13,14,14,15,15, 9,10,11,13,14,10,11,
+        10,15,13,11,11,12,12,15,13,14,12,15,14,13,13,14,
+        14,15,12,13,12,16,14,11,11,12,15,14,13,15,13,16,
+        14,13,12,15,12,17,15,16,15,16,16,12,12,13,13,15,
+        11,13,11,15,14,13,13,14,15,17,13,14,12, 0,13,14,
+        15,14,15, 0, 9,10,10,13,13,10,11,11,13,13,10,11,
+        11,13,13,12,13,12,14,14,13,14,14,15,17, 9,10,10,
+        13,13,11,12,11,15,12,10,10,11,13,16,13,14,13,15,
+        14,13,13,14,15,16,10,10,11,13,14,11,11,12,13,14,
+        10,12,11,14,14,13,13,13,14,15,13,15,13,16,15,12,
+        13,12,15,13,12,15,13,15,15,11,11,13,14,15,15,15,
+        15,15,17,13,12,14,13,17,12,12,14,14,15,13,13,14,
+        14,16,11,13,11,16,15,14,16,16,17, 0,14,13,11,16,
+        12,
 };
 
-static static_codebook _8u1__p7_0 = {
-	4, 81,
-	_vq_lengthlist__8u1__p7_0,
-	1, -529137664, 1618345984, 2, 0,
-	_vq_quantlist__8u1__p7_0,
-	NULL,
-	&_vq_auxt__8u1__p7_0,
-	NULL,
-	0
+static const static_codebook _44un1__p4_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44un1__p4_0,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44un1__p4_0,
+        0
 };
 
-static long _vq_quantlist__8u1__p7_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44un1__p5_0[] = {
+        4,
+        3,
+        5,
+        2,
+        6,
+        1,
+        7,
+        0,
+        8,
 };
 
-static long _vq_lengthlist__8u1__p7_1[] = {
-	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
-	 8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9,
-	 9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
-	 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9,
-	 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9,
-	 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
-	10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
-	 9, 9, 9, 9, 9,10,10,10,10,
+static const char _vq_lengthlist__44un1__p5_0[] = {
+         1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 7, 8, 8,
+        10, 9, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9,
+         9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 8, 8, 8,
+         9, 9,10,10,11,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
+        10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
+        12,
 };
 
-static float _vq_quantthresh__8u1__p7_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44un1__p5_0 = {
+        2, 81,
+        (char *)_vq_lengthlist__44un1__p5_0,
+        1, -531628032, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44un1__p5_0,
+        0
 };
 
-static long _vq_quantmap__8u1__p7_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44un1__p6_0[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u1__p7_1 = {
-	_vq_quantthresh__8u1__p7_1,
-	_vq_quantmap__8u1__p7_1,
-	11,
-	11
+static const char _vq_lengthlist__44un1__p6_0[] = {
+         1, 4, 4, 6, 6, 8, 8,10,10,11,11,15,15, 4, 5, 5,
+         8, 8, 9, 9,11,11,12,12,16,16, 4, 5, 6, 8, 8, 9,
+         9,11,11,12,12,14,14, 7, 8, 8, 9, 9,10,10,11,12,
+        13,13,16,17, 7, 8, 8, 9, 9,10,10,12,12,12,13,15,
+        15, 9,10,10,10,10,11,11,12,12,13,13,15,16, 9, 9,
+         9,10,10,11,11,13,12,13,13,17,17,10,11,11,11,12,
+        12,12,13,13,14,15, 0,18,10,11,11,12,12,12,13,14,
+        13,14,14,17,16,11,12,12,13,13,14,14,14,14,15,16,
+        17,16,11,12,12,13,13,14,14,14,14,15,15,17,17,14,
+        15,15,16,16,16,17,17,16, 0,17, 0,18,14,15,15,16,
+        16, 0,15,18,18, 0,16, 0, 0,
 };
 
-static static_codebook _8u1__p7_1 = {
-	2, 121,
-	_vq_lengthlist__8u1__p7_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__8u1__p7_1,
-	NULL,
-	&_vq_auxt__8u1__p7_1,
-	NULL,
-	0
+static const static_codebook _44un1__p6_0 = {
+        2, 169,
+        (char *)_vq_lengthlist__44un1__p6_0,
+        1, -526516224, 1616117760, 4, 0,
+        (long *)_vq_quantlist__44un1__p6_0,
+        0
 };
 
-static long _vq_quantlist__8u1__p8_0[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44un1__p6_1[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static long _vq_lengthlist__8u1__p8_0[] = {
-	 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
-	 9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12,
-	12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9,
-	 9,11,11,12,12,13,13, 8, 9, 9,11,11,12,12,13,13,
-	14,14, 8, 9, 9,11,11,12,12,13,13,14,14, 9,11,11,
-	12,12,13,13,14,14,15,15, 9,11,11,12,12,13,13,14,
-	14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,
-	12,13,13,14,14,15,15,15,15,
+static const char _vq_lengthlist__44un1__p6_1[] = {
+         2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 6, 5, 5,
+         6, 5, 6, 6, 5, 6, 6, 6, 6,
 };
 
-static float _vq_quantthresh__8u1__p8_0[] = {
-	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
-	38.5, 49.5, 
+static const static_codebook _44un1__p6_1 = {
+        2, 25,
+        (char *)_vq_lengthlist__44un1__p6_1,
+        1, -533725184, 1611661312, 3, 0,
+        (long *)_vq_quantlist__44un1__p6_1,
+        0
 };
 
-static long _vq_quantmap__8u1__p8_0[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44un1__p7_0[] = {
+        2,
+        1,
+        3,
+        0,
+        4,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u1__p8_0 = {
-	_vq_quantthresh__8u1__p8_0,
-	_vq_quantmap__8u1__p8_0,
-	11,
-	11
+static const char _vq_lengthlist__44un1__p7_0[] = {
+         1, 5, 3,11,11,11,11,11,11,11, 8,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11, 7,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+        10,
 };
 
-static static_codebook _8u1__p8_0 = {
-	2, 121,
-	_vq_lengthlist__8u1__p8_0,
-	1, -524582912, 1618345984, 4, 0,
-	_vq_quantlist__8u1__p8_0,
-	NULL,
-	&_vq_auxt__8u1__p8_0,
-	NULL,
-	0
+static const static_codebook _44un1__p7_0 = {
+        4, 625,
+        (char *)_vq_lengthlist__44un1__p7_0,
+        1, -518709248, 1626677248, 3, 0,
+        (long *)_vq_quantlist__44un1__p7_0,
+        0
 };
 
-static long _vq_quantlist__8u1__p8_1[] = {
-	5,
-	4,
-	6,
-	3,
-	7,
-	2,
-	8,
-	1,
-	9,
-	0,
-	10,
+static const long _vq_quantlist__44un1__p7_1[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static long _vq_lengthlist__8u1__p8_1[] = {
-	 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
-	 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
-	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
-	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
-	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-	 8, 8, 8, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9,
-	 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
-	 8, 8, 8, 8, 8, 9, 9, 9, 9,
+static const char _vq_lengthlist__44un1__p7_1[] = {
+         1, 4, 4, 6, 6, 6, 6, 9, 8, 9, 8, 8, 8, 5, 7, 7,
+         7, 7, 8, 8, 8,10, 8,10, 8, 9, 5, 7, 7, 8, 7, 7,
+         8,10,10,11,10,12,11, 7, 8, 8, 9, 9, 9,10,11,11,
+        11,11,11,11, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,
+        12, 7, 8, 8, 9, 9,10,11,11,12,11,12,11,11, 7, 8,
+         8, 9, 9,10,10,11,11,11,12,12,11, 8,10,10,10,10,
+        11,11,14,11,12,12,12,13, 9,10,10,10,10,12,11,14,
+        11,14,11,12,13,10,11,11,11,11,13,11,14,14,13,13,
+        13,14,11,11,11,12,11,12,12,12,13,14,14,13,14,12,
+        11,12,12,12,12,13,13,13,14,13,14,14,11,12,12,14,
+        12,13,13,12,13,13,14,14,14,
 };
 
-static float _vq_quantthresh__8u1__p8_1[] = {
-	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
-	3.5, 4.5, 
+static const static_codebook _44un1__p7_1 = {
+        2, 169,
+        (char *)_vq_lengthlist__44un1__p7_1,
+        1, -523010048, 1618608128, 4, 0,
+        (long *)_vq_quantlist__44un1__p7_1,
+        0
 };
 
-static long _vq_quantmap__8u1__p8_1[] = {
-	    9,    7,    5,    3,    1,    0,    2,    4,
-	    6,    8,   10,
+static const long _vq_quantlist__44un1__p7_2[] = {
+        6,
+        5,
+        7,
+        4,
+        8,
+        3,
+        9,
+        2,
+        10,
+        1,
+        11,
+        0,
+        12,
 };
 
-static encode_aux_threshmatch _vq_auxt__8u1__p8_1 = {
-	_vq_quantthresh__8u1__p8_1,
-	_vq_quantmap__8u1__p8_1,
-	11,
-	11
+static const char _vq_lengthlist__44un1__p7_2[] = {
+         3, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 8, 4, 5, 5,
+         6, 6, 8, 8, 9, 8, 9, 9, 9, 9, 4, 5, 5, 7, 6, 8,
+         8, 8, 8, 9, 8, 9, 8, 6, 7, 7, 7, 8, 8, 8, 9, 9,
+         9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+         9, 7, 8, 8, 8, 8, 9, 8, 9, 9,10, 9, 9,10, 7, 8,
+         8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 8, 9, 9, 9, 9,
+         9, 9, 9, 9,10,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9,
+         9, 9, 9,10,10, 9, 9, 9,10, 9, 9,10, 9, 9,10,10,
+        10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10, 9,
+         9, 9,10, 9, 9,10,10, 9,10,10,10,10, 9, 9, 9,10,
+         9, 9, 9,10,10,10,10,10,10,
 };
 
-static static_codebook _8u1__p8_1 = {
-	2, 121,
-	_vq_lengthlist__8u1__p8_1,
-	1, -531365888, 1611661312, 4, 0,
-	_vq_quantlist__8u1__p8_1,
-	NULL,
-	&_vq_auxt__8u1__p8_1,
-	NULL,
-	0
+static const static_codebook _44un1__p7_2 = {
+        2, 169,
+        (char *)_vq_lengthlist__44un1__p7_2,
+        1, -531103744, 1611661312, 4, 0,
+        (long *)_vq_quantlist__44un1__p7_2,
+        0
 };
 
-static long _vq_quantlist__8u1__p9_0[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
+static const char _huff_lengthlist__44un1__short[] = {
+        12,12,14,12,14,14,14,14,12, 6, 6, 8, 9, 9,11,14,
+        12, 4, 2, 6, 6, 7,11,14,13, 6, 5, 7, 8, 9,11,14,
+        13, 8, 5, 8, 6, 8,12,14,12, 7, 7, 8, 8, 8,10,14,
+        12, 6, 3, 4, 4, 4, 7,14,11, 7, 4, 6, 6, 6, 8,14,
 };
 
-static long _vq_lengthlist__8u1__p9_0[] = {
-	 1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3,
-	11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9,
-	 9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-	11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__8u1__p9_0[] = {
-	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
-	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
-};
-
-static long _vq_quantmap__8u1__p9_0[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p9_0 = {
-	_vq_quantthresh__8u1__p9_0,
-	_vq_quantmap__8u1__p9_0,
-	15,
-	15
-};
-
-static static_codebook _8u1__p9_0 = {
-	2, 225,
-	_vq_lengthlist__8u1__p9_0,
-	1, -514071552, 1627381760, 4, 0,
-	_vq_quantlist__8u1__p9_0,
-	NULL,
-	&_vq_auxt__8u1__p9_0,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p9_1[] = {
-	7,
-	6,
-	8,
-	5,
-	9,
-	4,
-	10,
-	3,
-	11,
-	2,
-	12,
-	1,
-	13,
-	0,
-	14,
-};
-
-static long _vq_lengthlist__8u1__p9_1[] = {
-	 1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4,
-	 7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7,
-	 7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9,
-	12,12,11,12,10,10,11,10,12,11,11,11, 7, 9, 9,11,
-	11,13,12, 9, 9,11,10,11,11,12,11, 9,10,10,12,12,
-	14,14,10,10,11,12,12,11,11,11, 9,10,11,11,13,14,
-	13,10,11,11,11,12,11,12,12, 7, 8, 8,10, 9,11,10,
-	11,12,12,11,12,14,12,13, 7, 8, 8, 9,10,10,11,12,
-	12,12,11,12,12,12,13, 9, 9, 9,11,11,13,12,12,12,
-	12,11,12,12,13,12, 8,10,10,11,10,11,12,12,12,12,
-	12,12,14,12,12, 9,11,11,11,12,12,12,12,13,13,12,
-	12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,
-	12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,
-	12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,
-	13,
-};
-
-static float _vq_quantthresh__8u1__p9_1[] = {
-	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
-	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
-};
-
-static long _vq_quantmap__8u1__p9_1[] = {
-	   13,   11,    9,    7,    5,    3,    1,    0,
-	    2,    4,    6,    8,   10,   12,   14,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p9_1 = {
-	_vq_quantthresh__8u1__p9_1,
-	_vq_quantmap__8u1__p9_1,
-	15,
-	15
-};
-
-static static_codebook _8u1__p9_1 = {
-	2, 225,
-	_vq_lengthlist__8u1__p9_1,
-	1, -522338304, 1620115456, 4, 0,
-	_vq_quantlist__8u1__p9_1,
-	NULL,
-	&_vq_auxt__8u1__p9_1,
-	NULL,
-	0
-};
-
-static long _vq_quantlist__8u1__p9_2[] = {
-	8,
-	7,
-	9,
-	6,
-	10,
-	5,
-	11,
-	4,
-	12,
-	3,
-	13,
-	2,
-	14,
-	1,
-	15,
-	0,
-	16,
-};
-
-static long _vq_lengthlist__8u1__p9_2[] = {
-	 2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
-	 9,10,10, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
-	 9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9,10,10,10, 9,
-	10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
-	10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
-	10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
-	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
-	 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
-	10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,
-	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
-	10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-	10,
-};
-
-static float _vq_quantthresh__8u1__p9_2[] = {
-	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
-	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
-};
-
-static long _vq_quantmap__8u1__p9_2[] = {
-	   15,   13,   11,    9,    7,    5,    3,    1,
-	    0,    2,    4,    6,    8,   10,   12,   14,
-	   16,
-};
-
-static encode_aux_threshmatch _vq_auxt__8u1__p9_2 = {
-	_vq_quantthresh__8u1__p9_2,
-	_vq_quantmap__8u1__p9_2,
-	17,
-	17
-};
-
-static static_codebook _8u1__p9_2 = {
-	2, 289,
-	_vq_lengthlist__8u1__p9_2,
-	1, -529530880, 1611661312, 5, 0,
-	_vq_quantlist__8u1__p9_2,
-	NULL,
-	&_vq_auxt__8u1__p9_2,
-	NULL,
-	0
-};
-
-static long _huff_lengthlist__8u1__single[] = {
-	 4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7,
-	10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5,
-	 8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7,
-	11,15, 7, 5, 8, 6, 7, 5, 7, 6, 9,13,13, 9, 9, 8,
-	 6, 6, 5, 5, 9,14, 8, 6, 8, 6, 6, 4, 5, 3, 5,13,
-	 9, 9,11, 8,10, 7, 8, 4, 5,12,11,16,17,15,17,12,
-	13, 8, 8,15,
-};
-
-static static_codebook _huff_book__8u1__single = {
-	2, 100,
-	_huff_lengthlist__8u1__single,
-	0, 0, 0, 0, 0,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	0
+static const static_codebook _huff_book__44un1__short = {
+        2, 64,
+        (char *)_huff_lengthlist__44un1__short,
+        0, 0, 0, 0, 0,
+        NULL,
+        0
 };
 
--- a/sys/src/cmd/audio/libvorbis/codebook.c
+++ b/sys/src/cmd/audio/libvorbis/codebook.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c,v 1.39 2002/06/28 22:19:35 xiphmont Exp $
+ last mod: $Id: codebook.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -38,11 +38,11 @@
 
   /* pack the codewords.  There are two packings; length ordered and
      length random.  Decide between the two now. */
-  
+
   for(i=1;i<c->entries;i++)
     if(c->lengthlist[i-1]==0 || c->lengthlist[i]<c->lengthlist[i-1])break;
   if(i==c->entries)ordered=1;
-  
+
   if(ordered){
     /* length ordered.  We only need to say how many codewords of
        each length.  The actual codewords are generated
@@ -53,22 +53,22 @@
     oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */
 
     for(i=1;i<c->entries;i++){
-      long this=c->lengthlist[i];
-      long last=c->lengthlist[i-1];
+      char this=c->lengthlist[i];
+      char last=c->lengthlist[i-1];
       if(this>last){
-	for(j=last;j<this;j++){
-	  oggpack_write(opb,i-count,_ilog(c->entries-count));
-	  count=i;
-	}
+        for(j=last;j<this;j++){
+          oggpack_write(opb,i-count,ov_ilog(c->entries-count));
+          count=i;
+        }
       }
     }
-    oggpack_write(opb,i-count,_ilog(c->entries-count));
-    
+    oggpack_write(opb,i-count,ov_ilog(c->entries-count));
+
   }else{
     /* length random.  Again, we don't code the codeword itself, just
        the length.  This time, though, we have to encode each length */
     oggpack_write(opb,0,1);   /* unordered */
-    
+
     /* algortihmic mapping has use for 'unused entries', which we tag
        here.  The algorithmic mapping happens as usual, but the unused
        entry has no codeword. */
@@ -78,16 +78,16 @@
     if(i==c->entries){
       oggpack_write(opb,0,1); /* no unused entries */
       for(i=0;i<c->entries;i++)
-	oggpack_write(opb,c->lengthlist[i]-1,5);
+        oggpack_write(opb,c->lengthlist[i]-1,5);
     }else{
       oggpack_write(opb,1,1); /* we have unused entries; thus we tag */
       for(i=0;i<c->entries;i++){
-	if(c->lengthlist[i]==0){
-	  oggpack_write(opb,0,1);
-	}else{
-	  oggpack_write(opb,1,1);
-	  oggpack_write(opb,c->lengthlist[i]-1,5);
-	}
+        if(c->lengthlist[i]==0){
+          oggpack_write(opb,0,1);
+        }else{
+          oggpack_write(opb,1,1);
+          oggpack_write(opb,c->lengthlist[i]-1,5);
+        }
       }
     }
   }
@@ -102,37 +102,37 @@
   case 1:case 2:
     /* implicitly populated value mapping */
     /* explicitly populated value mapping */
-    
+
     if(!c->quantlist){
       /* no quantlist?  error */
       return(-1);
     }
-    
+
     /* values that define the dequantization */
     oggpack_write(opb,c->q_min,32);
     oggpack_write(opb,c->q_delta,32);
     oggpack_write(opb,c->q_quant-1,4);
     oggpack_write(opb,c->q_sequencep,1);
-    
+
     {
       int quantvals;
       switch(c->maptype){
       case 1:
-	/* a single column of (c->entries/c->dim) quantized values for
-	   building a full value list algorithmically (square lattice) */
-	quantvals=_book_maptype1_quantvals(c);
-	break;
+        /* a single column of (c->entries/c->dim) quantized values for
+           building a full value list algorithmically (square lattice) */
+        quantvals=_book_maptype1_quantvals(c);
+        break;
       case 2:
-	/* every value (c->entries*c->dim total) specified explicitly */
-	quantvals=c->entries*c->dim;
-	break;
+        /* every value (c->entries*c->dim total) specified explicitly */
+        quantvals=c->entries*c->dim;
+        break;
       default: /* NOT_REACHABLE */
-	quantvals=-1;
+        quantvals=-1;
       }
 
       /* quantized values */
       for(i=0;i<quantvals;i++)
-	oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
+        oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
 
     }
     break;
@@ -146,9 +146,9 @@
 
 /* unpacks a codebook from the packet buffer into the codebook struct,
    readies the codebook auxiliary structures for decode *************/
-int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
+static_codebook *vorbis_staticbook_unpack(oggpack_buffer *opb){
   long i,j;
-  memset(s,0,sizeof(*s));
+  static_codebook *s=_ogg_calloc(1,sizeof(*s));
   s->allocedp=1;
 
   /* make sure alignment is correct */
@@ -159,54 +159,68 @@
   s->entries=oggpack_read(opb,24);
   if(s->entries==-1)goto _eofout;
 
+  if(ov_ilog(s->dim)+ov_ilog(s->entries)>24)goto _eofout;
+
   /* codeword ordering.... length ordered or unordered? */
   switch((int)oggpack_read(opb,1)){
-  case 0:
+  case 0:{
+    long unused;
+    /* allocated but unused entries? */
+    unused=oggpack_read(opb,1);
+    if((s->entries*(unused?1:5)+7)>>3>opb->storage-oggpack_bytes(opb))
+      goto _eofout;
     /* unordered */
     s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
 
     /* allocated but unused entries? */
-    if(oggpack_read(opb,1)){
+    if(unused){
       /* yes, unused entries */
 
       for(i=0;i<s->entries;i++){
-	if(oggpack_read(opb,1)){
-	  long num=oggpack_read(opb,5);
-	  if(num==-1)goto _eofout;
-	  s->lengthlist[i]=num+1;
-	}else
-	  s->lengthlist[i]=0;
+        if(oggpack_read(opb,1)){
+          long num=oggpack_read(opb,5);
+          if(num==-1)goto _eofout;
+          s->lengthlist[i]=num+1;
+        }else
+          s->lengthlist[i]=0;
       }
     }else{
       /* all entries used; no tagging */
       for(i=0;i<s->entries;i++){
-	long num=oggpack_read(opb,5);
-	if(num==-1)goto _eofout;
-	s->lengthlist[i]=num+1;
+        long num=oggpack_read(opb,5);
+        if(num==-1)goto _eofout;
+        s->lengthlist[i]=num+1;
       }
     }
-    
+
     break;
+  }
   case 1:
     /* ordered */
     {
       long length=oggpack_read(opb,5)+1;
+      if(length==0)goto _eofout;
       s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
 
       for(i=0;i<s->entries;){
-	long num=oggpack_read(opb,_ilog(s->entries-i));
-	if(num==-1)goto _eofout;
-	for(j=0;j<num && i<s->entries;j++,i++)
-	  s->lengthlist[i]=length;
-	length++;
+        long num=oggpack_read(opb,ov_ilog(s->entries-i));
+        if(num==-1)goto _eofout;
+        if(length>32 || num>s->entries-i ||
+           (num>0 && (num-1)>>(length-1)>1)){
+          goto _errout;
+        }
+        if(length>32)goto _errout;
+        for(j=0;j<num;j++,i++)
+          s->lengthlist[i]=length;
+        length++;
       }
     }
     break;
   default:
     /* EOF */
-    return(-1);
+    goto _eofout;
   }
-  
+
   /* Do we have a mapping to unpack? */
   switch((s->maptype=oggpack_read(opb,4))){
   case 0:
@@ -220,23 +234,26 @@
     s->q_delta=oggpack_read(opb,32);
     s->q_quant=oggpack_read(opb,4)+1;
     s->q_sequencep=oggpack_read(opb,1);
+    if(s->q_sequencep==-1)goto _eofout;
 
     {
       int quantvals=0;
       switch(s->maptype){
       case 1:
-	quantvals=_book_maptype1_quantvals(s);
-	break;
+        quantvals=(s->dim==0?0:_book_maptype1_quantvals(s));
+        break;
       case 2:
-	quantvals=s->entries*s->dim;
-	break;
+        quantvals=s->entries*s->dim;
+        break;
       }
-      
+
       /* quantized values */
+      if(((quantvals*s->q_quant+7)>>3)>opb->storage-oggpack_bytes(opb))
+        goto _eofout;
       s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals);
       for(i=0;i<quantvals;i++)
-	s->quantlist[i]=oggpack_read(opb,s->q_quant);
-      
+        s->quantlist[i]=oggpack_read(opb,s->q_quant);
+
       if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout;
     }
     break;
@@ -245,51 +262,21 @@
   }
 
   /* all set */
-  return(0);
-  
+  return(s);
+
  _errout:
  _eofout:
-  vorbis_staticbook_clear(s);
-  return(-1); 
+  vorbis_staticbook_destroy(s);
+  return(NULL);
 }
 
 /* returns the number of bits ************************************************/
 int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
+  if(a<0 || a>=book->c->entries)return(0);
   oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
   return(book->c->lengthlist[a]);
 }
 
-/* One the encode side, our vector writers are each designed for a
-specific purpose, and the encoder is not flexible without modification:
-
-The LSP vector coder uses a single stage nearest-match with no
-interleave, so no step and no error return.  This is specced by floor0
-and doesn't change.
-
-Residue0 encoding interleaves, uses multiple stages, and each stage
-peels of a specific amount of resolution from a lattice (thus we want
-to match by threshold, not nearest match).  Residue doesn't *have* to
-be encoded that way, but to change it, one will need to add more
-infrastructure on the encode side (decode side is specced and simpler) */
-
-/* floor0 LSP (single stage, non interleaved, nearest match) */
-/* returns entry number and *modifies a* to the quantization value *****/
-int vorbis_book_errorv(codebook *book,float *a){
-  int dim=book->dim,k;
-  int best=_best(book,a,1);
-  for(k=0;k<dim;k++)
-    a[k]=(book->valuelist+best*dim)[k];
-  return(best);
-}
-
-/* returns the number of bits and *modifies a* to the quantization value *****/
-int vorbis_book_encodev(codebook *book,int best,float *a,oggpack_buffer *b){
-  int k,dim=book->dim;
-  for(k=0;k<dim;k++)
-    a[k]=(book->valuelist+best*dim)[k];
-  return(vorbis_book_encode(book,best,b));
-}
-
 /* the 'eliminate the decode tree' optimization actually requires the
    codewords to be MSb first, not LSb.  This is an annoying inelegancy
    (and one of the first places where carefully thought out design
@@ -310,7 +297,7 @@
   int  read=book->dec_maxlength;
   long lo,hi;
   long lok = oggpack_look(b,book->dec_firsttablen);
- 
+
   if (lok >= 0) {
     long entry = book->dec_firsttable[lok];
     if(entry&0x80000000UL){
@@ -325,6 +312,12 @@
     hi=book->used_entries;
   }
 
+  /* Single entry codebooks use a firsttablen of 1 and a
+     dec_maxlength of 1.  If a single-entry codebook gets here (due to
+     failure to read one bit above), the next look attempt will also
+     fail and we'll correctly kick out instead of trying to walk the
+     underformed tree */
+
   lok = oggpack_look(b, read);
 
   while(lok<0 && read>1)
@@ -337,10 +330,10 @@
 
     while(hi-lo>1){
       long p=(hi-lo)>>1;
-      long test=book->codelist[lo+p]>testword;    
+      long test=book->codelist[lo+p]>testword;
       lo+=p&(test-1);
       hi-=p&(-test);
-    }
+      }
 
     if(book->dec_codelengths[lo]<=read){
       oggpack_adv(b, book->dec_codelengths[lo]);
@@ -347,8 +340,9 @@
       return(lo);
     }
   }
-  
+
   oggpack_adv(b, read);
+
   return(-1);
 }
 
@@ -355,13 +349,13 @@
 /* Decode side is specced and easier, because we don't need to find
    matches using different criteria; we simply read and map.  There are
    two things we need to do 'depending':
-   
+
    We may need to support interleave.  We don't really, but it's
    convenient to do it here rather than rebuild the vector later.
 
    Cascades may be additive or multiplicitive; this is not inherent in
    the codebook, but set in the code using the codebook.  Like
-   interleaving, it's easiest to do it here.  
+   interleaving, it's easiest to do it here.
    addmul==0 -> declarative (set the value)
    addmul==1 -> additive
    addmul==2 -> multiplicitive */
@@ -368,253 +362,135 @@
 
 /* returns the [original, not compacted] entry number or -1 on eof *********/
 long vorbis_book_decode(codebook *book, oggpack_buffer *b){
-  long packed_entry=decode_packed_entry_number(book,b);
-  if(packed_entry>=0)
-    return(book->dec_index[packed_entry]);
-  
+  if(book->used_entries>0){
+    long packed_entry=decode_packed_entry_number(book,b);
+    if(packed_entry>=0)
+      return(book->dec_index[packed_entry]);
+  }
+
   /* if there's no dec_index, the codebook unpacking isn't collapsed */
-  return(packed_entry);
+  return(-1);
 }
 
 /* returns 0 on OK or -1 on eof *************************************/
+/* decode vector / dim granularity gaurding is done in the upper layer */
 long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
-  int step=n/book->dim;
-  long *entry = malloc(sizeof(*entry)*step);
-  float **t = malloc(sizeof(*t)*step);
-  int i,j,o;
+  if(book->used_entries>0){
+    int step=n/book->dim;
+    long *entry = malloc(sizeof(*entry)*step);
+    float **t = malloc(sizeof(*t)*step);
+    int i,j,o;
 
-  for (i = 0; i < step; i++) {
-    entry[i]=decode_packed_entry_number(book,b);
-    if(entry[i]==-1){
-      free(entry); free(t);
-      return(-1);
+    for (i = 0; i < step; i++) {
+      entry[i]=decode_packed_entry_number(book,b);
+      if(entry[i]==-1){
+        free(entry);
+        free(t);
+        return(-1);
+      }
+      t[i] = book->valuelist+entry[i]*book->dim;
     }
-    t[i] = book->valuelist+entry[i]*book->dim;
+    for(i=0,o=0;i<book->dim;i++,o+=step)
+      for (j=0;j<step;j++)
+        a[o+j]+=t[j][i];
+    free(entry);
+    free(t);
   }
-  for(i=0,o=0;i<book->dim;i++,o+=step)
-    for (j=0;j<step;j++)
-      a[o+j]+=t[j][i];
-
-  free(entry); free(t);
   return(0);
 }
 
+/* decode vector / dim granularity gaurding is done in the upper layer */
 long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
-  int i,j,entry;
-  float *t;
+  if(book->used_entries>0){
+    int i,j,entry;
+    float *t;
 
-  if(book->dim>8){
-    for(i=0;i<n;){
-      entry = decode_packed_entry_number(book,b);
-      if(entry==-1)return(-1);
-      t     = book->valuelist+entry*book->dim;
-      for (j=0;j<book->dim;)
-	a[i++]+=t[j++];
+    if(book->dim>8){
+      for(i=0;i<n;){
+        entry = decode_packed_entry_number(book,b);
+        if(entry==-1)return(-1);
+        t     = book->valuelist+entry*book->dim;
+        for (j=0;j<book->dim;)
+          a[i++]+=t[j++];
+      }
+    }else{
+      for(i=0;i<n;){
+        entry = decode_packed_entry_number(book,b);
+        if(entry==-1)return(-1);
+        t     = book->valuelist+entry*book->dim;
+        j=0;
+        switch((int)book->dim){
+        case 8:
+          a[i++]+=t[j++];
+        case 7:
+          a[i++]+=t[j++];
+        case 6:
+          a[i++]+=t[j++];
+        case 5:
+          a[i++]+=t[j++];
+        case 4:
+          a[i++]+=t[j++];
+        case 3:
+          a[i++]+=t[j++];
+        case 2:
+          a[i++]+=t[j++];
+        case 1:
+          a[i++]+=t[j++];
+        case 0:
+          break;
+        }
+      }
     }
-  }else{
+  }
+  return(0);
+}
+
+/* unlike the others, we guard against n not being an integer number
+   of <dim> internally rather than in the upper layer (called only by
+   floor0) */
+long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
+  if(book->used_entries>0){
+    int i,j,entry;
+    float *t;
+
     for(i=0;i<n;){
       entry = decode_packed_entry_number(book,b);
       if(entry==-1)return(-1);
       t     = book->valuelist+entry*book->dim;
-      j=0;
-      switch((int)book->dim){
-      case 8:
-	a[i++]+=t[j++];
-      case 7:
-	a[i++]+=t[j++];
-      case 6:
-	a[i++]+=t[j++];
-      case 5:
-	a[i++]+=t[j++];
-      case 4:
-	a[i++]+=t[j++];
-      case 3:
-	a[i++]+=t[j++];
-      case 2:
-	a[i++]+=t[j++];
-      case 1:
-	a[i++]+=t[j++];
-      case 0:
-	break;
+      for (j=0;i<n && j<book->dim;){
+        a[i++]=t[j++];
       }
     }
-  }    
-  return(0);
-}
+  }else{
+    int i;
 
-long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
-  int i,j,entry;
-  float *t;
-
-  for(i=0;i<n;){
-    entry = decode_packed_entry_number(book,b);
-    if(entry==-1)return(-1);
-    t     = book->valuelist+entry*book->dim;
-    for (j=0;j<book->dim;)
-      a[i++]=t[j++];
+    for(i=0;i<n;){
+      a[i++]=0.f;
+    }
   }
   return(0);
 }
 
 long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
-			      oggpack_buffer *b,int n){
+                              oggpack_buffer *b,int n){
+
   long i,j,entry;
   int chptr=0;
-
-  for(i=offset/ch;i<(offset+n)/ch;){
-    entry = decode_packed_entry_number(book,b);
-    if(entry==-1)return(-1);
-    {
-      const float *t = book->valuelist+entry*book->dim;
-      for (j=0;j<book->dim;j++){
-	a[chptr++][i]+=t[j];
-	if(chptr==ch){
-	  chptr=0;
-	  i++;
-	}
+  if(book->used_entries>0){
+    for(i=offset/ch;i<(offset+n)/ch;){
+      entry = decode_packed_entry_number(book,b);
+      if(entry==-1)return(-1);
+      {
+        const float *t = book->valuelist+entry*book->dim;
+        for (j=0;j<book->dim;j++){
+          a[chptr++][i]+=t[j];
+          if(chptr==ch){
+            chptr=0;
+            i++;
+          }
+        }
       }
     }
   }
   return(0);
 }
-
-#ifdef _V_SELFTEST
-/* Simple enough; pack a few candidate codebooks, unpack them.  Code a
-   number of vectors through (keeping track of the quantized values),
-   and decode using the unpacked book.  quantized version of in should
-   exactly equal out */
-
-#include <stdio.h>
-
-#include "vorbis/book/lsp20_0.vqh"
-#include "vorbis/book/res0a_13.vqh"
-#define TESTSIZE 40
-
-float test1[TESTSIZE]={
-  0.105939f,
-  0.215373f,
-  0.429117f,
-  0.587974f,
-
-  0.181173f,
-  0.296583f,
-  0.515707f,
-  0.715261f,
-
-  0.162327f,
-  0.263834f,
-  0.342876f,
-  0.406025f,
-
-  0.103571f,
-  0.223561f,
-  0.368513f,
-  0.540313f,
-
-  0.136672f,
-  0.395882f,
-  0.587183f,
-  0.652476f,
-
-  0.114338f,
-  0.417300f,
-  0.525486f,
-  0.698679f,
-
-  0.147492f,
-  0.324481f,
-  0.643089f,
-  0.757582f,
-
-  0.139556f,
-  0.215795f,
-  0.324559f,
-  0.399387f,
-
-  0.120236f,
-  0.267420f,
-  0.446940f,
-  0.608760f,
-
-  0.115587f,
-  0.287234f,
-  0.571081f,
-  0.708603f,
-};
-
-float test3[TESTSIZE]={
-  0,1,-2,3,4,-5,6,7,8,9,
-  8,-2,7,-1,4,6,8,3,1,-9,
-  10,11,12,13,14,15,26,17,18,19,
-  30,-25,-30,-1,-5,-32,4,3,-2,0};
-
-static_codebook *testlist[]={&_vq_book_lsp20_0,
-			     &_vq_book_res0a_13,NULL};
-float   *testvec[]={test1,test3};
-
-int main(){
-  oggpack_buffer write;
-  oggpack_buffer read;
-  long ptr=0,i;
-  oggpack_writeinit(&write);
-  
-  fprintf(stderr,"Testing codebook abstraction...:\n");
-
-  while(testlist[ptr]){
-    codebook c;
-    static_codebook s;
-    float *qv=alloca(sizeof(*qv)*TESTSIZE);
-    float *iv=alloca(sizeof(*iv)*TESTSIZE);
-    memcpy(qv,testvec[ptr],sizeof(*qv)*TESTSIZE);
-    memset(iv,0,sizeof(*iv)*TESTSIZE);
-
-    fprintf(stderr,"\tpacking/coding %ld... ",ptr);
-
-    /* pack the codebook, write the testvector */
-    oggpack_reset(&write);
-    vorbis_book_init_encode(&c,testlist[ptr]); /* get it into memory
-                                                  we can write */
-    vorbis_staticbook_pack(testlist[ptr],&write);
-    fprintf(stderr,"Codebook size %ld bytes... ",oggpack_bytes(&write));
-    for(i=0;i<TESTSIZE;i+=c.dim){
-      int best=_best(&c,qv+i,1);
-      vorbis_book_encodev(&c,best,qv+i,&write);
-    }
-    vorbis_book_clear(&c);
-    
-    fprintf(stderr,"OK.\n");
-    fprintf(stderr,"\tunpacking/decoding %ld... ",ptr);
-
-    /* transfer the write data to a read buffer and unpack/read */
-    oggpack_readinit(&read,oggpack_get_buffer(&write),oggpack_bytes(&write));
-    if(vorbis_staticbook_unpack(&read,&s)){
-      fprintf(stderr,"Error unpacking codebook.\n");
-      exit(1);
-    }
-    if(vorbis_book_init_decode(&c,&s)){
-      fprintf(stderr,"Error initializing codebook.\n");
-      exit(1);
-    }
-
-    for(i=0;i<TESTSIZE;i+=c.dim)
-      if(vorbis_book_decodev_set(&c,iv+i,&read,c.dim)==-1){
-	fprintf(stderr,"Error reading codebook test data (EOP).\n");
-	exit(1);
-      }
-    for(i=0;i<TESTSIZE;i++)
-      if(fabs(qv[i]-iv[i])>.000001){
-	fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n",
-		iv[i],qv[i],i);
-	exit(1);
-      }
-	  
-    fprintf(stderr,"OK\n");
-    ptr++;
-  }
-
-  /* The above is the trivial stuff; now try unquantizing a log scale codebook */
-
-  exit(0);
-}
-
-#endif
--- a/sys/src/cmd/audio/libvorbis/codebook.h
+++ b/sys/src/cmd/audio/libvorbis/codebook.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: basic shared codebook operations
- last mod: $Id: codebook.h,v 1.13 2002/06/28 22:19:35 xiphmont Exp $
+ last mod: $Id: codebook.h 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -34,14 +34,14 @@
 */
 
 typedef struct static_codebook{
-  long   dim;            /* codebook dimensions (elements per vector) */
-  long   entries;        /* codebook entries */
-  long  *lengthlist;     /* codeword lengths in bits */
+  long   dim;           /* codebook dimensions (elements per vector) */
+  long   entries;       /* codebook entries */
+  char  *lengthlist;    /* codeword lengths in bits */
 
   /* mapping ***************************************************************/
-  int    maptype;        /* 0=none
-			    1=implicitly populated values from map column 
-			    2=listed arbitrary values */
+  int    maptype;       /* 0=none
+                           1=implicitly populated values from map column
+                           2=listed arbitrary values */
 
   /* The below does a linear, single monotonic sequence mapping. */
   long     q_min;       /* packed 32 bit float; quant value 0 maps to minval */
@@ -50,52 +50,11 @@
   int      q_sequencep; /* bitflag */
 
   long     *quantlist;  /* map == 1: (int)(entries^(1/dim)) element column map
-			   map == 2: list of dim*entries quantized entry vals
-			*/
-
-  /* encode helpers ********************************************************/
-  struct encode_aux_nearestmatch *nearest_tree;
-  struct encode_aux_threshmatch  *thresh_tree;
-  struct encode_aux_pigeonhole  *pigeon_tree;
-
+                           map == 2: list of dim*entries quantized entry vals
+                        */
   int allocedp;
 } static_codebook;
 
-/* this structures an arbitrary trained book to quickly find the
-   nearest cell match */
-typedef struct encode_aux_nearestmatch{
-  /* pre-calculated partitioning tree */
-  long   *ptr0;
-  long   *ptr1;
-
-  long   *p;         /* decision points (each is an entry) */
-  long   *q;         /* decision points (each is an entry) */
-  long   aux;        /* number of tree entries */
-  long   alloc;       
-} encode_aux_nearestmatch;
-
-/* assumes a maptype of 1; encode side only, so that's OK */
-typedef struct encode_aux_threshmatch{
-  float *quantthresh;
-  long   *quantmap;
-  int     quantvals; 
-  int     threshvals; 
-} encode_aux_threshmatch;
-
-typedef struct encode_aux_pigeonhole{
-  float min;
-  float del;
-
-  int  mapentries;
-  int  quantvals;
-  long *pigeonmap;
-
-  long fittotal;
-  long *fitlist;
-  long *fitmap;
-  long *fitlength;
-} encode_aux_pigeonhole;
-
 typedef struct codebook{
   long dim;           /* codebook dimensions (elements per vector) */
   long entries;       /* codebook entries */
@@ -105,7 +64,7 @@
   /* for encode, the below are entry-ordered, fully populated */
   /* for decode, the below are ordered by bitreversed codeword and only
      used entries are populated */
-  float        *valuelist;  /* list of dim*entries actual entry values */  
+  float        *valuelist;  /* list of dim*entries actual entry values */
   ogg_uint32_t *codelist;   /* list of bitstream codewords for each entry */
 
   int          *dec_index;  /* only used if sparseness collapsed */
@@ -114,9 +73,12 @@
   int           dec_firsttablen;
   int           dec_maxlength;
 
+  /* The current encoder uses only centered, integer-only lattice books. */
+  int           quantvals;
+  int           minval;
+  int           delta;
 } codebook;
 
-extern void vorbis_staticbook_clear(static_codebook *b);
 extern void vorbis_staticbook_destroy(static_codebook *b);
 extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
 extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
@@ -127,7 +89,6 @@
 extern float _float32_unpack(long val);
 extern long   _float32_pack(float val);
 extern int  _best(codebook *book, float *a, int step);
-extern int _ilog(unsigned int v);
 extern long _book_maptype1_quantvals(const static_codebook *b);
 
 extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
@@ -137,23 +98,20 @@
 
 
 extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
-extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
+extern static_codebook *vorbis_staticbook_unpack(oggpack_buffer *b);
 
 extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
-extern int vorbis_book_errorv(codebook *book, float *a);
-extern int vorbis_book_encodev(codebook *book, int best,float *a, 
-			       oggpack_buffer *b);
 
 extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
-extern long vorbis_book_decodevs_add(codebook *book, float *a, 
-				     oggpack_buffer *b,int n);
-extern long vorbis_book_decodev_set(codebook *book, float *a, 
-				    oggpack_buffer *b,int n);
-extern long vorbis_book_decodev_add(codebook *book, float *a, 
-				    oggpack_buffer *b,int n);
+extern long vorbis_book_decodevs_add(codebook *book, float *a,
+                                     oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_set(codebook *book, float *a,
+                                    oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_add(codebook *book, float *a,
+                                    oggpack_buffer *b,int n);
 extern long vorbis_book_decodevv_add(codebook *book, float **a,
-				     long off,int ch, 
-				    oggpack_buffer *b,int n);
+                                     long off,int ch,
+                                    oggpack_buffer *b,int n);
 
 
 
--- a/sys/src/cmd/audio/libvorbis/codec_internal.h
+++ b/sys/src/cmd/audio/libvorbis/codec_internal.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: libvorbis codec headers
- last mod: $Id: codec_internal.h,v 1.15 2002/06/28 22:19:35 xiphmont Exp $
+ last mod: $Id: codec_internal.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -23,17 +23,20 @@
 
 #define BLOCKTYPE_IMPULSE    0
 #define BLOCKTYPE_PADDING    1
-#define BLOCKTYPE_TRANSITION 0 
+#define BLOCKTYPE_TRANSITION 0
 #define BLOCKTYPE_LONG       1
 
 #define PACKETBLOBS 15
 
 typedef struct vorbis_block_internal{
-  float  **pcmdelay;  /* this is a pointer into local storage */ 
+  float  **pcmdelay;  /* this is a pointer into local storage */
   float  ampmax;
   int    blocktype;
 
-  ogg_uint32_t   packetblob_markers[PACKETBLOBS];
+  oggpack_buffer *packetblob[PACKETBLOBS]; /* initialized, must be freed;
+                                              blob [PACKETBLOBS/2] points to
+                                              the oggpack_buffer in the
+                                              main vorbis_block */
 } vorbis_block_internal;
 
 typedef void vorbis_look_floor;
@@ -55,10 +58,10 @@
 #include "psy.h"
 #include "bitrate.h"
 
-typedef struct backend_lookup_state {
+typedef struct private_state {
   /* local lookup storage */
-  envelope_lookup        *ve; /* envelope lookup */    
-  float                  *window[2];
+  envelope_lookup        *ve; /* envelope lookup */
+  int                     window[2];
   vorbis_look_transform **transform[2];    /* block, type */
   drft_lookup             fft_look[2];
 
@@ -78,12 +81,13 @@
 
   bitrate_manager_state bms;
 
-} backend_lookup_state;
+  ogg_int64_t sample_count;
+} private_state;
 
 /* codec_setup_info contains all the setup information specific to the
    specific compression/decompression mode in progress (eg,
    psychoacoustic settings, channel setup, options, codebook
-   etc).  
+   etc).
 *********************************************************************/
 
 #include "highlevel.h"
@@ -123,11 +127,41 @@
   highlevel_encode_setup hi; /* used only by vorbisenc.c.  It's a
                                 highly redundant structure, but
                                 improves clarity of program flow. */
-  
+  int         halfrate_flag; /* painless downsample for decode */
 } codec_setup_info;
 
 extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
 extern void _vp_global_free(vorbis_look_psy_global *look);
 
-#endif
 
+
+typedef struct {
+  int sorted_index[VIF_POSIT+2];
+  int forward_index[VIF_POSIT+2];
+  int reverse_index[VIF_POSIT+2];
+
+  int hineighbor[VIF_POSIT];
+  int loneighbor[VIF_POSIT];
+  int posts;
+
+  int n;
+  int quant_q;
+  vorbis_info_floor1 *vi;
+
+  long phrasebits;
+  long postbits;
+  long frames;
+} vorbis_look_floor1;
+
+
+
+extern int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
+                          const float *logmdct,   /* in */
+                          const float *logmask);
+extern int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
+                          int *A,int *B,
+                          int del);
+extern int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
+                  vorbis_look_floor1 *look,
+                  int *post,int *ilogmask);
+#endif
--- a/sys/src/cmd/audio/libvorbis/envelope.c
+++ b/sys/src/cmd/audio/libvorbis/envelope.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: PCM data envelope analysis 
- last mod: $Id: envelope.c,v 1.52 2002/07/13 10:18:33 giles Exp $
+ function: PCM data envelope analysis
+ last mod: $Id: envelope.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -67,7 +67,7 @@
     }
     e->band[j].total=1./e->band[j].total;
   }
-  
+
   e->filter=_ogg_calloc(VE_BANDS*ch,sizeof(*e->filter));
   e->mark=_ogg_calloc(e->storage,sizeof(*e->mark));
 
@@ -88,11 +88,10 @@
    that works better and isn't patented. */
 
 static int _ve_amp(envelope_lookup *ve,
-		   vorbis_info_psy_global *gi,
-		   float *data,
-		   envelope_band *bands,
-		   envelope_filter_state *filters,
-		   long pos){
+                   vorbis_info_psy_global *gi,
+                   float *data,
+                   envelope_band *bands,
+                   envelope_filter_state *filters){
   long n=ve->winlength;
   int ret=0;
   long i,j;
@@ -114,7 +113,7 @@
 
   /*_analysis_output_always("lpcm",seq2,data,n,0,0,
     totalshift+pos*ve->searchstep);*/
-  
+
  /* window and transform */
   for(i=0;i<n;i++)
     vec[i]=data[i]*ve->mdct_win[i];
@@ -168,7 +167,7 @@
     /* accumulate amplitude */
     for(i=0;i<bands[j].end;i++)
       acc+=vec[i+bands[j].begin]*bands[j].window[i];
-   
+
     acc*=bands[j].total;
 
     /* convert amplitude to delta */
@@ -175,20 +174,20 @@
     {
       int p,this=filters[j].ampptr;
       float postmax,postmin,premax=-99999.f,premin=99999.f;
-      
+
       p=this;
       p--;
       if(p<0)p+=VE_AMP;
       postmax=max(acc,filters[j].ampbuf[p]);
       postmin=min(acc,filters[j].ampbuf[p]);
-      
+
       for(i=0;i<stretch;i++){
-	p--;
-	if(p<0)p+=VE_AMP;
-	premax=max(premax,filters[j].ampbuf[p]);
-	premin=min(premin,filters[j].ampbuf[p]);
+        p--;
+        if(p<0)p+=VE_AMP;
+        premax=max(premax,filters[j].ampbuf[p]);
+        premin=min(premin,filters[j].ampbuf[p]);
       }
-      
+
       valmin=postmin-premin;
       valmax=postmax-premax;
 
@@ -205,6 +204,7 @@
     }
     if(valmin<gi->postecho_thresh[j]-penalty)ret|=2;
   }
+
   free(vec);
   return(ret);
 }
@@ -218,7 +218,7 @@
   vorbis_info *vi=v->vi;
   codec_setup_info *ci=vi->codec_setup;
   vorbis_info_psy_global *gi=&ci->psy_g_param;
-  envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve;
+  envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
   long i,j;
 
   int first=ve->current/ve->searchstep;
@@ -230,6 +230,7 @@
     ve->storage=last+VE_WIN+VE_POST; /* be sure */
     ve->mark=_ogg_realloc(ve->mark,ve->storage*sizeof(*ve->mark));
   }
+
   for(j=first;j<last;j++){
     int ret=0;
 
@@ -236,10 +237,10 @@
     ve->stretch++;
     if(ve->stretch>VE_MAXSTRETCH*2)
       ve->stretch=VE_MAXSTRETCH*2;
-    
+
     for(i=0;i<ve->ch;i++){
       float *pcm=v->pcm[i]+ve->searchstep*(j);
-      ret|=_ve_amp(ve,gi,pcm,ve->band,ve->filter+i*VE_BANDS,j);
+      ret|=_ve_amp(ve,gi,pcm,ve->band,ve->filter+i*VE_BANDS);
     }
 
     ve->mark[j+VE_POST]=0;
@@ -265,70 +266,70 @@
       ci->blocksizes[v->W]/4+
       ci->blocksizes[1]/2+
       ci->blocksizes[0]/4;
-    
+
     j=ve->cursor;
-    
+
     while(j<ve->current-(ve->searchstep)){/* account for postecho
                                              working back one window */
       if(j>=testW)return(1);
- 
+
       ve->cursor=j;
 
       if(ve->mark[j/ve->searchstep]){
-	if(j>centerW){
+        if(j>centerW){
 
 #if 0
-	  if(j>ve->curmark){
-	    float *marker=alloca(v->pcm_current*sizeof(*marker));
-	    int l,m;
-	    memset(marker,0,sizeof(*marker)*v->pcm_current);
-	    fprintf(stderr,"mark! seq=%d, cursor:%fs time:%fs\n",
-		    seq,
-		    (totalshift+ve->cursor)/44100.,
-		    (totalshift+j)/44100.);
-	    _analysis_output_always("pcmL",seq,v->pcm[0],v->pcm_current,0,0,totalshift);
-	    _analysis_output_always("pcmR",seq,v->pcm[1],v->pcm_current,0,0,totalshift);
+          if(j>ve->curmark){
+            float *marker=alloca(v->pcm_current*sizeof(*marker));
+            int l,m;
+            memset(marker,0,sizeof(*marker)*v->pcm_current);
+            fprintf(stderr,"mark! seq=%d, cursor:%fs time:%fs\n",
+                    seq,
+                    (totalshift+ve->cursor)/44100.,
+                    (totalshift+j)/44100.);
+            _analysis_output_always("pcmL",seq,v->pcm[0],v->pcm_current,0,0,totalshift);
+            _analysis_output_always("pcmR",seq,v->pcm[1],v->pcm_current,0,0,totalshift);
 
-	    _analysis_output_always("markL",seq,v->pcm[0],j,0,0,totalshift);
-	    _analysis_output_always("markR",seq,v->pcm[1],j,0,0,totalshift);
-	    
-	    for(m=0;m<VE_BANDS;m++){
-	      char buf[80];
-	      sprintf(buf,"delL%d",m);
-	      for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m].markers[l]*.1;
-	      _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
-	    }
+            _analysis_output_always("markL",seq,v->pcm[0],j,0,0,totalshift);
+            _analysis_output_always("markR",seq,v->pcm[1],j,0,0,totalshift);
 
-	    for(m=0;m<VE_BANDS;m++){
-	      char buf[80];
-	      sprintf(buf,"delR%d",m);
-	      for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m+VE_BANDS].markers[l]*.1;
-	      _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
-	    }
+            for(m=0;m<VE_BANDS;m++){
+              char buf[80];
+              sprintf(buf,"delL%d",m);
+              for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m].markers[l]*.1;
+              _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
+            }
 
-	    for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->mark[l]*.4;
-	    _analysis_output_always("mark",seq,marker,v->pcm_current,0,0,totalshift);
-	   
-	    
-	    seq++;
-	    
-	  }
+            for(m=0;m<VE_BANDS;m++){
+              char buf[80];
+              sprintf(buf,"delR%d",m);
+              for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m+VE_BANDS].markers[l]*.1;
+              _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
+            }
+
+            for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->mark[l]*.4;
+            _analysis_output_always("mark",seq,marker,v->pcm_current,0,0,totalshift);
+
+
+            seq++;
+
+          }
 #endif
 
-	  ve->curmark=j;
-	  if(j>=testW)return(1);
-	  return(0);
-	}
+          ve->curmark=j;
+          if(j>=testW)return(1);
+          return(0);
+        }
       }
       j+=ve->searchstep;
     }
   }
-  
+
   return(-1);
 }
 
 int _ve_envelope_mark(vorbis_dsp_state *v){
-  envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve;
+  envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
   vorbis_info *vi=v->vi;
   codec_setup_info *ci=vi->codec_setup;
   long centerW=v->centerW;
@@ -355,19 +356,18 @@
 
 void _ve_envelope_shift(envelope_lookup *e,long shift){
   int smallsize=e->current/e->searchstep+VE_POST; /* adjust for placing marks
-						     ahead of ve->current */
+                                                     ahead of ve->current */
   int smallshift=shift/e->searchstep;
-  int i;
 
   memmove(e->mark,e->mark+smallshift,(smallsize-smallshift)*sizeof(*e->mark));
-  
-  #if 0
+
+#if 0
   for(i=0;i<VE_BANDS*e->ch;i++)
     memmove(e->filter[i].markers,
-	    e->filter[i].markers+smallshift,
-	    (1024-smallshift)*sizeof(*(*e->filter).markers));
+            e->filter[i].markers+smallshift,
+            (1024-smallshift)*sizeof(*(*e->filter).markers));
   totalshift+=shift;
-  #endif 
+#endif
 
   e->current-=shift;
   if(e->curmark>=0)
@@ -374,9 +374,3 @@
     e->curmark-=shift;
   e->cursor-=shift;
 }
-
-
-
-
-
-
--- a/sys/src/cmd/audio/libvorbis/envelope.h
+++ b/sys/src/cmd/audio/libvorbis/envelope.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: PCM data envelope analysis and manipulation
- last mod: $Id: envelope.h,v 1.25 2002/07/11 06:40:48 xiphmont Exp $
+ last mod: $Id: envelope.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -78,4 +78,3 @@
 
 
 #endif
-
--- a/sys/src/cmd/audio/libvorbis/floor0.c
+++ b/sys/src/cmd/audio/libvorbis/floor0.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: floor backend 0 implementation
- last mod: $Id: floor0.c,v 1.53 2002/07/17 21:34:31 xiphmont Exp $
+ last mod: $Id: floor0.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -39,8 +39,6 @@
   int  n[2];
 
   vorbis_info_floor0 *vi;
-  lpc_lookup lpclook;
-  float *lsp_look;
 
   long bits;
   long frames;
@@ -68,8 +66,6 @@
 
       _ogg_free(look->linearmap);
     }
-    if(look->lsp_look)_ogg_free(look->lsp_look);
-    lpc_clear(&look->lpclook);
     memset(look,0,sizeof(*look));
     _ogg_free(look);
   }
@@ -86,15 +82,17 @@
   info->ampbits=oggpack_read(opb,6);
   info->ampdB=oggpack_read(opb,8);
   info->numbooks=oggpack_read(opb,4)+1;
-  
+
   if(info->order<1)goto err_out;
   if(info->rate<1)goto err_out;
   if(info->barkmap<1)goto err_out;
   if(info->numbooks<1)goto err_out;
-    
+
   for(j=0;j<info->numbooks;j++){
     info->books[j]=oggpack_read(opb,8);
     if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
+    if(ci->book_param[info->books[j]]->maptype==0)goto err_out;
+    if(ci->book_param[info->books[j]]->dim<1)goto err_out;
   }
   return(info);
 
@@ -112,8 +110,8 @@
    linear block and mapping sizes */
 
 static void floor0_map_lazy_init(vorbis_block      *vb,
-				 vorbis_info_floor *infoX,
-				 vorbis_look_floor0 *look){
+                                 vorbis_info_floor *infoX,
+                                 vorbis_look_floor0 *look){
   if(!look->linearmap[vb->W]){
     vorbis_dsp_state   *vd=vb->vd;
     vorbis_info        *vi=vd->vi;
@@ -126,7 +124,7 @@
        floor(bark(rate/2-1)*C)=mapped-1
      floor(bark(rate/2)*C)=mapped */
     float scale=look->ln/toBARK(info->rate/2.f);
-    
+
     /* the mapping from a linear scale to a smaller bark scale is
        straightforward.  We do *not* make sure that the linear mapping
        does not skip bark-scale bins; the decoder simply skips them and
@@ -135,8 +133,8 @@
        accurate */
     look->linearmap[W]=_ogg_malloc((n+1)*sizeof(**look->linearmap));
     for(j=0;j<n;j++){
-      int val=floor( toBARK((info->rate/2.f)/n*j) 
-		     *scale); /* bark numbers represent band edges */
+      int val=floor( toBARK((info->rate/2.f)/n*j)
+                     *scale); /* bark numbers represent band edges */
       if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
       look->linearmap[W][j]=val;
     }
@@ -146,23 +144,18 @@
 }
 
 static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd,
-				      vorbis_info_floor *i){
-  int j;
+                                      vorbis_info_floor *i){
   vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
   vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look));
+
+  (void)vd;
+
   look->m=info->order;
   look->ln=info->barkmap;
   look->vi=info;
 
-  if(vd->analysisp)
-    lpc_init(&look->lpclook,look->ln,look->m);
-
   look->linearmap=_ogg_calloc(2,sizeof(*look->linearmap));
 
-  look->lsp_look=_ogg_malloc(look->ln*sizeof(*look->lsp_look));
-  for(j=0;j<look->ln;j++)
-    look->lsp_look[j]=2*cos(M_PI/look->ln*j);
-
   return look;
 }
 
@@ -175,8 +168,8 @@
   if(ampraw>0){ /* also handles the -1 out of data case */
     long maxval=(1<<info->ampbits)-1;
     float amp=(float)ampraw/maxval*info->ampdB;
-    int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
-    
+    int booknum=oggpack_read(&vb->opb,ov_ilog(info->numbooks));
+
     if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
       codec_setup_info  *ci=vb->vd->vi->codec_setup;
       codebook *b=ci->fullbooks+info->books[booknum];
@@ -186,14 +179,13 @@
          smash; b->dim is provably more than we can overflow the
          vector */
       float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1));
-            
-      for(j=0;j<look->m;j+=b->dim)
-	if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop;
+
+      if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m)==-1)goto eop;
       for(j=0;j<look->m;){
-	for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
-	last=lsp[j-1];
+        for(k=0;j<look->m && k<b->dim;k++,j++)lsp[j]+=last;
+        last=lsp[j-1];
       }
-      
+
       lsp[look->m]=amp;
       return(lsp);
     }
@@ -203,10 +195,10 @@
 }
 
 static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
-			   void *memo,float *out){
+                           void *memo,float *out){
   vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
   vorbis_info_floor0 *info=look->vi;
-  
+
   floor0_map_lazy_init(vb,info,look);
 
   if(memo){
@@ -215,10 +207,10 @@
 
     /* take the coefficients back to a spectral envelope curve */
     vorbis_lsp_to_curve(out,
-			look->linearmap[vb->W],
-			look->n[vb->W],
-			look->ln,
-			lsp,look->m,amp,(float)info->ampdB);
+                        look->linearmap[vb->W],
+                        look->n[vb->W],
+                        look->ln,
+                        lsp,look->m,amp,(float)info->ampdB);
     return(1);
   }
   memset(out,0,sizeof(*out)*look->n[vb->W]);
@@ -226,10 +218,7 @@
 }
 
 /* export hooks */
-vorbis_func_floor floor0_exportbundle={
+const vorbis_func_floor floor0_exportbundle={
   NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
   &floor0_free_look,&floor0_inverse1,&floor0_inverse2
 };
-
-
-
--- a/sys/src/cmd/audio/libvorbis/floor1.c
+++ b/sys/src/cmd/audio/libvorbis/floor1.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: floor backend 1 implementation
- last mod: $Id: floor1.c,v 1.24 2002/07/18 01:41:59 xiphmont Exp $
+ last mod: $Id: floor1.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -30,39 +30,27 @@
 
 #define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */
 
-typedef struct {
-  int sorted_index[VIF_POSIT+2];
-  int forward_index[VIF_POSIT+2];
-  int reverse_index[VIF_POSIT+2];
-  
-  int hineighbor[VIF_POSIT];
-  int loneighbor[VIF_POSIT];
-  int posts;
-
-  int n;
-  int quant_q;
-  vorbis_info_floor1 *vi;
-
-  long phrasebits;
-  long postbits;
-  long frames;
-} vorbis_look_floor1;
-
 typedef struct lsfit_acc{
-  long x0;
-  long x1;
+  int x0;
+  int x1;
 
-  long xa;
-  long ya;
-  long x2a;
-  long y2a;
-  long xya; 
-  long n;
-  long an;
+  int xa;
+  int ya;
+  int x2a;
+  int y2a;
+  int xya;
+  int an;
+
+  int xb;
+  int yb;
+  int x2b;
+  int y2b;
+  int xyb;
+  int bn;
 } lsfit_acc;
 
 /***********************************************/
- 
+
 static void floor1_free_info(vorbis_info_floor *i){
   vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
   if(info){
@@ -75,9 +63,9 @@
   vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
   if(look){
     /*fprintf(stderr,"floor 1 bit usage %f:%f (%f total)\n",
-	    (float)look->phrasebits/look->frames,
-	    (float)look->postbits/look->frames,
-	    (float)(look->postbits+look->phrasebits)/look->frames);*/
+            (float)look->phrasebits/look->frames,
+            (float)look->postbits/look->frames,
+            (float)(look->postbits+look->phrasebits)/look->frames);*/
 
     memset(look,0,sizeof(*look));
     _ogg_free(look);
@@ -84,25 +72,6 @@
   }
 }
 
-static int ilog(unsigned int v){
-  int ret=0;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
-
-static int ilog2(unsigned int v){
-  int ret=0;
-  if(v)--v;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
-
 static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){
   vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
   int j,k;
@@ -128,17 +97,22 @@
   }
 
   /* save out the post list */
-  oggpack_write(opb,info->mult-1,2);     /* only 1,2,3,4 legal now */ 
-  oggpack_write(opb,ilog2(maxposit),4);
-  rangebits=ilog2(maxposit);
+  oggpack_write(opb,info->mult-1,2);     /* only 1,2,3,4 legal now */
+  /* maxposit cannot legally be less than 1; this is encode-side, we
+     can assume our setup is OK */
+  oggpack_write(opb,ov_ilog(maxposit-1),4);
+  rangebits=ov_ilog(maxposit-1);
 
   for(j=0,k=0;j<info->partitions;j++){
-    count+=info->class_dim[info->partitionclass[j]]; 
+    count+=info->class_dim[info->partitionclass[j]];
     for(;k<count;k++)
       oggpack_write(opb,info->postlist[k+2],rangebits);
   }
 }
 
+static int icomp(const void *a,const void *b){
+  return(**(int **)a-**(int **)b);
+}
 
 static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){
   codec_setup_info     *ci=vi->codec_setup;
@@ -149,6 +123,7 @@
   info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */
   for(j=0;j<info->partitions;j++){
     info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */
+    if(info->partitionclass[j]<0)goto err_out;
     if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
   }
 
@@ -164,38 +139,47 @@
     for(k=0;k<(1<<info->class_subs[j]);k++){
       info->class_subbook[j][k]=oggpack_read(opb,8)-1;
       if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books)
-	goto err_out;
+        goto err_out;
     }
   }
 
   /* read the post list */
-  info->mult=oggpack_read(opb,2)+1;     /* only 1,2,3,4 legal now */ 
+  info->mult=oggpack_read(opb,2)+1;     /* only 1,2,3,4 legal now */
   rangebits=oggpack_read(opb,4);
+  if(rangebits<0)goto err_out;
 
   for(j=0,k=0;j<info->partitions;j++){
-    count+=info->class_dim[info->partitionclass[j]]; 
+    count+=info->class_dim[info->partitionclass[j]];
+    if(count>VIF_POSIT) goto err_out;
     for(;k<count;k++){
       int t=info->postlist[k+2]=oggpack_read(opb,rangebits);
       if(t<0 || t>=(1<<rangebits))
-	goto err_out;
+        goto err_out;
     }
   }
   info->postlist[0]=0;
   info->postlist[1]=1<<rangebits;
 
+  /* don't allow repeated values in post list as they'd result in
+     zero-length segments */
+  {
+    int *sortpointer[VIF_POSIT+2];
+    for(j=0;j<count+2;j++)sortpointer[j]=info->postlist+j;
+    qsort(sortpointer,count+2,sizeof(*sortpointer),icomp);
+
+    for(j=1;j<count+2;j++)
+      if(*sortpointer[j-1]==*sortpointer[j])goto err_out;
+  }
+
   return(info);
-  
+
  err_out:
   floor1_free_info(info);
   return(NULL);
 }
 
-static int icomp(const void *a,const void *b){
-  return(**(int **)a-**(int **)b);
-}
-
 static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,
-				      vorbis_info_floor *in){
+                                      vorbis_info_floor *in){
 
   int *sortpointer[VIF_POSIT+2];
   vorbis_info_floor1 *info=(vorbis_info_floor1 *)in;
@@ -202,9 +186,11 @@
   vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look));
   int i,j,n=0;
 
+  (void)vd;
+
   look->vi=info;
   look->n=info->postlist[1];
- 
+
   /* we drop each position value in-between already decoded values,
      and use linear interpolation to predict each new value past the
      edges.  The positions are read in the order of the position
@@ -226,7 +212,7 @@
   for(i=0;i<n;i++)look->reverse_index[look->forward_index[i]]=i;
   /* we actually need the post values too */
   for(i=0;i<n;i++)look->sorted_index[i]=info->postlist[look->forward_index[i]];
-  
+
   /* quantize values to multiplier spec */
   switch(info->mult){
   case 1: /* 1024 -> 256 */
@@ -254,12 +240,12 @@
     for(j=0;j<i+2;j++){
       int x=info->postlist[j];
       if(x>lx && x<currentx){
-	lo=j;
-	lx=x;
+        lo=j;
+        lx=x;
       }
       if(x<hx && x>currentx){
-	hi=j;
-	hx=x;
+        hi=j;
+        hx=x;
       }
     }
     look->loneighbor[i]=lo;
@@ -272,13 +258,13 @@
 static int render_point(int x0,int x1,int y0,int y1,int x){
   y0&=0x7fff; /* mask off flag */
   y1&=0x7fff;
-    
+
   {
     int dy=y1-y0;
     int adx=x1-x0;
     int ady=abs(dy);
     int err=ady*(x-x0);
-    
+
     int off=err/adx;
     if(dy<0)return(y0-off);
     return(y0+off);
@@ -292,74 +278,74 @@
   return i;
 }
 
-static float FLOOR1_fromdB_LOOKUP[256]={
-  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F, 
-  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F, 
-  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F, 
-  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F, 
-  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F, 
-  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F, 
-  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F, 
-  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F, 
-  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F, 
-  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F, 
-  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F, 
-  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F, 
-  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F, 
-  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F, 
-  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F, 
-  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F, 
-  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F, 
-  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F, 
-  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F, 
-  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F, 
-  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F, 
-  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F, 
-  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F, 
-  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F, 
-  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F, 
-  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F, 
-  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F, 
-  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F, 
-  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F, 
-  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F, 
-  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F, 
-  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F, 
-  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F, 
-  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F, 
-  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F, 
-  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F, 
-  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F, 
-  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 
-  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 
-  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 
-  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F, 
-  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F, 
-  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F, 
-  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F, 
-  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F, 
-  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F, 
-  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 
-  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F, 
-  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F, 
-  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F, 
-  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F, 
-  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F, 
-  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F, 
-  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F, 
-  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F, 
-  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 
-  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F, 
-  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F, 
-  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F, 
-  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F, 
-  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F, 
-  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F, 
-  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F, 
-  0.82788260F, 0.88168307F, 0.9389798F, 1.F, 
+static const float FLOOR1_fromdB_LOOKUP[256]={
+  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
+  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
+  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
+  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
+  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
+  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
+  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
+  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
+  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
+  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
+  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
+  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
+  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
+  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
+  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
+  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
+  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
+  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
+  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
+  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
+  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
+  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
+  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
+  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
+  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
+  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
+  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
+  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
+  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
+  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
+  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
+  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
+  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
+  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
+  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
+  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
+  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
+  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
+  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
+  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
+  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
+  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
+  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
+  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
+  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
+  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
+  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
+  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
+  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
+  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
+  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
+  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
+  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
+  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
+  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
+  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
+  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
+  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
+  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
+  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
+  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
+  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
+  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
+  0.82788260F, 0.88168307F, 0.9389798F, 1.F,
 };
 
-static void render_line(int x0,int x1,int y0,int y1,float *d){
+static void render_line(int n, int x0,int x1,int y0,int y1,float *d){
   int dy=y1-y0;
   int adx=x1-x0;
   int ady=abs(dy);
@@ -371,8 +357,12 @@
 
   ady-=abs(base*adx);
 
-  d[x]*=FLOOR1_fromdB_LOOKUP[y];
-  while(++x<x1){
+  if(n>x1)n=x1;
+
+  if(x<n)
+    d[x]*=FLOOR1_fromdB_LOOKUP[y];
+
+  while(++x<n){
     err=err+ady;
     if(err>=adx){
       err-=adx;
@@ -384,7 +374,7 @@
   }
 }
 
-static void render_line0(int x0,int x1,int y0,int y1,int *d){
+static void render_line0(int n, int x0,int x1,int y0,int y1,int *d){
   int dy=y1-y0;
   int adx=x1-x0;
   int ady=abs(dy);
@@ -396,8 +386,12 @@
 
   ady-=abs(base*adx);
 
-  d[x]=y;
-  while(++x<x1){
+  if(n>x1)n=x1;
+
+  if(x<n)
+    d[x]=y;
+
+  while(++x<n){
     err=err+ady;
     if(err>=adx){
       err-=adx;
@@ -411,12 +405,11 @@
 
 /* the floor has already been filtered to only include relevant sections */
 static int accumulate_fit(const float *flr,const float *mdct,
-			  int x0, int x1,lsfit_acc *a,
-			  int n,vorbis_info_floor1 *info){
+                          int x0, int x1,lsfit_acc *a,
+                          int n,vorbis_info_floor1 *info){
   long i;
-  int quantized=vorbis_dBquant(flr+x0);
 
-  long xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
+  int xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
 
   memset(a,0,sizeof(*a));
   a->x0=x0;
@@ -427,115 +420,103 @@
     int quantized=vorbis_dBquant(flr+i);
     if(quantized){
       if(mdct[i]+info->twofitatten>=flr[i]){
-	xa  += i;
-	ya  += quantized;
-	x2a += i*i;
-	y2a += quantized*quantized;
-	xya += i*quantized;
-	na++;
+        xa  += i;
+        ya  += quantized;
+        x2a += i*i;
+        y2a += quantized*quantized;
+        xya += i*quantized;
+        na++;
       }else{
-	xb  += i;
-	yb  += quantized;
-	x2b += i*i;
-	y2b += quantized*quantized;
-	xyb += i*quantized;
-	nb++;
+        xb  += i;
+        yb  += quantized;
+        x2b += i*i;
+        y2b += quantized*quantized;
+        xyb += i*quantized;
+        nb++;
       }
     }
   }
 
-  xb+=xa;
-  yb+=ya;
-  x2b+=x2a;
-  y2b+=y2a;
-  xyb+=xya;
-  nb+=na;
+  a->xa=xa;
+  a->ya=ya;
+  a->x2a=x2a;
+  a->y2a=y2a;
+  a->xya=xya;
+  a->an=na;
 
-  /* weight toward the actually used frequencies if we meet the threshhold */
-  {
-    int weight=nb*info->twofitweight/(na+1);
+  a->xb=xb;
+  a->yb=yb;
+  a->x2b=x2b;
+  a->y2b=y2b;
+  a->xyb=xyb;
+  a->bn=nb;
 
-    a->xa=xa*weight+xb;
-    a->ya=ya*weight+yb;
-    a->x2a=x2a*weight+x2b;
-    a->y2a=y2a*weight+y2b;
-    a->xya=xya*weight+xyb;
-    a->an=na*weight+nb;
-    a->n=nb;
-  }
-
   return(na);
 }
 
-static void fit_line(lsfit_acc *a,int fits,int *y0,int *y1){
-  long x=0,y=0,x2=0,y2=0,xy=0,n=0,an=0,i;
-  long x0=a[0].x0;
-  long x1=a[fits-1].x1;
+static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1,
+                    vorbis_info_floor1 *info){
+  double xb=0,yb=0,x2b=0,y2b=0,xyb=0,bn=0;
+  int i;
+  int x0=a[0].x0;
+  int x1=a[fits-1].x1;
 
   for(i=0;i<fits;i++){
-    x+=a[i].xa;
-    y+=a[i].ya;
-    x2+=a[i].x2a;
-    y2+=a[i].y2a;
-    xy+=a[i].xya;
-    n+=a[i].n;
-    an+=a[i].an;
+    double weight = (a[i].bn+a[i].an)*info->twofitweight/(a[i].an+1)+1.;
+
+    xb+=a[i].xb + a[i].xa * weight;
+    yb+=a[i].yb + a[i].ya * weight;
+    x2b+=a[i].x2b + a[i].x2a * weight;
+    y2b+=a[i].y2b + a[i].y2a * weight;
+    xyb+=a[i].xyb + a[i].xya * weight;
+    bn+=a[i].bn + a[i].an * weight;
   }
 
   if(*y0>=0){
-    x+=   x0;
-    y+=  *y0;
-    x2+=  x0 *  x0;
-    y2+= *y0 * *y0;
-    xy+= *y0 *  x0;
-    n++;
-    an++;
+    xb+=   x0;
+    yb+=  *y0;
+    x2b+=  x0 *  x0;
+    y2b+= *y0 * *y0;
+    xyb+= *y0 *  x0;
+    bn++;
   }
 
   if(*y1>=0){
-    x+=   x1;
-    y+=  *y1;
-    x2+=  x1 *  x1;
-    y2+= *y1 * *y1;
-    xy+= *y1 *  x1;
-    n++;
-    an++;
+    xb+=   x1;
+    yb+=  *y1;
+    x2b+=  x1 *  x1;
+    y2b+= *y1 * *y1;
+    xyb+= *y1 *  x1;
+    bn++;
   }
-  
+
   {
-    /* need 64 bit multiplies, which C doesn't give portably as int */
-    double fx=x;
-    double fy=y;
-    double fx2=x2;
-    double fxy=xy;
-    double denom=1./(an*fx2-fx*fx);
-    double a=(fy*fx2-fxy*fx)*denom;
-    double b=(an*fxy-fx*fy)*denom;
-    *y0=rint(a+b*x0);
-    *y1=rint(a+b*x1);
+    double denom=(bn*x2b-xb*xb);
 
-    /* limit to our range! */
-    if(*y0>1023)*y0=1023;
-    if(*y1>1023)*y1=1023;
-    if(*y0<0)*y0=0;
-    if(*y1<0)*y1=0;
+    if(denom>0.){
+      double a=(yb*x2b-xyb*xb)/denom;
+      double b=(bn*xyb-xb*yb)/denom;
+      *y0=rint(a+b*x0);
+      *y1=rint(a+b*x1);
 
+      /* limit to our range! */
+      if(*y0>1023)*y0=1023;
+      if(*y1>1023)*y1=1023;
+      if(*y0<0)*y0=0;
+      if(*y1<0)*y1=0;
+
+      return 0;
+    }else{
+      *y0=0;
+      *y1=0;
+      return 1;
+    }
   }
 }
 
-/*static void fit_line_point(lsfit_acc *a,int fits,int *y0,int *y1){
-  long y=0;
-  int i;
-
-  for(i=0;i<fits && y==0;i++)
-    y+=a[i].ya;
-  
-  *y0=*y1=y;
-  }*/
-
 static int inspect_error(int x0,int x1,int y0,int y1,const float *mask,
-			 const float *mdct,
-			 vorbis_info_floor1 *info){
+                         const float *mdct,
+                         vorbis_info_floor1 *info){
   int dy=y1-y0;
   int adx=x1-x0;
   int ady=abs(dy);
@@ -549,7 +530,7 @@
   int n=0;
 
   ady-=abs(base*adx);
-  
+
   mse=(y-val);
   mse*=mse;
   n++;
@@ -572,12 +553,12 @@
     n++;
     if(mdct[x]+info->twofitatten>=mask[x]){
       if(val){
-	if(y+info->maxover<val)return(1);
-	if(y-info->maxunder>val)return(1);
+        if(y+info->maxover<val)return(1);
+        if(y-info->maxunder>val)return(1);
       }
     }
   }
-  
+
   if(info->maxover*info->maxover/n>info->maxerr)return(0);
   if(info->maxunder*info->maxunder/n>info->maxerr)return(0);
   if(mse/n>info->maxerr)return(1);
@@ -593,11 +574,9 @@
   return (A[pos]+B[pos])>>1;
 }
 
-static int seq=0;
-
 int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
-			  const float *logmdct,   /* in */
-			  const float *logmask){
+                          const float *logmdct,   /* in */
+                          const float *logmask){
   long i,j;
   vorbis_info_floor1 *info=look->vi;
   long n=look->n;
@@ -608,7 +587,7 @@
   int fit_valueB[VIF_POSIT+2]; /* index by range list position */
 
   int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */
-  int hineighbor[VIF_POSIT+2]; 
+  int hineighbor[VIF_POSIT+2];
   int *output=NULL;
   int memo[VIF_POSIT+2];
 
@@ -625,15 +604,15 @@
   }else{
     for(i=0;i<posts-1;i++)
       nonzero+=accumulate_fit(logmask,logmdct,look->sorted_index[i],
-			      look->sorted_index[i+1],fits+i,
-			      n,info);
+                              look->sorted_index[i+1],fits+i,
+                              n,info);
   }
-  
+
   if(nonzero){
     /* start by fitting the implicit base case.... */
     int y0=-200;
     int y1=-200;
-    fit_line(fits,posts-1,&y0,&y1);
+    fit_line(fits,posts-1,&y0,&y1,info);
 
     fit_valueA[0]=y0;
     fit_valueB[0]=y0;
@@ -648,66 +627,82 @@
       int sortpos=look->reverse_index[i];
       int ln=loneighbor[sortpos];
       int hn=hineighbor[sortpos];
-      
+
       /* eliminate repeat searches of a particular range with a memo */
       if(memo[ln]!=hn){
-	/* haven't performed this error search yet */
-	int lsortpos=look->reverse_index[ln];
-	int hsortpos=look->reverse_index[hn];
-	memo[ln]=hn;
-		
-	{
-	  /* A note: we want to bound/minimize *local*, not global, error */
-	  int lx=info->postlist[ln];
-	  int hx=info->postlist[hn];	  
-	  int ly=post_Y(fit_valueA,fit_valueB,ln);
-	  int hy=post_Y(fit_valueA,fit_valueB,hn);
-	  
-	  if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){
-	    /* outside error bounds/begin search area.  Split it. */
-	    int ly0=-200;
-	    int ly1=-200;
-	    int hy0=-200;
-	    int hy1=-200;
-	    fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1);
-	    fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1);
-	    
-	    /* store new edge values */
-	    fit_valueB[ln]=ly0;
-	    if(ln==0)fit_valueA[ln]=ly0;
-	    fit_valueA[i]=ly1;
-	    fit_valueB[i]=hy0;
-	    fit_valueA[hn]=hy1;
-	    if(hn==1)fit_valueB[hn]=hy1;
-	    
-	    if(ly1>=0 || hy0>=0){
-	      /* store new neighbor values */
-	      for(j=sortpos-1;j>=0;j--)
-		if(hineighbor[j]==hn)
-		  hineighbor[j]=i;
-		else
-		  break;
-	      for(j=sortpos+1;j<posts;j++)
-		if(loneighbor[j]==ln)
-		  loneighbor[j]=i;
-		else
-		  break;
-	      
-	    }
-	  }else{
-	    
-	    fit_valueA[i]=-200;
-	    fit_valueB[i]=-200;
-	  }
-	}
+        /* haven't performed this error search yet */
+        int lsortpos=look->reverse_index[ln];
+        int hsortpos=look->reverse_index[hn];
+        memo[ln]=hn;
+
+        {
+          /* A note: we want to bound/minimize *local*, not global, error */
+          int lx=info->postlist[ln];
+          int hx=info->postlist[hn];
+          int ly=post_Y(fit_valueA,fit_valueB,ln);
+          int hy=post_Y(fit_valueA,fit_valueB,hn);
+
+          if(ly==-1 || hy==-1){
+            exit(1);
+          }
+
+          if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){
+            /* outside error bounds/begin search area.  Split it. */
+            int ly0=-200;
+            int ly1=-200;
+            int hy0=-200;
+            int hy1=-200;
+            int ret0=fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1,info);
+            int ret1=fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1,info);
+
+            if(ret0){
+              ly0=ly;
+              ly1=hy0;
+            }
+            if(ret1){
+              hy0=ly1;
+              hy1=hy;
+            }
+
+            if(ret0 && ret1){
+              fit_valueA[i]=-200;
+              fit_valueB[i]=-200;
+            }else{
+              /* store new edge values */
+              fit_valueB[ln]=ly0;
+              if(ln==0)fit_valueA[ln]=ly0;
+              fit_valueA[i]=ly1;
+              fit_valueB[i]=hy0;
+              fit_valueA[hn]=hy1;
+              if(hn==1)fit_valueB[hn]=hy1;
+
+              if(ly1>=0 || hy0>=0){
+                /* store new neighbor values */
+                for(j=sortpos-1;j>=0;j--)
+                  if(hineighbor[j]==hn)
+                    hineighbor[j]=i;
+                  else
+                    break;
+                for(j=sortpos+1;j<posts;j++)
+                  if(loneighbor[j]==ln)
+                    loneighbor[j]=i;
+                  else
+                    break;
+              }
+            }
+          }else{
+            fit_valueA[i]=-200;
+            fit_valueB[i]=-200;
+          }
+        }
       }
     }
-  
+
     output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
-    
+
     output[0]=post_Y(fit_valueA,fit_valueB,0);
     output[1]=post_Y(fit_valueA,fit_valueB,1);
-    
+
     /* fill in posts marked as not using a fit; we will zero
        back out to 'unused' when encoding them so long as curve
        interpolation doesn't force them into use */
@@ -718,33 +713,34 @@
       int x1=info->postlist[hn];
       int y0=output[ln];
       int y1=output[hn];
-      
+
       int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
       int vx=post_Y(fit_valueA,fit_valueB,i);
-      
-      if(vx>=0 && predicted!=vx){ 
-	output[i]=vx;
+
+      if(vx>=0 && predicted!=vx){
+        output[i]=vx;
       }else{
-	output[i]= predicted|0x8000;
+        output[i]= predicted|0x8000;
       }
     }
   }
 
   return(output);
-  
+
 }
-		
+
 int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
-			  int *A,int *B,
-			  int del){
+                          int *A,int *B,
+                          int del){
 
   long i;
   long posts=look->posts;
   int *output=NULL;
-  
+
   if(A && B){
     output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
-    
+
+    /* overly simpleminded--- look again post 1.2 */
     for(i=0;i<posts;i++){
       output[i]=((65536-del)*(A[i]&0x7fff)+del*(B[i]&0x7fff)+32768)>>16;
       if(A[i]&0x8000 && B[i]&0x8000)output[i]|=0x8000;
@@ -755,18 +751,17 @@
 }
 
 
-int floor1_encode(vorbis_block *vb,vorbis_look_floor1 *look,
-		  int *post,int *ilogmask){
+int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
+                  vorbis_look_floor1 *look,
+                  int *post,int *ilogmask){
 
   long i,j;
   vorbis_info_floor1 *info=look->vi;
-  long n=look->n;
   long posts=look->posts;
   codec_setup_info *ci=vb->vd->vi->codec_setup;
   int out[VIF_POSIT+2];
   static_codebook **sbooks=ci->book_param;
   codebook *books=ci->fullbooks;
-  static long seq=0; 
 
   /* quantize values to multiplier spec */
   if(post){
@@ -774,17 +769,17 @@
       int val=post[i]&0x7fff;
       switch(info->mult){
       case 1: /* 1024 -> 256 */
-	val>>=2;
-	break;
+        val>>=2;
+        break;
       case 2: /* 1024 -> 128 */
-	val>>=3;
-	break;
+        val>>=3;
+        break;
       case 3: /* 1024 -> 86 */
-	val/=12;
-	break;
+        val/=12;
+        break;
       case 4: /* 1024 -> 64 */
-	val>>=4;
-	break;
+        val>>=4;
+        break;
       }
       post[i]=val | (post[i]&0x8000);
     }
@@ -800,53 +795,53 @@
       int x1=info->postlist[hn];
       int y0=post[ln];
       int y1=post[hn];
-      
+
       int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
-      
+
       if((post[i]&0x8000) || (predicted==post[i])){
-	post[i]=predicted|0x8000; /* in case there was roundoff jitter
-				     in interpolation */
-	out[i]=0;
+        post[i]=predicted|0x8000; /* in case there was roundoff jitter
+                                     in interpolation */
+        out[i]=0;
       }else{
-	int headroom=(look->quant_q-predicted<predicted?
-		      look->quant_q-predicted:predicted);
-	
-	int val=post[i]-predicted;
-	
-	/* at this point the 'deviation' value is in the range +/- max
-	   range, but the real, unique range can always be mapped to
-	   only [0-maxrange).  So we want to wrap the deviation into
-	   this limited range, but do it in the way that least screws
-	   an essentially gaussian probability distribution. */
-	
-	if(val<0)
-	  if(val<-headroom)
-	    val=headroom-val-1;
-	  else
-	    val=-1-(val<<1);
-	else
-	  if(val>=headroom)
-	    val= val+headroom;
-	  else
-	    val<<=1;
-	
-	out[i]=val;
-	post[ln]&=0x7fff;
-	post[hn]&=0x7fff;
+        int headroom=(look->quant_q-predicted<predicted?
+                      look->quant_q-predicted:predicted);
+
+        int val=post[i]-predicted;
+
+        /* at this point the 'deviation' value is in the range +/- max
+           range, but the real, unique range can always be mapped to
+           only [0-maxrange).  So we want to wrap the deviation into
+           this limited range, but do it in the way that least screws
+           an essentially gaussian probability distribution. */
+
+        if(val<0)
+          if(val<-headroom)
+            val=headroom-val-1;
+          else
+            val=-1-(val<<1);
+        else
+          if(val>=headroom)
+            val= val+headroom;
+          else
+            val<<=1;
+
+        out[i]=val;
+        post[ln]&=0x7fff;
+        post[hn]&=0x7fff;
       }
     }
-    
+
     /* we have everything we need. pack it out */
     /* mark nontrivial floor */
-    oggpack_write(&vb->opb,1,1);
-      
+    oggpack_write(opb,1,1);
+
     /* beginning/end post */
     look->frames++;
-    look->postbits+=ilog(look->quant_q-1)*2;
-    oggpack_write(&vb->opb,out[0],ilog(look->quant_q-1));
-    oggpack_write(&vb->opb,out[1],ilog(look->quant_q-1));
-      
-      
+    look->postbits+=ov_ilog(look->quant_q-1)*2;
+    oggpack_write(opb,out[0],ov_ilog(look->quant_q-1));
+    oggpack_write(opb,out[1],ov_ilog(look->quant_q-1));
+
+
     /* partition by partition */
     for(i=0,j=2;i<info->partitions;i++){
       int class=info->partitionclass[i];
@@ -860,70 +855,72 @@
 
       /* generate the partition's first stage cascade value */
       if(csubbits){
-	int maxval[8];
-	for(k=0;k<csub;k++){
-	  int booknum=info->class_subbook[class][k];
-	  if(booknum<0){
-	    maxval[k]=1;
-	  }else{
-	    maxval[k]=sbooks[info->class_subbook[class][k]]->entries;
-	  }
-	}
-	for(k=0;k<cdim;k++){
-	  for(l=0;l<csub;l++){
-	    int val=out[j+k];
-	    if(val<maxval[l]){
-	      bookas[k]=l;
-	      break;
-	    }
-	  }
-	  cval|= bookas[k]<<cshift;
-	  cshift+=csubbits;
-	}
-	/* write it */
-	look->phrasebits+=
-	  vorbis_book_encode(books+info->class_book[class],cval,&vb->opb);
-	
+        int maxval[8]={0,0,0,0,0,0,0,0}; /* gcc's static analysis
+                                            issues a warning without
+                                            initialization */
+        for(k=0;k<csub;k++){
+          int booknum=info->class_subbook[class][k];
+          if(booknum<0){
+            maxval[k]=1;
+          }else{
+            maxval[k]=sbooks[info->class_subbook[class][k]]->entries;
+          }
+        }
+        for(k=0;k<cdim;k++){
+          for(l=0;l<csub;l++){
+            int val=out[j+k];
+            if(val<maxval[l]){
+              bookas[k]=l;
+              break;
+            }
+          }
+          cval|= bookas[k]<<cshift;
+          cshift+=csubbits;
+        }
+        /* write it */
+        look->phrasebits+=
+          vorbis_book_encode(books+info->class_book[class],cval,opb);
+
 #ifdef TRAIN_FLOOR1
-	{
-	  FILE *of;
-	  char buffer[80];
-	  sprintf(buffer,"line_%dx%ld_class%d.vqd",
-		  vb->pcmend/2,posts-2,class);
-	  of=fopen(buffer,"a");
-	  fprintf(of,"%d\n",cval);
-	  fclose(of);
-	}
+        {
+          FILE *of;
+          char buffer[80];
+          sprintf(buffer,"line_%dx%ld_class%d.vqd",
+                  vb->pcmend/2,posts-2,class);
+          of=fopen(buffer,"a");
+          fprintf(of,"%d\n",cval);
+          fclose(of);
+        }
 #endif
       }
-	
+
       /* write post values */
       for(k=0;k<cdim;k++){
-	int book=info->class_subbook[class][bookas[k]];
-	if(book>=0){
-	  /* hack to allow training with 'bad' books */
-	  if(out[j+k]<(books+book)->entries)
-	    look->postbits+=vorbis_book_encode(books+book,
-					       out[j+k],&vb->opb);
-	  /*else
-	    fprintf(stderr,"+!");*/
-	  
+        int book=info->class_subbook[class][bookas[k]];
+        if(book>=0){
+          /* hack to allow training with 'bad' books */
+          if(out[j+k]<(books+book)->entries)
+            look->postbits+=vorbis_book_encode(books+book,
+                                               out[j+k],opb);
+          /*else
+            fprintf(stderr,"+!");*/
+
 #ifdef TRAIN_FLOOR1
-	  {
-	    FILE *of;
-	    char buffer[80];
-	    sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
-		    vb->pcmend/2,posts-2,class,bookas[k]);
-	    of=fopen(buffer,"a");
-	    fprintf(of,"%d\n",out[j+k]);
-	    fclose(of);
-	  }
+          {
+            FILE *of;
+            char buffer[80];
+            sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
+                    vb->pcmend/2,posts-2,class,bookas[k]);
+            of=fopen(buffer,"a");
+            fprintf(of,"%d\n",out[j+k]);
+            fclose(of);
+          }
 #endif
-	}
+        }
       }
       j+=cdim;
     }
-    
+
     {
       /* generate quantized floor equivalent to what we'd unpack in decode */
       /* render the lines */
@@ -930,28 +927,28 @@
       int hx=0;
       int lx=0;
       int ly=post[0]*info->mult;
+      int n=ci->blocksizes[vb->W]/2;
+
       for(j=1;j<look->posts;j++){
-	int current=look->forward_index[j];
-	int hy=post[current]&0x7fff;
-	if(hy==post[current]){
-	  
-	  hy*=info->mult;
-	  hx=info->postlist[current];
-	
-	  render_line0(lx,hx,ly,hy,ilogmask);
-	
-	  lx=hx;
-	  ly=hy;
-	}
+        int current=look->forward_index[j];
+        int hy=post[current]&0x7fff;
+        if(hy==post[current]){
+
+          hy*=info->mult;
+          hx=info->postlist[current];
+
+          render_line0(n,lx,hx,ly,hy,ilogmask);
+
+          lx=hx;
+          ly=hy;
+        }
       }
-      for(j=hx;j<vb->pcmend/2;j++)ilogmask[j]=ly; /* be certain */    
-      seq++;
+      for(j=hx;j<vb->pcmend/2;j++)ilogmask[j]=ly; /* be certain */
       return(1);
     }
   }else{
-    oggpack_write(&vb->opb,0,1);
+    oggpack_write(opb,0,1);
     memset(ilogmask,0,vb->pcmend/2*sizeof(*ilogmask));
-    seq++;
     return(0);
   }
 }
@@ -960,16 +957,16 @@
   vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
   vorbis_info_floor1 *info=look->vi;
   codec_setup_info   *ci=vb->vd->vi->codec_setup;
-  
+
   int i,j,k;
-  codebook *books=ci->fullbooks;   
+  codebook *books=ci->fullbooks;
 
   /* unpack wrapped/predicted values from stream */
   if(oggpack_read(&vb->opb,1)==1){
     int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value));
 
-    fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
-    fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
+    fit_value[0]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1));
+    fit_value[1]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1));
 
     /* partition by partition */
     for(i=0,j=2;i<info->partitions;i++){
@@ -981,20 +978,20 @@
 
       /* decode the partition's first stage cascade value */
       if(csubbits){
-	cval=vorbis_book_decode(books+info->class_book[class],&vb->opb);
+        cval=vorbis_book_decode(books+info->class_book[class],&vb->opb);
 
-	if(cval==-1)goto eop;
+        if(cval==-1)goto eop;
       }
 
       for(k=0;k<cdim;k++){
-	int book=info->class_subbook[class][cval&(csub-1)];
-	cval>>=csubbits;
-	if(book>=0){
-	  if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1)
-	    goto eop;
-	}else{
-	  fit_value[j+k]=0;
-	}
+        int book=info->class_subbook[class][cval&(csub-1)];
+        cval>>=csubbits;
+        if(book>=0){
+          if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1)
+            goto eop;
+        }else{
+          fit_value[j+k]=0;
+        }
       }
       j+=cdim;
     }
@@ -1002,10 +999,10 @@
     /* unwrap positive values and reconsitute via linear interpolation */
     for(i=2;i<look->posts;i++){
       int predicted=render_point(info->postlist[look->loneighbor[i-2]],
-				 info->postlist[look->hineighbor[i-2]],
-				 fit_value[look->loneighbor[i-2]],
-				 fit_value[look->hineighbor[i-2]],
-				 info->postlist[i]);
+                                 info->postlist[look->hineighbor[i-2]],
+                                 fit_value[look->loneighbor[i-2]],
+                                 fit_value[look->hineighbor[i-2]],
+                                 info->postlist[i]);
       int hiroom=look->quant_q-predicted;
       int loroom=predicted;
       int room=(hiroom<loroom?hiroom:loroom)<<1;
@@ -1012,28 +1009,28 @@
       int val=fit_value[i];
 
       if(val){
-	if(val>=room){
-	  if(hiroom>loroom){
-	    val = val-loroom;
-	  }else{
-	    val = -1-(val-hiroom);
-	  }
-	}else{
-	  if(val&1){
-	    val= -((val+1)>>1);
-	  }else{
-	    val>>=1;
-	  }
-	}
+        if(val>=room){
+          if(hiroom>loroom){
+            val = val-loroom;
+          }else{
+            val = -1-(val-hiroom);
+          }
+        }else{
+          if(val&1){
+            val= -((val+1)>>1);
+          }else{
+            val>>=1;
+          }
+        }
 
-	fit_value[i]=val+predicted;
-	fit_value[look->loneighbor[i-2]]&=0x7fff;
-	fit_value[look->hineighbor[i-2]]&=0x7fff;
+        fit_value[i]=(val+predicted)&0x7fff;
+        fit_value[look->loneighbor[i-2]]&=0x7fff;
+        fit_value[look->hineighbor[i-2]]&=0x7fff;
 
       }else{
-	fit_value[i]=predicted|0x8000;
+        fit_value[i]=predicted|0x8000;
       }
-	
+
     }
 
     return(fit_value);
@@ -1043,7 +1040,7 @@
 }
 
 static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
-			  float *out){
+                          float *out){
   vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
   vorbis_info_floor1 *info=look->vi;
 
@@ -1057,21 +1054,26 @@
     int hx=0;
     int lx=0;
     int ly=fit_value[0]*info->mult;
+    /* guard lookup against out-of-range values */
+    ly=(ly<0?0:ly>255?255:ly);
+
     for(j=1;j<look->posts;j++){
       int current=look->forward_index[j];
       int hy=fit_value[current]&0x7fff;
       if(hy==fit_value[current]){
-	
-	hy*=info->mult;
-	hx=info->postlist[current];
-	
-	render_line(lx,hx,ly,hy,out);
-	
-	lx=hx;
-	ly=hy;
+
+        hx=info->postlist[current];
+        hy*=info->mult;
+        /* guard lookup against out-of-range values */
+        hy=(hy<0?0:hy>255?255:hy);
+
+        render_line(n,lx,hx,ly,hy,out);
+
+        lx=hx;
+        ly=hy;
       }
     }
-    for(j=hx;j<n;j++)out[j]*=FLOOR1_fromdB_LOOKUP[ly]; /* be certain */    
+    for(j=hx;j<n;j++)out[j]*=FLOOR1_fromdB_LOOKUP[ly]; /* be certain */
     return(1);
   }
   memset(out,0,sizeof(*out)*n);
@@ -1079,9 +1081,7 @@
 }
 
 /* export hooks */
-vorbis_func_floor floor1_exportbundle={
+const vorbis_func_floor floor1_exportbundle={
   &floor1_pack,&floor1_unpack,&floor1_look,&floor1_free_info,
   &floor1_free_look,&floor1_inverse1,&floor1_inverse2
 };
-
-
--- a/sys/src/cmd/audio/libvorbis/highlevel.h
+++ b/sys/src/cmd/audio/libvorbis/highlevel.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: highlevel encoder setup struct seperated out for vorbisenc clarity
- last mod: $Id: highlevel.h,v 1.4 2002/07/01 11:20:11 xiphmont Exp $
+ function: highlevel encoder setup struct separated out for vorbisenc clarity
+ last mod: $Id: highlevel.h 17195 2010-05-05 21:49:51Z giles $
 
  ********************************************************************/
 
@@ -21,30 +21,31 @@
   double noise_bias_setting;
   double noise_compand_setting;
 } highlevel_byblocktype;
-  
+
 typedef struct highlevel_encode_setup {
-  void *setup;
   int   set_in_stone;
-
+  const void *setup;
   double base_setting;
-  double long_setting;
-  double short_setting;
+
   double impulse_noisetune;
 
+  /* bitrate management below all settable */
+  float  req;
   int    managed;
   long   bitrate_min;
-  long   bitrate_av_lo;
-  long   bitrate_av_hi;
+  long   bitrate_av;
+  double bitrate_av_damp;
   long   bitrate_max;
-  double bitrate_limit_window;
-  double bitrate_av_window;
-  double bitrate_av_window_center;
-  
+  long   bitrate_reservoir;
+  double bitrate_reservoir_bias;
+
   int impulse_block_p;
   int noise_normalize_p;
+  int coupling_p;
 
   double stereo_point_setting;
   double lowpass_kHz;
+  int    lowpass_altered;
 
   double ath_floating_dB;
   double ath_absolute_dB;
@@ -51,8 +52,7 @@
 
   double amplitude_track_dBpersec;
   double trigger_setting;
-  
+
   highlevel_byblocktype block[4]; /* padding, impulse, transition, long */
 
 } highlevel_encode_setup;
-
--- a/sys/src/cmd/audio/libvorbis/info.c
+++ b/sys/src/cmd/audio/libvorbis/info.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: maintain the info structure, info <-> header packets
- last mod: $Id: info.c,v 1.59 2002/07/18 01:43:09 xiphmont Exp $
+ last mod: $Id: info.c 19441 2015-01-21 01:17:41Z xiphmont $
 
  ********************************************************************/
 
@@ -31,19 +31,12 @@
 #include "misc.h"
 #include "os.h"
 
+#define GENERAL_VENDOR_STRING "Xiph.Org libVorbis 1.3.5"
+#define ENCODE_VENDOR_STRING "Xiph.Org libVorbis I 20150105 (⛄⛄⛄⛄)"
+
 /* helpers */
-static int ilog2(unsigned int v){
-  int ret=0;
-  if(v)--v;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
+static void _v_writestring(oggpack_buffer *o,const char *s, int bytes){
 
-static void _v_writestring(oggpack_buffer *o,char *s, int bytes){
-
   while(bytes--){
     oggpack_write(o,*s++,8);
   }
@@ -59,11 +52,11 @@
   memset(vc,0,sizeof(*vc));
 }
 
-void vorbis_comment_add(vorbis_comment *vc,char *comment){
+void vorbis_comment_add(vorbis_comment *vc,const char *comment){
   vc->user_comments=_ogg_realloc(vc->user_comments,
-			    (vc->comments+2)*sizeof(*vc->user_comments));
+                            (vc->comments+2)*sizeof(*vc->user_comments));
   vc->comment_lengths=_ogg_realloc(vc->comment_lengths,
-      			    (vc->comments+2)*sizeof(*vc->comment_lengths));
+                                  (vc->comments+2)*sizeof(*vc->comment_lengths));
   vc->comment_lengths[vc->comments]=strlen(comment);
   vc->user_comments[vc->comments]=_ogg_malloc(vc->comment_lengths[vc->comments]+1);
   strcpy(vc->user_comments[vc->comments], comment);
@@ -71,7 +64,7 @@
   vc->user_comments[vc->comments]=NULL;
 }
 
-void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents){
+void vorbis_comment_add_tag(vorbis_comment *vc, const char *tag, const char *contents){
   char *comment=malloc(strlen(tag)+strlen(contents)+2); /* +2 for = and \0 */
   strcpy(comment, tag);
   strcat(comment, "=");
@@ -92,7 +85,7 @@
   return 0;
 }
 
-char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
+char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count){
   long i;
   int found = 0;
   int taglen = strlen(tag)+1; /* +1 for the = we append */
@@ -100,15 +93,15 @@
 
   strcpy(fulltag, tag);
   strcat(fulltag, "=");
-  
+
   for(i=0;i<vc->comments;i++){
     if(!tagcompare(vc->user_comments[i], fulltag, taglen)){
-      if(count == found) {
-	/* We return a pointer to the data, not a copy */
-         free(fulltag);
-      	return vc->user_comments[i] + taglen;
-      } else
-	found++;
+      if(count == found){
+        free(fulltag);
+        /* We return a pointer to the data, not a copy */
+        return vc->user_comments[i] + taglen;
+      }else
+        found++;
     }
   }
   free(fulltag);
@@ -115,7 +108,7 @@
   return NULL; /* didn't find anything */
 }
 
-int vorbis_comment_query_count(vorbis_comment *vc, char *tag){
+int vorbis_comment_query_count(vorbis_comment *vc, const char *tag){
   int i,count=0;
   int taglen = strlen(tag)+1; /* +1 for the = we append */
   char *fulltag = malloc(taglen+1);
@@ -126,7 +119,6 @@
     if(!tagcompare(vc->user_comments[i], fulltag, taglen))
       count++;
   }
-
   free(fulltag);
   return count;
 }
@@ -134,16 +126,18 @@
 void vorbis_comment_clear(vorbis_comment *vc){
   if(vc){
     long i;
-    for(i=0;i<vc->comments;i++)
-      if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
-    if(vc->user_comments)_ogg_free(vc->user_comments);
-	if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
+    if(vc->user_comments){
+      for(i=0;i<vc->comments;i++)
+        if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
+      _ogg_free(vc->user_comments);
+    }
+    if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
     if(vc->vendor)_ogg_free(vc->vendor);
+    memset(vc,0,sizeof(*vc));
   }
-  memset(vc,0,sizeof(*vc));
 }
 
-/* blocksize 0 is guaranteed to be short, 1 is guarantted to be long.
+/* blocksize 0 is guaranteed to be short, 1 is guaranteed to be long.
    They may be equal, but short will never ge greater than long */
 int vorbis_info_blocksize(vorbis_info *vi,int zo){
   codec_setup_info *ci = vi->codec_setup;
@@ -166,25 +160,34 @@
       if(ci->mode_param[i])_ogg_free(ci->mode_param[i]);
 
     for(i=0;i<ci->maps;i++) /* unpack does the range checking */
-      _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
+      if(ci->map_param[i]) /* this may be cleaning up an aborted
+                              unpack, in which case the below type
+                              cannot be trusted */
+        _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
 
     for(i=0;i<ci->floors;i++) /* unpack does the range checking */
-      _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
-    
+      if(ci->floor_param[i]) /* this may be cleaning up an aborted
+                                unpack, in which case the below type
+                                cannot be trusted */
+        _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
+
     for(i=0;i<ci->residues;i++) /* unpack does the range checking */
-      _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
+      if(ci->residue_param[i]) /* this may be cleaning up an aborted
+                                  unpack, in which case the below type
+                                  cannot be trusted */
+        _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
 
     for(i=0;i<ci->books;i++){
       if(ci->book_param[i]){
-	/* knows if the book was not alloced */
-	vorbis_staticbook_destroy(ci->book_param[i]);
+        /* knows if the book was not alloced */
+        vorbis_staticbook_destroy(ci->book_param[i]);
       }
       if(ci->fullbooks)
-	vorbis_book_clear(ci->fullbooks+i);
+        vorbis_book_clear(ci->fullbooks+i);
     }
     if(ci->fullbooks)
-	_ogg_free(ci->fullbooks);
-    
+        _ogg_free(ci->fullbooks);
+
     for(i=0;i<ci->psys;i++)
       _vi_psy_free(ci->psy_param[i]);
 
@@ -212,12 +215,13 @@
 
   ci->blocksizes[0]=1<<oggpack_read(opb,4);
   ci->blocksizes[1]=1<<oggpack_read(opb,4);
-  
+
   if(vi->rate<1)goto err_out;
   if(vi->channels<1)goto err_out;
-  if(ci->blocksizes[0]<8)goto err_out; 
+  if(ci->blocksizes[0]<64)goto err_out;
   if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
-  
+  if(ci->blocksizes[1]>8192)goto err_out;
+
   if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
 
   return(0);
@@ -230,20 +234,24 @@
   int i;
   int vendorlen=oggpack_read(opb,32);
   if(vendorlen<0)goto err_out;
+  if(vendorlen>opb->storage-8)goto err_out;
   vc->vendor=_ogg_calloc(vendorlen+1,1);
   _v_readstring(opb,vc->vendor,vendorlen);
-  vc->comments=oggpack_read(opb,32);
-  if(vc->comments<0)goto err_out;
+  i=oggpack_read(opb,32);
+  if(i<0)goto err_out;
+  if(i>((opb->storage-oggpack_bytes(opb))>>2))goto err_out;
+  vc->comments=i;
   vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
   vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths));
-	    
+
   for(i=0;i<vc->comments;i++){
     int len=oggpack_read(opb,32);
     if(len<0)goto err_out;
-	vc->comment_lengths[i]=len;
+    if(len>opb->storage-oggpack_bytes(opb))goto err_out;
+    vc->comment_lengths[i]=len;
     vc->user_comments[i]=_ogg_calloc(len+1,1);
     _v_readstring(opb,vc->user_comments[i],len);
-  }	  
+  }
   if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
 
   return(0);
@@ -257,19 +265,19 @@
 static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){
   codec_setup_info     *ci=vi->codec_setup;
   int i;
-  if(!ci)return(OV_EFAULT);
 
   /* codebooks */
   ci->books=oggpack_read(opb,8)+1;
-  /*ci->book_param=_ogg_calloc(ci->books,sizeof(*ci->book_param));*/
+  if(ci->books<=0)goto err_out;
   for(i=0;i<ci->books;i++){
-    ci->book_param[i]=_ogg_calloc(1,sizeof(*ci->book_param[i]));
-    if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
+    ci->book_param[i]=vorbis_staticbook_unpack(opb);
+    if(!ci->book_param[i])goto err_out;
   }
 
   /* time backend settings; hooks are unused */
   {
     int times=oggpack_read(opb,6)+1;
+    if(times<=0)goto err_out;
     for(i=0;i<times;i++){
       int test=oggpack_read(opb,16);
       if(test<0 || test>=VI_TIMEB)goto err_out;
@@ -278,8 +286,7 @@
 
   /* floor backend settings */
   ci->floors=oggpack_read(opb,6)+1;
-  /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(*ci->floor_type));*/
-  /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/
+  if(ci->floors<=0)goto err_out;
   for(i=0;i<ci->floors;i++){
     ci->floor_type[i]=oggpack_read(opb,16);
     if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out;
@@ -289,8 +296,7 @@
 
   /* residue backend settings */
   ci->residues=oggpack_read(opb,6)+1;
-  /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(*ci->residue_type));*/
-  /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/
+  if(ci->residues<=0)goto err_out;
   for(i=0;i<ci->residues;i++){
     ci->residue_type[i]=oggpack_read(opb,16);
     if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out;
@@ -300,8 +306,7 @@
 
   /* map backend settings */
   ci->maps=oggpack_read(opb,6)+1;
-  /*ci->map_type=_ogg_malloc(ci->maps*sizeof(*ci->map_type));*/
-  /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/
+  if(ci->maps<=0)goto err_out;
   for(i=0;i<ci->maps;i++){
     ci->map_type[i]=oggpack_read(opb,16);
     if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out;
@@ -308,10 +313,10 @@
     ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb);
     if(!ci->map_param[i])goto err_out;
   }
-  
+
   /* mode settings */
   ci->modes=oggpack_read(opb,6)+1;
-  /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/
+  if(ci->modes<=0)goto err_out;
   for(i=0;i<ci->modes;i++){
     ci->mode_param[i]=_ogg_calloc(1,sizeof(*ci->mode_param[i]));
     ci->mode_param[i]->blockflag=oggpack_read(opb,1);
@@ -322,8 +327,9 @@
     if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
     if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
     if(ci->mode_param[i]->mapping>=ci->maps)goto err_out;
+    if(ci->mode_param[i]->mapping<0)goto err_out;
   }
-  
+
   if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
 
   return(0);
@@ -332,6 +338,31 @@
   return(OV_EBADHEADER);
 }
 
+/* Is this packet a vorbis ID header? */
+int vorbis_synthesis_idheader(ogg_packet *op){
+  oggpack_buffer opb;
+  char buffer[6];
+
+  if(op){
+    oggpack_readinit(&opb,op->packet,op->bytes);
+
+    if(!op->b_o_s)
+      return(0); /* Not the initial packet */
+
+    if(oggpack_read(&opb,8) != 1)
+      return 0; /* not an ID header */
+
+    memset(buffer,0,6);
+    _v_readstring(&opb,buffer,6);
+    if(memcmp(buffer,"vorbis",6))
+      return 0; /* not vorbis */
+
+    return 1;
+  }
+
+  return 0;
+}
+
 /* The Vorbis header is in three packets; the initial small packet in
    the first page that identifies basic parameters, a second packet
    with bitstream comments and a third packet that holds the
@@ -339,7 +370,7 @@
 
 int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){
   oggpack_buffer opb;
-  
+
   if(op){
     oggpack_readinit(&opb,op->packet,op->bytes);
 
@@ -351,42 +382,54 @@
       memset(buffer,0,6);
       _v_readstring(&opb,buffer,6);
       if(memcmp(buffer,"vorbis",6)){
-	/* not a vorbis header */
-	return(OV_ENOTVORBIS);
+        /* not a vorbis header */
+        return(OV_ENOTVORBIS);
       }
       switch(packtype){
       case 0x01: /* least significant *bit* is read first */
-	if(!op->b_o_s){
-	  /* Not the initial packet */
-	  return(OV_EBADHEADER);
-	}
-	if(vi->rate!=0){
-	  /* previously initialized info header */
-	  return(OV_EBADHEADER);
-	}
+        if(!op->b_o_s){
+          /* Not the initial packet */
+          return(OV_EBADHEADER);
+        }
+        if(vi->rate!=0){
+          /* previously initialized info header */
+          return(OV_EBADHEADER);
+        }
 
-	return(_vorbis_unpack_info(vi,&opb));
+        return(_vorbis_unpack_info(vi,&opb));
 
       case 0x03: /* least significant *bit* is read first */
-	if(vi->rate==0){
-	  /* um... we didn't get the initial header */
-	  return(OV_EBADHEADER);
-	}
+        if(vi->rate==0){
+          /* um... we didn't get the initial header */
+          return(OV_EBADHEADER);
+        }
+        if(vc->vendor!=NULL){
+          /* previously initialized comment header */
+          return(OV_EBADHEADER);
+        }
 
-	return(_vorbis_unpack_comment(vc,&opb));
+        return(_vorbis_unpack_comment(vc,&opb));
 
       case 0x05: /* least significant *bit* is read first */
-	if(vi->rate==0 || vc->vendor==NULL){
-	  /* um... we didn;t get the initial header or comments yet */
-	  return(OV_EBADHEADER);
-	}
+        if(vi->rate==0 || vc->vendor==NULL){
+          /* um... we didn;t get the initial header or comments yet */
+          return(OV_EBADHEADER);
+        }
+        if(vi->codec_setup==NULL){
+          /* improperly initialized vorbis_info */
+          return(OV_EFAULT);
+        }
+        if(((codec_setup_info *)vi->codec_setup)->books>0){
+          /* previously initialized setup header */
+          return(OV_EBADHEADER);
+        }
 
-	return(_vorbis_unpack_books(vi,&opb));
+        return(_vorbis_unpack_books(vi,&opb));
 
       default:
-	/* Not a valid vorbis header type */
-	return(OV_EBADHEADER);
-	break;
+        /* Not a valid vorbis header type */
+        return(OV_EBADHEADER);
+        break;
       }
     }
   }
@@ -397,9 +440,13 @@
 
 static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
   codec_setup_info     *ci=vi->codec_setup;
-  if(!ci)return(OV_EFAULT);
+  if(!ci||
+     ci->blocksizes[0]<64||
+     ci->blocksizes[1]<ci->blocksizes[0]){
+    return(OV_EFAULT);
+  }
 
-  /* preamble */  
+  /* preamble */
   oggpack_write(opb,0x01,8);
   _v_writestring(opb,"vorbis", 6);
 
@@ -412,8 +459,8 @@
   oggpack_write(opb,vi->bitrate_nominal,32);
   oggpack_write(opb,vi->bitrate_lower,32);
 
-  oggpack_write(opb,ilog2(ci->blocksizes[0]),4);
-  oggpack_write(opb,ilog2(ci->blocksizes[1]),4);
+  oggpack_write(opb,ov_ilog(ci->blocksizes[0]-1),4);
+  oggpack_write(opb,ov_ilog(ci->blocksizes[1]-1),4);
   oggpack_write(opb,1,1);
 
   return(0);
@@ -420,17 +467,16 @@
 }
 
 static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
-  char temp[]="Xiph.Org libVorbis I 20020717";
-  int bytes = strlen(temp);
+  int bytes = strlen(ENCODE_VENDOR_STRING);
 
-  /* preamble */  
+  /* preamble */
   oggpack_write(opb,0x03,8);
   _v_writestring(opb,"vorbis", 6);
 
   /* vendor */
   oggpack_write(opb,bytes,32);
-  _v_writestring(opb,temp, bytes);
-  
+  _v_writestring(opb,ENCODE_VENDOR_STRING, bytes);
+
   /* comments */
 
   oggpack_write(opb,vc->comments,32);
@@ -438,10 +484,10 @@
     int i;
     for(i=0;i<vc->comments;i++){
       if(vc->user_comments[i]){
-	oggpack_write(opb,vc->comment_lengths[i],32);
-	_v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]);
+        oggpack_write(opb,vc->comment_lengths[i],32);
+        _v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]);
       }else{
-	oggpack_write(opb,0,32);
+        oggpack_write(opb,0,32);
       }
     }
   }
@@ -449,7 +495,7 @@
 
   return(0);
 }
- 
+
 static int _vorbis_pack_books(oggpack_buffer *opb,vorbis_info *vi){
   codec_setup_info     *ci=vi->codec_setup;
   int i;
@@ -504,15 +550,18 @@
   return(0);
 err_out:
   return(-1);
-} 
+}
 
 int vorbis_commentheader_out(vorbis_comment *vc,
-    				      ogg_packet *op){
+                                          ogg_packet *op){
 
   oggpack_buffer opb;
 
   oggpack_writeinit(&opb);
-  if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL;
+  if(_vorbis_pack_comment(&opb,vc)){
+    oggpack_writeclear(&opb);
+    return OV_EIMPL;
+  }
 
   op->packet = _ogg_malloc(oggpack_bytes(&opb));
   memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
@@ -521,21 +570,23 @@
   op->b_o_s=0;
   op->e_o_s=0;
   op->granulepos=0;
+  op->packetno=1;
 
+  oggpack_writeclear(&opb);
   return 0;
 }
 
 int vorbis_analysis_headerout(vorbis_dsp_state *v,
-			      vorbis_comment *vc,
-			      ogg_packet *op,
-			      ogg_packet *op_comm,
-			      ogg_packet *op_code){
+                              vorbis_comment *vc,
+                              ogg_packet *op,
+                              ogg_packet *op_comm,
+                              ogg_packet *op_code){
   int ret=OV_EIMPL;
   vorbis_info *vi=v->vi;
   oggpack_buffer opb;
-  backend_lookup_state *b=v->backend_state;
+  private_state *b=v->backend_state;
 
-  if(!b){
+  if(!b||vi->channels<=0){
     ret=OV_EFAULT;
     goto err_out;
   }
@@ -554,6 +605,7 @@
   op->b_o_s=1;
   op->e_o_s=0;
   op->granulepos=0;
+  op->packetno=0;
 
   /* second header packet (comments) **********************************/
 
@@ -568,6 +620,7 @@
   op_comm->b_o_s=0;
   op_comm->e_o_s=0;
   op_comm->granulepos=0;
+  op_comm->packetno=1;
 
   /* third header packet (modes/codebooks) ****************************/
 
@@ -582,21 +635,42 @@
   op_code->b_o_s=0;
   op_code->e_o_s=0;
   op_code->granulepos=0;
+  op_code->packetno=2;
 
   oggpack_writeclear(&opb);
   return(0);
  err_out:
-  oggpack_writeclear(&opb);
   memset(op,0,sizeof(*op));
   memset(op_comm,0,sizeof(*op_comm));
   memset(op_code,0,sizeof(*op_code));
 
-  if(b->header)_ogg_free(b->header);
-  if(b->header1)_ogg_free(b->header1);
-  if(b->header2)_ogg_free(b->header2);
-  b->header=NULL;
-  b->header1=NULL;
-  b->header2=NULL;
+  if(b){
+    oggpack_writeclear(&opb);
+    if(b->header)_ogg_free(b->header);
+    if(b->header1)_ogg_free(b->header1);
+    if(b->header2)_ogg_free(b->header2);
+    b->header=NULL;
+    b->header1=NULL;
+    b->header2=NULL;
+  }
   return(ret);
 }
 
+double vorbis_granule_time(vorbis_dsp_state *v,ogg_int64_t granulepos){
+  if(granulepos == -1) return -1;
+
+  /* We're not guaranteed a 64 bit unsigned type everywhere, so we
+     have to put the unsigned granpo in a signed type. */
+  if(granulepos>=0){
+    return((double)granulepos/v->vi->rate);
+  }else{
+    ogg_int64_t granuleoff=0xffffffff;
+    granuleoff<<=31;
+    granuleoff|=0x7ffffffff;
+    return(((double)granulepos+2+granuleoff+granuleoff)/v->vi->rate);
+  }
+}
+
+const char *vorbis_version_string(void){
+  return GENERAL_VENDOR_STRING;
+}
--- a/sys/src/cmd/audio/libvorbis/lookup.c
+++ b/sys/src/cmd/audio/libvorbis/lookup.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: lookup based functions
-  last mod: $Id: lookup.c,v 1.9 2002/01/22 08:06:07 xiphmont Exp $
+  last mod: $Id: lookup.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -56,16 +56,16 @@
 
 #ifdef INT_LOOKUP
 /* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
-   16.16 format 
+   16.16 format
 
    returns in m.8 format */
 long vorbis_invsqlook_i(long a,long e){
-  long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); 
+  long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1);
   long d=(a&INVSQ_LOOKUP_I_MASK)<<(16-INVSQ_LOOKUP_I_SHIFT); /*  0.16 */
   long val=INVSQ_LOOKUP_I[i]-                                /*  1.16 */
     (((INVSQ_LOOKUP_I[i]-INVSQ_LOOKUP_I[i+1])*               /*  0.16 */
       d)>>16);                                               /* result 1.16 */
-  
+
   e+=32;
   if(e&1)val=(val*5792)>>13; /* multiply val by 1/sqrt(2) */
   e=(e>>1)-8;
@@ -88,7 +88,7 @@
   int i=a>>COS_LOOKUP_I_SHIFT;
   int d=a&COS_LOOKUP_I_MASK;
   return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
-			   COS_LOOKUP_I_SHIFT);
+                           COS_LOOKUP_I_SHIFT);
 }
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/lookup.h
+++ b/sys/src/cmd/audio/libvorbis/lookup.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: lookup based functions
-  last mod: $Id: lookup.h,v 1.7 2002/07/11 06:40:49 xiphmont Exp $
+  last mod: $Id: lookup.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -27,6 +27,6 @@
 extern long vorbis_invsqlook_i(long a,long e);
 extern long vorbis_coslook_i(long a);
 extern float vorbis_fromdBlook_i(long a);
-#endif 
+#endif
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/lookup_data.h
+++ b/sys/src/cmd/audio/libvorbis/lookup_data.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: lookup data; generated by lookups.pl; edit there
-  last mod: $Id: lookup_data.h,v 1.9 2002/07/11 06:40:49 xiphmont Exp $
+  last mod: $Id: lookup_data.h 16037 2009-05-26 21:10:58Z xiphmont $
 
  ********************************************************************/
 
@@ -19,76 +19,76 @@
 
 #ifdef FLOAT_LOOKUP
 #define COS_LOOKUP_SZ 128
-static float COS_LOOKUP[COS_LOOKUP_SZ+1]={
-	+1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f,
-	+0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f,
-	+0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f,
-	+0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f,
-	+0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f,
-	+0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f,
-	+0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f,
-	+0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f,
-	+0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f,
-	+0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f,
-	+0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f,
-	+0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f,
-	+0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f,
-	+0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f,
-	+0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f,
-	+0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f,
-	+0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f,
-	-0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f,
-	-0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f,
-	-0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f,
-	-0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f,
-	-0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f,
-	-0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f,
-	-0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f,
-	-0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f,
-	-0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f,
-	-0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f,
-	-0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f,
-	-0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f,
-	-0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f,
-	-0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f,
-	-0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f,
-	-1.0000000000000f,
+static const float COS_LOOKUP[COS_LOOKUP_SZ+1]={
+        +1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f,
+        +0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f,
+        +0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f,
+        +0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f,
+        +0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f,
+        +0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f,
+        +0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f,
+        +0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f,
+        +0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f,
+        +0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f,
+        +0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f,
+        +0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f,
+        +0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f,
+        +0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f,
+        +0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f,
+        +0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f,
+        +0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f,
+        -0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f,
+        -0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f,
+        -0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f,
+        -0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f,
+        -0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f,
+        -0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f,
+        -0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f,
+        -0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f,
+        -0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f,
+        -0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f,
+        -0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f,
+        -0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f,
+        -0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f,
+        -0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f,
+        -0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f,
+        -1.0000000000000f,
 };
 
 #define INVSQ_LOOKUP_SZ 32
-static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
-	1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f,
-	1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f,
-	1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f,
-	1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f,
-	1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f,
-	1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f,
-	1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f,
-	1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f,
-	1.000000000000f,
+static const float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
+        1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f,
+        1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f,
+        1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f,
+        1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f,
+        1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f,
+        1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f,
+        1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f,
+        1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f,
+        1.000000000000f,
 };
 
-#define INVSQ2EXP_LOOKUP_MIN -32
+#define INVSQ2EXP_LOOKUP_MIN (-32)
 #define INVSQ2EXP_LOOKUP_MAX 32
-static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\
+static const float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\
                               INVSQ2EXP_LOOKUP_MIN+1]={
-	         65536.f,    46340.95001f,         32768.f,    23170.47501f,
-	         16384.f,     11585.2375f,          8192.f,    5792.618751f,
-	          4096.f,    2896.309376f,          2048.f,    1448.154688f,
-	          1024.f,    724.0773439f,           512.f,     362.038672f,
-	           256.f,     181.019336f,           128.f,    90.50966799f,
-	            64.f,      45.254834f,            32.f,      22.627417f,
-	            16.f,     11.3137085f,             8.f,    5.656854249f,
-	             4.f,    2.828427125f,             2.f,    1.414213562f,
-	             1.f,   0.7071067812f,            0.5f,   0.3535533906f,
-	           0.25f,   0.1767766953f,          0.125f,  0.08838834765f,
-	         0.0625f,  0.04419417382f,        0.03125f,  0.02209708691f,
-	       0.015625f,  0.01104854346f,      0.0078125f, 0.005524271728f,
-	     0.00390625f, 0.002762135864f,    0.001953125f, 0.001381067932f,
-	   0.0009765625f, 0.000690533966f,  0.00048828125f, 0.000345266983f,
-	 0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f,
-	6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f,
-	1.525878906e-05f,
+                 65536.f,    46340.95001f,         32768.f,    23170.47501f,
+                 16384.f,     11585.2375f,          8192.f,    5792.618751f,
+                  4096.f,    2896.309376f,          2048.f,    1448.154688f,
+                  1024.f,    724.0773439f,           512.f,     362.038672f,
+                   256.f,     181.019336f,           128.f,    90.50966799f,
+                    64.f,      45.254834f,            32.f,      22.627417f,
+                    16.f,     11.3137085f,             8.f,    5.656854249f,
+                     4.f,    2.828427125f,             2.f,    1.414213562f,
+                     1.f,   0.7071067812f,            0.5f,   0.3535533906f,
+                   0.25f,   0.1767766953f,          0.125f,  0.08838834765f,
+                 0.0625f,  0.04419417382f,        0.03125f,  0.02209708691f,
+               0.015625f,  0.01104854346f,      0.0078125f, 0.005524271728f,
+             0.00390625f, 0.002762135864f,    0.001953125f, 0.001381067932f,
+           0.0009765625f, 0.000690533966f,  0.00048828125f, 0.000345266983f,
+         0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f,
+        6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f,
+        1.525878906e-05f,
 };
 
 #endif
@@ -98,90 +98,93 @@
 #define FROMdB_SHIFT 5
 #define FROMdB2_SHIFT 3
 #define FROMdB2_MASK 31
-static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
-	             1.f,   0.6309573445f,   0.3981071706f,   0.2511886432f,
-	   0.1584893192f,            0.1f,  0.06309573445f,  0.03981071706f,
-	  0.02511886432f,  0.01584893192f,           0.01f, 0.006309573445f,
-	 0.003981071706f, 0.002511886432f, 0.001584893192f,          0.001f,
-	0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f,
-	         0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f,
-	1.584893192e-05f,          1e-05f,6.309573445e-06f,3.981071706e-06f,
-	2.511886432e-06f,1.584893192e-06f,          1e-06f,6.309573445e-07f,
-	3.981071706e-07f,2.511886432e-07f,1.584893192e-07f,
+
+#ifdef FLOAT_LOOKUP
+static const float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
+                     1.f,   0.6309573445f,   0.3981071706f,   0.2511886432f,
+           0.1584893192f,            0.1f,  0.06309573445f,  0.03981071706f,
+          0.02511886432f,  0.01584893192f,           0.01f, 0.006309573445f,
+         0.003981071706f, 0.002511886432f, 0.001584893192f,          0.001f,
+        0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f,
+                 0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f,
+        1.584893192e-05f,          1e-05f,6.309573445e-06f,3.981071706e-06f,
+        2.511886432e-06f,1.584893192e-06f,          1e-06f,6.309573445e-07f,
+        3.981071706e-07f,2.511886432e-07f,1.584893192e-07f,
 };
 
-static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
-	   0.9928302478f,   0.9786445908f,   0.9646616199f,   0.9508784391f,
-	   0.9372921937f,     0.92390007f,   0.9106992942f,   0.8976871324f,
-	   0.8848608897f,   0.8722179097f,   0.8597555737f,   0.8474713009f,
-	    0.835362547f,   0.8234268041f,   0.8116616003f,   0.8000644989f,
-	   0.7886330981f,   0.7773650302f,   0.7662579617f,    0.755309592f,
-	   0.7445176537f,   0.7338799116f,   0.7233941627f,   0.7130582353f,
-	   0.7028699885f,   0.6928273125f,   0.6829281272f,   0.6731703824f,
-	   0.6635520573f,   0.6540711597f,   0.6447257262f,   0.6355138211f,
+static const float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
+           0.9928302478f,   0.9786445908f,   0.9646616199f,   0.9508784391f,
+           0.9372921937f,     0.92390007f,   0.9106992942f,   0.8976871324f,
+           0.8848608897f,   0.8722179097f,   0.8597555737f,   0.8474713009f,
+            0.835362547f,   0.8234268041f,   0.8116616003f,   0.8000644989f,
+           0.7886330981f,   0.7773650302f,   0.7662579617f,    0.755309592f,
+           0.7445176537f,   0.7338799116f,   0.7233941627f,   0.7130582353f,
+           0.7028699885f,   0.6928273125f,   0.6829281272f,   0.6731703824f,
+           0.6635520573f,   0.6540711597f,   0.6447257262f,   0.6355138211f,
 };
+#endif
 
 #ifdef INT_LOOKUP
 
 #define INVSQ_LOOKUP_I_SHIFT 10
 #define INVSQ_LOOKUP_I_MASK 1023
-static long INVSQ_LOOKUP_I[64+1]={
-	   92682l,   91966l,   91267l,   90583l,
-	   89915l,   89261l,   88621l,   87995l,
-	   87381l,   86781l,   86192l,   85616l,
-	   85051l,   84497l,   83953l,   83420l,
-	   82897l,   82384l,   81880l,   81385l,
-	   80899l,   80422l,   79953l,   79492l,
-	   79039l,   78594l,   78156l,   77726l,
-	   77302l,   76885l,   76475l,   76072l,
-	   75674l,   75283l,   74898l,   74519l,
-	   74146l,   73778l,   73415l,   73058l,
-	   72706l,   72359l,   72016l,   71679l,
-	   71347l,   71019l,   70695l,   70376l,
-	   70061l,   69750l,   69444l,   69141l,
-	   68842l,   68548l,   68256l,   67969l,
-	   67685l,   67405l,   67128l,   66855l,
-	   66585l,   66318l,   66054l,   65794l,
-	   65536l,
+static const long INVSQ_LOOKUP_I[64+1]={
+           92682l,   91966l,   91267l,   90583l,
+           89915l,   89261l,   88621l,   87995l,
+           87381l,   86781l,   86192l,   85616l,
+           85051l,   84497l,   83953l,   83420l,
+           82897l,   82384l,   81880l,   81385l,
+           80899l,   80422l,   79953l,   79492l,
+           79039l,   78594l,   78156l,   77726l,
+           77302l,   76885l,   76475l,   76072l,
+           75674l,   75283l,   74898l,   74519l,
+           74146l,   73778l,   73415l,   73058l,
+           72706l,   72359l,   72016l,   71679l,
+           71347l,   71019l,   70695l,   70376l,
+           70061l,   69750l,   69444l,   69141l,
+           68842l,   68548l,   68256l,   67969l,
+           67685l,   67405l,   67128l,   66855l,
+           66585l,   66318l,   66054l,   65794l,
+           65536l,
 };
 
 #define COS_LOOKUP_I_SHIFT 9
 #define COS_LOOKUP_I_MASK 511
 #define COS_LOOKUP_I_SZ 128
-static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
-	   16384l,   16379l,   16364l,   16340l,
-	   16305l,   16261l,   16207l,   16143l,
-	   16069l,   15986l,   15893l,   15791l,
-	   15679l,   15557l,   15426l,   15286l,
-	   15137l,   14978l,   14811l,   14635l,
-	   14449l,   14256l,   14053l,   13842l,
-	   13623l,   13395l,   13160l,   12916l,
-	   12665l,   12406l,   12140l,   11866l,
-	   11585l,   11297l,   11003l,   10702l,
-	   10394l,   10080l,    9760l,    9434l,
-	    9102l,    8765l,    8423l,    8076l,
-	    7723l,    7366l,    7005l,    6639l,
-	    6270l,    5897l,    5520l,    5139l,
-	    4756l,    4370l,    3981l,    3590l,
-	    3196l,    2801l,    2404l,    2006l,
-	    1606l,    1205l,     804l,     402l,
-	       0l,    -401l,    -803l,   -1204l,
-	   -1605l,   -2005l,   -2403l,   -2800l,
-	   -3195l,   -3589l,   -3980l,   -4369l,
-	   -4755l,   -5138l,   -5519l,   -5896l,
-	   -6269l,   -6638l,   -7004l,   -7365l,
-	   -7722l,   -8075l,   -8422l,   -8764l,
-	   -9101l,   -9433l,   -9759l,  -10079l,
-	  -10393l,  -10701l,  -11002l,  -11296l,
-	  -11584l,  -11865l,  -12139l,  -12405l,
-	  -12664l,  -12915l,  -13159l,  -13394l,
-	  -13622l,  -13841l,  -14052l,  -14255l,
-	  -14448l,  -14634l,  -14810l,  -14977l,
-	  -15136l,  -15285l,  -15425l,  -15556l,
-	  -15678l,  -15790l,  -15892l,  -15985l,
-	  -16068l,  -16142l,  -16206l,  -16260l,
-	  -16304l,  -16339l,  -16363l,  -16378l,
-	  -16383l,
+static const long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
+           16384l,   16379l,   16364l,   16340l,
+           16305l,   16261l,   16207l,   16143l,
+           16069l,   15986l,   15893l,   15791l,
+           15679l,   15557l,   15426l,   15286l,
+           15137l,   14978l,   14811l,   14635l,
+           14449l,   14256l,   14053l,   13842l,
+           13623l,   13395l,   13160l,   12916l,
+           12665l,   12406l,   12140l,   11866l,
+           11585l,   11297l,   11003l,   10702l,
+           10394l,   10080l,    9760l,    9434l,
+            9102l,    8765l,    8423l,    8076l,
+            7723l,    7366l,    7005l,    6639l,
+            6270l,    5897l,    5520l,    5139l,
+            4756l,    4370l,    3981l,    3590l,
+            3196l,    2801l,    2404l,    2006l,
+            1606l,    1205l,     804l,     402l,
+               0l,    -401l,    -803l,   -1204l,
+           -1605l,   -2005l,   -2403l,   -2800l,
+           -3195l,   -3589l,   -3980l,   -4369l,
+           -4755l,   -5138l,   -5519l,   -5896l,
+           -6269l,   -6638l,   -7004l,   -7365l,
+           -7722l,   -8075l,   -8422l,   -8764l,
+           -9101l,   -9433l,   -9759l,  -10079l,
+          -10393l,  -10701l,  -11002l,  -11296l,
+          -11584l,  -11865l,  -12139l,  -12405l,
+          -12664l,  -12915l,  -13159l,  -13394l,
+          -13622l,  -13841l,  -14052l,  -14255l,
+          -14448l,  -14634l,  -14810l,  -14977l,
+          -15136l,  -15285l,  -15425l,  -15556l,
+          -15678l,  -15790l,  -15892l,  -15985l,
+          -16068l,  -16142l,  -16206l,  -16260l,
+          -16304l,  -16339l,  -16363l,  -16378l,
+          -16383l,
 };
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/lpc.c
+++ b/sys/src/cmd/audio/libvorbis/lpc.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: LPC low level routines
-  last mod: $Id: lpc.c,v 1.35 2002/07/11 06:40:49 xiphmont Exp $
+  last mod: $Id: lpc.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -58,31 +58,33 @@
 /* Input : n elements of time doamin data
    Output: m lpc coefficients, excitation energy */
 
-float vorbis_lpc_from_data(float *data,float *lpc,int n,int m){
-  float *aut=malloc(sizeof(*aut)*(m+1));
-  float error;
+float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
+  double *aut=malloc(sizeof(*aut)*(m+1));
+  double *lpc=malloc(sizeof(*lpc)*(m));
+  double error;
+  double epsilon;
   int i,j;
 
   /* autocorrelation, p+1 lag coefficients */
-
   j=m+1;
   while(j--){
     double d=0; /* double needed for accumulator depth */
-    for(i=j;i<n;i++)d+=data[i]*data[i-j];
+    for(i=j;i<n;i++)d+=(double)data[i]*data[i-j];
     aut[j]=d;
   }
-  
+
   /* Generate lpc coefficients from autocorr values */
 
-  error=aut[0];
-  
+  /* set our noise floor to about -100dB */
+  error=aut[0] * (1. + 1e-10);
+  epsilon=1e-9*aut[0]+1e-10;
+
   for(i=0;i<m;i++){
-    float r= -aut[i+1];
+    double r= -aut[i+1];
 
-    if(error==0){
-      memset(lpc,0,m*sizeof(*lpc));
-      free(aut);
-      return 0;
+    if(error<epsilon){
+      memset(lpc+i,0,(m-i)*sizeof(*lpc));
+      goto done;
     }
 
     /* Sum up this iteration's reflection coefficient; note that in
@@ -91,87 +93,49 @@
        each iteration. */
 
     for(j=0;j<i;j++)r-=lpc[j]*aut[i-j];
-    r/=error; 
+    r/=error;
 
     /* Update LPC coefficients and total error */
-    
+
     lpc[i]=r;
     for(j=0;j<i/2;j++){
-      float tmp=lpc[j];
+      double tmp=lpc[j];
+
       lpc[j]+=r*lpc[i-1-j];
       lpc[i-1-j]+=r*tmp;
     }
-    if(i%2)lpc[j]+=lpc[j]*r;
-    
-    error*=1.f-r*r;
-  }
-  
-  /* we need the error value to know how big an impulse to hit the
-     filter with later */
-  free(aut);
-  return error;
-}
+    if(i&1)lpc[j]+=lpc[j]*r;
 
-/* Input : n element envelope spectral curve
-   Output: m lpc coefficients, excitation energy */
+    error*=1.-r*r;
 
-float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l){
-  int n=l->ln;
-  int m=l->m;
-  float *work=malloc(sizeof(*work)*(n+n));
-  float fscale=.5f/n;
-  float tmp;
-  int i,j;
-  
-  /* input is a real curve. make it complex-real */
-  /* This mixes phase, but the LPC generation doesn't care. */
-  for(i=0;i<n;i++){
-    work[i*2]=curve[i]*fscale;
-    work[i*2+1]=0;
   }
-  work[n*2-1]=curve[n-1]*fscale;
-  
-  n*=2;
-  drft_backward(&l->fft,work);
 
-  /* The autocorrelation will not be circular.  Shift, else we lose
-     most of the power in the edges. */
-  
-  for(i=0,j=n/2;i<n/2;){
-    float temp=work[i];
-    work[i++]=work[j];
-    work[j++]=temp;
+ done:
+
+  /* slightly damp the filter */
+  {
+    double g = .99;
+    double damp = g;
+    for(j=0;j<m;j++){
+      lpc[j]*=damp;
+      damp*=g;
+    }
   }
-  
-  /* we *could* shave speed here by skimping on the edges (thus
-     speeding up the autocorrelation in vorbis_lpc_from_data) but we
-     don't right now. */
-  tmp = vorbis_lpc_from_data(work,lpc,n,m);
-  free(work);
-  return(tmp);
-}
 
-void lpc_init(lpc_lookup *l,long mapped, int m){
-  memset(l,0,sizeof(*l));
+  for(j=0;j<m;j++)lpci[j]=(float)lpc[j];
 
-  l->ln=mapped;
-  l->m=m;
+  /* we need the error value to know how big an impulse to hit the
+     filter with later */
 
-  /* we cheat decoding the LPC spectrum via FFTs */  
-  drft_init(&l->fft,mapped*2);
-
+  free(lpc);
+  free(aut);
+  return error;
 }
 
-void lpc_clear(lpc_lookup *l){
-  if(l){
-    drft_clear(&l->fft);
-  }
-}
-
 void vorbis_lpc_predict(float *coeff,float *prime,int m,
                      float *data,long n){
 
-  /* in: coeff[0...m-1] LPC coefficients 
+  /* in: coeff[0...m-1] LPC coefficients
          prime[0...m-1] initial values (allocated size of n+m-1)
     out: data[0...n-1] data samples */
 
@@ -192,9 +156,8 @@
     p=m;
     for(j=0;j<m;j++)
       y-=work[o++]*coeff[--p];
-    
+
     data[i]=work[o]=y;
   }
   free(work);
-  return;
 }
--- a/sys/src/cmd/audio/libvorbis/lpc.h
+++ b/sys/src/cmd/audio/libvorbis/lpc.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: LPC low level routines
-  last mod: $Id: lpc.h,v 1.19 2002/07/11 06:40:49 xiphmont Exp $
+  last mod: $Id: lpc.h 16037 2009-05-26 21:10:58Z xiphmont $
 
  ********************************************************************/
 
@@ -19,25 +19,11 @@
 #define _V_LPC_H_
 
 #include "vorbis/codec.h"
-#include "smallft.h"
 
-typedef struct lpclook{
-  /* en/decode lookups */
-  drft_lookup fft;
-
-  int ln;
-  int m;
-
-} lpc_lookup;
-
-extern void lpc_init(lpc_lookup *l,long mapped, int m);
-extern void lpc_clear(lpc_lookup *l);
-
 /* simple linear scale LPC code */
 extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m);
-extern float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l);
 
 extern void vorbis_lpc_predict(float *coeff,float *prime,int m,
-			       float *data,long n);
+                               float *data,long n);
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/lsp.c
+++ b/sys/src/cmd/audio/libvorbis/lsp.c
@@ -5,20 +5,21 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: LSP (also called LSF) conversion routines
-  last mod: $Id: lsp.c,v 1.22 2002/07/17 21:28:37 xiphmont Exp $
+  last mod: $Id: lsp.c 19453 2015-03-02 22:35:34Z xiphmont $
 
   The LSP generation code is taken (with minimal modification and a
   few bugfixes) from "On the Computation of the LSP Frequencies" by
-  Joseph Rothweiler <[email protected]>, available at:
-  
-  http://www2.xtdl.com/~rothwlr/lsfpaper/lsfpage.html 
+  Joseph Rothweiler (see http://www.rothweiler.us for contact info).
+  The paper is available at:
 
+  http://www.myown1.com/joe/lsf
+
  ********************************************************************/
 
 /* Note that the lpc-lsp conversion finds the roots of polynomial with
@@ -45,14 +46,15 @@
    implementation.  The float lookup is likely the optimal choice on
    any machine with an FPU.  The integer implementation is *not* fixed
    point (due to the need for a large dynamic range and thus a
-   seperately tracked exponent) and thus much more complex than the
+   separately tracked exponent) and thus much more complex than the
    relatively simple float implementations. It's mostly for future
    work on a fully fixed point implementation for processors like the
    ARM family. */
 
-/* undefine both for the 'old' but more precise implementation */
-#define   FLOAT_LOOKUP
-#undef    INT_LOOKUP
+/* define either of these (preferably FLOAT_LOOKUP) to have faster
+   but less precise implementation. */
+#undef FLOAT_LOOKUP
+#undef INT_LOOKUP
 
 #ifdef FLOAT_LOOKUP
 #include "lookup.c" /* catch this in the build system; we #include for
@@ -61,11 +63,11 @@
 
 /* side effect: changes *lsp to cosines of lsp */
 void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
-			    float amp,float ampoffset){
+                            float amp,float ampoffset){
   int i;
   float wdel=M_PI/ln;
   vorbis_fpu_control fpu;
-  
+
   vorbis_fpu_setround(&fpu);
   for(i=0;i<m;i++)lsp[i]=vorbis_coslook(lsp[i]);
 
@@ -79,11 +81,11 @@
     float *ftmp=lsp;
     int c=m>>1;
 
-    do{
+    while(c--){
       q*=ftmp[0]-w;
       p*=ftmp[1]-w;
       ftmp+=2;
-    }while(--c);
+    }
 
     if(m&1){
       /* odd order filter; slightly assymetric */
@@ -98,10 +100,10 @@
     }
 
     q=frexp(p+q,&qexp);
-    q=vorbis_fromdBlook(amp*             
-			vorbis_invsqlook(q)*
-			vorbis_invsq2explook(qexp+m)- 
-			ampoffset);
+    q=vorbis_fromdBlook(amp*
+                        vorbis_invsqlook(q)*
+                        vorbis_invsq2explook(qexp+m)-
+                        ampoffset);
 
     do{
       curve[i++]*=q;
@@ -117,7 +119,7 @@
                        compilers (like gcc) that can't inline across
                        modules */
 
-static int MLOOP_1[64]={
+static const int MLOOP_1[64]={
    0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
   14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14,
   15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
@@ -124,7 +126,7 @@
   15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
 };
 
-static int MLOOP_2[64]={
+static const int MLOOP_2[64]={
   0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
   8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
   9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
@@ -131,12 +133,12 @@
   9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
 };
 
-static int MLOOP_3[8]={0,1,2,2,3,3,3,3};
+static const int MLOOP_3[8]={0,1,2,2,3,3,3,3};
 
 
 /* side effect: changes *lsp to cosines of lsp */
 void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
-			    float amp,float ampoffset){
+                            float amp,float ampoffset){
 
   /* 0 <= m < 256 */
 
@@ -160,8 +162,8 @@
 
     for(j=3;j<m;j+=2){
       if(!(shift=MLOOP_1[(pi|qi)>>25]))
-	if(!(shift=MLOOP_2[(pi|qi)>>19]))
-	  shift=MLOOP_3[(pi|qi)>>16];
+        if(!(shift=MLOOP_2[(pi|qi)>>19]))
+          shift=MLOOP_3[(pi|qi)>>16];
       qi=(qi>>shift)*labs(ilsp[j-1]-wi);
       pi=(pi>>shift)*labs(ilsp[j]-wi);
       qexp+=shift;
@@ -168,7 +170,7 @@
     }
     if(!(shift=MLOOP_1[(pi|qi)>>25]))
       if(!(shift=MLOOP_2[(pi|qi)>>19]))
-	shift=MLOOP_3[(pi|qi)>>16];
+        shift=MLOOP_3[(pi|qi)>>16];
 
     /* pi,qi normalized collectively, both tracked using qexp */
 
@@ -180,9 +182,9 @@
       qexp+=shift;
 
       if(!(shift=MLOOP_1[(pi|qi)>>25]))
-	if(!(shift=MLOOP_2[(pi|qi)>>19]))
-	  shift=MLOOP_3[(pi|qi)>>16];
-      
+        if(!(shift=MLOOP_2[(pi|qi)>>19]))
+          shift=MLOOP_3[(pi|qi)>>16];
+
       pi>>=shift;
       qi>>=shift;
       qexp+=shift-14*((m+1)>>1);
@@ -198,8 +200,8 @@
       /* even order filter; still symmetric */
 
       /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
-	 worth tracking step by step */
-      
+         worth tracking step by step */
+
       pi>>=shift;
       qi>>=shift;
       qexp+=shift-7*m;
@@ -207,29 +209,29 @@
       pi=((pi*pi)>>16);
       qi=((qi*qi)>>16);
       qexp=qexp*2+m;
-      
+
       pi*=(1<<14)-wi;
       qi*=(1<<14)+wi;
       qi=(qi+pi)>>14;
-      
+
     }
-    
 
+
     /* we've let the normalization drift because it wasn't important;
        however, for the lookup, things must be normalized again.  We
        need at most one right shift or a number of left shifts */
 
     if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
-      qi>>=1; qexp++; 
+      qi>>=1; qexp++;
     }else
       while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
-	qi<<=1; qexp--; 
+        qi<<=1; qexp--;
       }
 
     amp=vorbis_fromdBlook_i(ampi*                     /*  n.4         */
-			    vorbis_invsqlook_i(qi,qexp)- 
-			                              /*  m.8, m+n<=8 */
-			    ampoffseti);              /*  8.12[0]     */
+                            vorbis_invsqlook_i(qi,qexp)-
+                                                      /*  m.8, m+n<=8 */
+                            ampoffseti);              /*  8.12[0]     */
 
     curve[i]*=amp;
     while(map[++i]==k)curve[i]*=amp;
@@ -236,7 +238,7 @@
   }
 }
 
-#else 
+#else
 
 /* old, nonoptimized but simple version for any poor sap who needs to
    figure out what the hell this code does, or wants the other
@@ -244,7 +246,7 @@
 
 /* side effect: changes *lsp to cosines of lsp */
 void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
-			    float amp,float ampoffset){
+                            float amp,float ampoffset){
   int i;
   float wdel=M_PI/ln;
   for(i=0;i<m;i++)lsp[i]=2.f*cos(lsp[i]);
@@ -288,16 +290,13 @@
   for(i=2; i<= ord; i++) {
     for(j=ord; j >= i; j--) {
       g[j-2] -= g[j];
-      g[j] += g[j]; 
+      g[j] += g[j];
     }
   }
 }
 
 static int comp(const void *a,const void *b){
-  if(*(float *)a<*(float *)b)
-    return(1);
-  else
-    return(-1);
+  return (*(float *)a<*(float *)b)-(*(float *)a>*(float *)b);
 }
 
 /* Newton-Raphson-Maehly actually functioned as a decent root finder,
@@ -310,7 +309,6 @@
 #define EPSILON 10e-7
 static int Laguerre_With_Deflation(float *a,int ord,float *r){
   int i,m;
-  double lastdelta=0.f;
   double *defl=malloc(sizeof(*defl)*(ord+1));
   for(i=0;i<=ord;i++)defl[i]=a[i];
 
@@ -320,27 +318,27 @@
     /* iterate a root */
     while(1){
       double p=defl[m],pp=0.f,ppp=0.f,denom;
-      
+
       /* eval the polynomial and its first two derivatives */
       for(i=m;i>0;i--){
-	ppp = new*ppp + pp;
-	pp  = new*pp  + p;
-	p   = new*p   + defl[i-1];
+        ppp = new*ppp + pp;
+        pp  = new*pp  + p;
+        p   = new*p   + defl[i-1];
       }
-      
+
       /* Laguerre's method */
       denom=(m-1) * ((m-1)*pp*pp - m*p*ppp);
-      if(denom<0) {
-         free(defl);
-	return(-1);  /* complex root!  The LPC generator handed us a bad filter */
+      if(denom<0){
+        free(defl);
+        return(-1);  /* complex root!  The LPC generator handed us a bad filter */
       }
 
       if(pp>0){
-	denom = pp + sqrt(denom);
-	if(denom<EPSILON)denom=EPSILON;
+        denom = pp + sqrt(denom);
+        if(denom<EPSILON)denom=EPSILON;
       }else{
-	denom = pp - sqrt(denom);
-	if(denom>-(EPSILON))denom=-(EPSILON);
+        denom = pp - sqrt(denom);
+        if(denom>-(EPSILON))denom=-(EPSILON);
       }
 
       delta  = m*p/denom;
@@ -348,14 +346,13 @@
 
       if(delta<0.f)delta*=-1;
 
-      if(fabs(delta/new)<10e-12)break; 
-      lastdelta=delta;
+      if(fabs(delta/new)<10e-12)break;
     }
 
     r[m-1]=new;
 
     /* forward deflation */
-    
+
     for(i=m;i>0;i--)
       defl[i-1]+=new*defl[i];
     defl++;
@@ -373,10 +370,10 @@
   double *root=malloc(ord*sizeof(*root));
 
   for(i=0; i<ord;i++) root[i] = r[i];
-  
+
   while(error>1e-20){
     error=0;
-    
+
     for(i=0; i<ord; i++) { /* Update each point. */
       double pp=0.,delta;
       double rooti=root[i];
@@ -383,8 +380,8 @@
       double p=a[ord];
       for(k=ord-1; k>= 0; k--) {
 
-	pp= pp* rooti + p;
-	p = p * rooti + a[k];
+        pp= pp* rooti + p;
+        p = p * rooti + a[k];
       }
 
       delta = p/pp;
@@ -391,11 +388,12 @@
       root[i] -= delta;
       error+= delta*delta;
     }
-    
-    if(count>40) {
-        free(root);
-        return(-1);
+
+    if(count>40){
+      free(root);
+      return(-1);
     }
+
     count++;
   }
 
@@ -412,10 +410,10 @@
 int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m){
   int order2=(m+1)>>1;
   int g1_order,g2_order;
-  float *g1=malloc(sizeof(*g1)*(order2+1));
-  float *g2=malloc(sizeof(*g2)*(order2+1));
-  float *g1r=malloc(sizeof(*g1r)*(order2+1));
-  float *g2r=malloc(sizeof(*g2r)*(order2+1));
+  float *g1=malloc(4*sizeof(*g1)*(order2+1));
+  float *g2=&g1[(order2+1)];
+  float *g1r=&g1[2*(order2+1)];
+  float *g2r=&g1[3*(order2+1)];
   int i;
 
   /* even and odd are slightly different base cases */
@@ -426,12 +424,12 @@
   /* Compute the first half of K & R F1 & F2 polynomials. */
   /* Compute half of the symmetric and antisymmetric polynomials. */
   /* Remove the roots at +1 and -1. */
-  
+
   g1[g1_order] = 1.f;
   for(i=1;i<=g1_order;i++) g1[g1_order-i] = lpc[i-1]+lpc[m-i];
   g2[g2_order] = 1.f;
   for(i=1;i<=g2_order;i++) g2[g2_order-i] = lpc[i-1]-lpc[m-i];
-  
+
   if(g1_order>g2_order){
     for(i=2; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+2];
   }else{
@@ -445,10 +443,11 @@
 
   /* Find the roots of the 2 even polynomials.*/
   if(Laguerre_With_Deflation(g1,g1_order,g1r) ||
-     Laguerre_With_Deflation(g2,g2_order,g2r)) {
-    free(g1); free(g2); free(g1r); free(g2r);
+     Laguerre_With_Deflation(g2,g2_order,g2r)){
+    free(g1);
     return(-1);
   }
+
   Newton_Raphson(g1,g1_order,g1r); /* if it fails, it leaves g1r alone */
   Newton_Raphson(g2,g2_order,g2r); /* if it fails, it leaves g2r alone */
 
@@ -460,8 +459,6 @@
 
   for(i=0;i<g2_order;i++)
     lsp[i*2+1] = acos(g2r[i]);
-
-  free(g1); free(g2); free(g1r); free(g2r);
-
+  free(g1);
   return(0);
 }
--- a/sys/src/cmd/audio/libvorbis/lsp.h
+++ b/sys/src/cmd/audio/libvorbis/lsp.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
   function: LSP (also called LSF) conversion routines
-  last mod: $Id: lsp.h,v 1.11 2002/07/11 06:40:49 xiphmont Exp $
+  last mod: $Id: lsp.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -22,7 +22,7 @@
 extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m);
 
 extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,
-				float *lsp,int m,
-				float amp,float ampoffset);
-  
+                                float *lsp,int m,
+                                float amp,float ampoffset);
+
 #endif
--- a/sys/src/cmd/audio/libvorbis/mapping0.c
+++ b/sys/src/cmd/audio/libvorbis/mapping0.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: channel mapping 0 implementation
- last mod: $Id: mapping0.c,v 1.53 2002/07/13 06:12:46 xiphmont Exp $
+ last mod: $Id: mapping0.c 19441 2015-01-21 01:17:41Z xiphmont $
 
  ********************************************************************/
 
@@ -45,18 +45,8 @@
   }
 }
 
-static int ilog(unsigned int v){
-  int ret=0;
-  if(v)--v;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
-
 static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm,
-			  oggpack_buffer *opb){
+                          oggpack_buffer *opb){
   int i;
   vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
 
@@ -76,14 +66,14 @@
   if(info->coupling_steps>0){
     oggpack_write(opb,1,1);
     oggpack_write(opb,info->coupling_steps-1,8);
-    
+
     for(i=0;i<info->coupling_steps;i++){
-      oggpack_write(opb,info->coupling_mag[i],ilog(vi->channels));
-      oggpack_write(opb,info->coupling_ang[i],ilog(vi->channels));
+      oggpack_write(opb,info->coupling_mag[i],ov_ilog(vi->channels-1));
+      oggpack_write(opb,info->coupling_ang[i],ov_ilog(vi->channels-1));
     }
   }else
     oggpack_write(opb,0,1);
-  
+
   oggpack_write(opb,0,2); /* 2,3:reserved */
 
   /* we don't write the channel submappings if we only have one... */
@@ -100,46 +90,55 @@
 
 /* also responsible for range checking */
 static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
-  int i;
+  int i,b;
   vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info));
   codec_setup_info     *ci=vi->codec_setup;
   memset(info,0,sizeof(*info));
+  if(vi->channels<=0)goto err_out;
 
-  if(oggpack_read(opb,1))
+  b=oggpack_read(opb,1);
+  if(b<0)goto err_out;
+  if(b){
     info->submaps=oggpack_read(opb,4)+1;
-  else
+    if(info->submaps<=0)goto err_out;
+  }else
     info->submaps=1;
 
-  if(oggpack_read(opb,1)){
+  b=oggpack_read(opb,1);
+  if(b<0)goto err_out;
+  if(b){
     info->coupling_steps=oggpack_read(opb,8)+1;
-
+    if(info->coupling_steps<=0)goto err_out;
     for(i=0;i<info->coupling_steps;i++){
-      int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels));
-      int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels));
+      /* vi->channels > 0 is enforced in the caller */
+      int testM=info->coupling_mag[i]=
+        oggpack_read(opb,ov_ilog(vi->channels-1));
+      int testA=info->coupling_ang[i]=
+        oggpack_read(opb,ov_ilog(vi->channels-1));
 
-      if(testM<0 || 
-	 testA<0 || 
-	 testM==testA || 
-	 testM>=vi->channels ||
-	 testA>=vi->channels) goto err_out;
+      if(testM<0 ||
+         testA<0 ||
+         testM==testA ||
+         testM>=vi->channels ||
+         testA>=vi->channels) goto err_out;
     }
 
   }
 
-  if(oggpack_read(opb,2)>0)goto err_out; /* 2,3:reserved */
-    
+  if(oggpack_read(opb,2)!=0)goto err_out; /* 2,3:reserved */
+
   if(info->submaps>1){
     for(i=0;i<vi->channels;i++){
       info->chmuxlist[i]=oggpack_read(opb,4);
-      if(info->chmuxlist[i]>=info->submaps)goto err_out;
+      if(info->chmuxlist[i]>=info->submaps || info->chmuxlist[i]<0)goto err_out;
     }
   }
   for(i=0;i<info->submaps;i++){
     oggpack_read(opb,8); /* time submap unused */
     info->floorsubmap[i]=oggpack_read(opb,8);
-    if(info->floorsubmap[i]>=ci->floors)goto err_out;
+    if(info->floorsubmap[i]>=ci->floors || info->floorsubmap[i]<0)goto err_out;
     info->residuesubmap[i]=oggpack_read(opb,8);
-    if(info->residuesubmap[i]>=ci->residues)goto err_out;
+    if(info->residuesubmap[i]>=ci->residues || info->residuesubmap[i]<0)goto err_out;
   }
 
   return info;
@@ -161,107 +160,96 @@
 static long seq=0;
 static ogg_int64_t total=0;
 static float FLOOR1_fromdB_LOOKUP[256]={
-  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F, 
-  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F, 
-  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F, 
-  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F, 
-  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F, 
-  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F, 
-  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F, 
-  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F, 
-  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F, 
-  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F, 
-  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F, 
-  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F, 
-  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F, 
-  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F, 
-  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F, 
-  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F, 
-  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F, 
-  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F, 
-  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F, 
-  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F, 
-  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F, 
-  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F, 
-  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F, 
-  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F, 
-  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F, 
-  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F, 
-  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F, 
-  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F, 
-  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F, 
-  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F, 
-  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F, 
-  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F, 
-  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F, 
-  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F, 
-  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F, 
-  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F, 
-  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F, 
-  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 
-  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 
-  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 
-  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F, 
-  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F, 
-  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F, 
-  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F, 
-  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F, 
-  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F, 
-  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 
-  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F, 
-  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F, 
-  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F, 
-  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F, 
-  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F, 
-  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F, 
-  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F, 
-  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F, 
-  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 
-  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F, 
-  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F, 
-  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F, 
-  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F, 
-  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F, 
-  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F, 
-  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F, 
-  0.82788260F, 0.88168307F, 0.9389798F, 1.F, 
+  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
+  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
+  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
+  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
+  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
+  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
+  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
+  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
+  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
+  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
+  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
+  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
+  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
+  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
+  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
+  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
+  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
+  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
+  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
+  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
+  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
+  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
+  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
+  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
+  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
+  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
+  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
+  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
+  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
+  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
+  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
+  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
+  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
+  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
+  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
+  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
+  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
+  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
+  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
+  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
+  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
+  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
+  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
+  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
+  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
+  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
+  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
+  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
+  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
+  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
+  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
+  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
+  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
+  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
+  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
+  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
+  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
+  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
+  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
+  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
+  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
+  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
+  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
+  0.82788260F, 0.88168307F, 0.9389798F, 1.F,
 };
 
-#endif 
+#endif
 
-extern int *floor1_fit(vorbis_block *vb,vorbis_look_floor *look,
-		       const float *logmdct,   /* in */
-		       const float *logmask);
-extern int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor *look,
-				   int *A,int *B,
-				   int del);
-extern int floor1_encode(vorbis_block *vb,vorbis_look_floor *look,
-			 int *post,int *ilogmask);
 
-
 static int mapping0_forward(vorbis_block *vb){
   vorbis_dsp_state      *vd=vb->vd;
   vorbis_info           *vi=vd->vi;
   codec_setup_info      *ci=vi->codec_setup;
-  backend_lookup_state  *b=vb->vd->backend_state;
+  private_state         *b=vb->vd->backend_state;
   vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
   int                    n=vb->pcmend;
   int i,j,k;
 
   int    *nonzero    = malloc(sizeof(*nonzero)*vi->channels);
-  float *local_ampmax=malloc(sizeof(*local_ampmax)*vi->channels);
-
   float  **gmdct     = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
-  int    **ilogmaskch= _vorbis_block_alloc(vb,vi->channels*sizeof(*ilogmaskch));
+  int    **iwork      = _vorbis_block_alloc(vb,vi->channels*sizeof(*iwork));
   int ***floor_posts = _vorbis_block_alloc(vb,vi->channels*sizeof(*floor_posts));
-  
+
   float global_ampmax=vbi->ampmax;
+  float *local_ampmax=malloc(sizeof(*local_ampmax)*vi->channels);
   int blocktype=vbi->blocktype;
 
   int modenumber=vb->W;
   vorbis_info_mapping0 *info=ci->map_param[modenumber];
-  vorbis_look_psy *psy_look=
-    b->psy+blocktype+(vb->W?2:0);
+  vorbis_look_psy *psy_look=b->psy+blocktype+(vb->W?2:0);
 
   vb->mode=modenumber;
 
@@ -269,43 +257,90 @@
     float scale=4.f/n;
     float scale_dB;
 
-    float *pcm     =vb->pcm[i]; 
+    float *pcm     =vb->pcm[i];
     float *logfft  =pcm;
 
+    iwork[i]=_vorbis_block_alloc(vb,n/2*sizeof(**iwork));
     gmdct[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
 
-    scale_dB=todB(&scale);
+    scale_dB=todB(&scale) + .345; /* + .345 is a hack; the original
+                                     todB estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
 
 #if 0
-    if(vi->channels==2)
+    if(vi->channels==2){
       if(i==0)
-	_analysis_output("pcmL",seq,pcm,n,0,0,total-n/2);
+        _analysis_output("pcmL",seq,pcm,n,0,0,total-n/2);
       else
-	_analysis_output("pcmR",seq,pcm,n,0,0,total-n/2);
+        _analysis_output("pcmR",seq,pcm,n,0,0,total-n/2);
+    }else{
+      _analysis_output("pcm",seq,pcm,n,0,0,total-n/2);
+    }
 #endif
-  
+
     /* window the PCM data */
     _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
 
 #if 0
-    if(vi->channels==2)
+    if(vi->channels==2){
       if(i==0)
-	_analysis_output("windowedL",seq,pcm,n,0,0,total-n/2);
+        _analysis_output("windowedL",seq,pcm,n,0,0,total-n/2);
       else
-	_analysis_output("windowedR",seq,pcm,n,0,0,total-n/2);
+        _analysis_output("windowedR",seq,pcm,n,0,0,total-n/2);
+    }else{
+      _analysis_output("windowed",seq,pcm,n,0,0,total-n/2);
+    }
 #endif
 
     /* transform the PCM data */
     /* only MDCT right now.... */
     mdct_forward(b->transform[vb->W][0],pcm,gmdct[i]);
-    
+
     /* FFT yields more accurate tonal estimation (not phase sensitive) */
     drft_forward(&b->fft_look[vb->W],pcm);
-    logfft[0]=scale_dB+todB(pcm);
+    logfft[0]=scale_dB+todB(pcm)  + .345; /* + .345 is a hack; the
+                                     original todB estimation used on
+                                     IEEE 754 compliant machines had a
+                                     bug that returned dB values about
+                                     a third of a decibel too high.
+                                     The bug was harmless because
+                                     tunings implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
     local_ampmax[i]=logfft[0];
     for(j=1;j<n-1;j+=2){
       float temp=pcm[j]*pcm[j]+pcm[j+1]*pcm[j+1];
-      temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp);
+      temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp)  + .345; /* +
+                                     .345 is a hack; the original todB
+                                     estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
       if(temp>local_ampmax[i])local_ampmax[i]=temp;
     }
 
@@ -313,29 +348,33 @@
     if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i];
 
 #if 0
-    if(vi->channels==2)
-      if(i==0)
-	_analysis_output("fftL",seq,logfft,n/2,1,0,0);
-      else
-	_analysis_output("fftR",seq,logfft,n/2,1,0,0);
+    if(vi->channels==2){
+      if(i==0){
+        _analysis_output("fftL",seq,logfft,n/2,1,0,0);
+      }else{
+        _analysis_output("fftR",seq,logfft,n/2,1,0,0);
+      }
+    }else{
+      _analysis_output("fft",seq,logfft,n/2,1,0,0);
+    }
 #endif
 
   }
-  
+
   {
     float   *noise        = _vorbis_block_alloc(vb,n/2*sizeof(*noise));
     float   *tone         = _vorbis_block_alloc(vb,n/2*sizeof(*tone));
-    
+
     for(i=0;i<vi->channels;i++){
       /* the encoder setup assumes that all the modes used by any
-	 specific bitrate tweaking use the same floor */
-      
+         specific bitrate tweaking use the same floor */
+
       int submap=info->chmuxlist[i];
-      
+
       /* the following makes things clearer to *me* anyway */
       float *mdct    =gmdct[i];
       float *logfft  =vb->pcm[i];
-      
+
       float *logmdct =logfft+n/2;
       float *logmask =logfft;
 
@@ -343,21 +382,34 @@
 
       floor_posts[i]=_vorbis_block_alloc(vb,PACKETBLOBS*sizeof(**floor_posts));
       memset(floor_posts[i],0,sizeof(**floor_posts)*PACKETBLOBS);
-      
+
       for(j=0;j<n/2;j++)
-	logmdct[j]=todB(mdct+j);
+        logmdct[j]=todB(mdct+j)  + .345; /* + .345 is a hack; the original
+                                     todB estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
 
 #if 0
       if(vi->channels==2){
-	if(i==0)
-	  _analysis_output("mdctL",seq,logmdct,n/2,1,0,0);
-	else
-	  _analysis_output("mdctR",seq,logmdct,n/2,1,0,0);
+        if(i==0)
+          _analysis_output("mdctL",seq,logmdct,n/2,1,0,0);
+        else
+          _analysis_output("mdctR",seq,logmdct,n/2,1,0,0);
       }else{
-	_analysis_output("mdct",seq,logmdct,n/2,1,0,0);
+        _analysis_output("mdct",seq,logmdct,n/2,1,0,0);
       }
-#endif 
-      
+#endif
+
       /* first step; noise masking.  Not only does 'noise masking'
          give us curves from which we can decide how much resolution
          to give noise parts of the spectrum, it also implicitly hands
@@ -365,15 +417,17 @@
          'noise_depth' vector, the more tonal that area is) */
 
       _vp_noisemask(psy_look,
-		    logmdct,
-		    noise); /* noise does not have by-frequency offset
+                    logmdct,
+                    noise); /* noise does not have by-frequency offset
                                bias applied yet */
 #if 0
       if(vi->channels==2){
-	if(i==0)
-	  _analysis_output("noiseL",seq,noise,n/2,1,0,0);
-	else
-	  _analysis_output("noiseR",seq,noise,n/2,1,0,0);
+        if(i==0)
+          _analysis_output("noiseL",seq,noise,n/2,1,0,0);
+        else
+          _analysis_output("noiseR",seq,noise,n/2,1,0,0);
+      }else{
+        _analysis_output("noise",seq,noise,n/2,1,0,0);
       }
 #endif
 
@@ -382,37 +436,61 @@
          vector.  This includes tone masking, peak limiting and ATH */
 
       _vp_tonemask(psy_look,
-		   logfft,
-		   tone,
-		   global_ampmax,
-		   local_ampmax[i]);
+                   logfft,
+                   tone,
+                   global_ampmax,
+                   local_ampmax[i]);
 
 #if 0
       if(vi->channels==2){
-	if(i==0)
-	  _analysis_output("toneL",seq,tone,n/2,1,0,0);
-	else
-	  _analysis_output("toneR",seq,tone,n/2,1,0,0);
+        if(i==0)
+          _analysis_output("toneL",seq,tone,n/2,1,0,0);
+        else
+          _analysis_output("toneR",seq,tone,n/2,1,0,0);
+      }else{
+        _analysis_output("tone",seq,tone,n/2,1,0,0);
       }
 #endif
 
       /* third step; we offset the noise vectors, overlay tone
-	 masking.  We then do a floor1-specific line fit.  If we're
-	 performing bitrate management, the line fit is performed
-	 multiple times for up/down tweakage on demand. */
-      
-      _vp_offset_and_mix(psy_look,
-			 noise,
-			 tone,
-			 1,
-			 logmask);
+         masking.  We then do a floor1-specific line fit.  If we're
+         performing bitrate management, the line fit is performed
+         multiple times for up/down tweakage on demand. */
 
 #if 0
+      {
+      float aotuv[psy_look->n];
+#endif
+
+        _vp_offset_and_mix(psy_look,
+                           noise,
+                           tone,
+                           1,
+                           logmask,
+                           mdct,
+                           logmdct);
+
+#if 0
+        if(vi->channels==2){
+          if(i==0)
+            _analysis_output("aotuvM1_L",seq,aotuv,psy_look->n,1,1,0);
+          else
+            _analysis_output("aotuvM1_R",seq,aotuv,psy_look->n,1,1,0);
+        }else{
+          _analysis_output("aotuvM1",seq,aotuv,psy_look->n,1,1,0);
+        }
+      }
+#endif
+
+
+#if 0
       if(vi->channels==2){
-	if(i==0)
-	  _analysis_output("mask1L",seq,logmask,n/2,1,0,0);
-	else
-	  _analysis_output("mask1R",seq,logmask,n/2,1,0,0);
+        if(i==0)
+          _analysis_output("mask1L",seq,logmask,n/2,1,0,0);
+        else
+          _analysis_output("mask1R",seq,logmask,n/2,1,0,0);
+      }else{
+        _analysis_output("mask1",seq,logmask,n/2,1,0,0);
       }
 #endif
 
@@ -419,75 +497,85 @@
       /* this algorithm is hardwired to floor 1 for now; abort out if
          we're *not* floor1.  This won't happen unless someone has
          broken the encode setup lib.  Guard it anyway. */
-      if(ci->floor_type[info->floorsubmap[submap]]!=1) {
+      if(ci->floor_type[info->floorsubmap[submap]]!=1){
         free(nonzero);
         free(local_ampmax);
         return(-1);
       }
+
       floor_posts[i][PACKETBLOBS/2]=
-	floor1_fit(vb,b->flr[info->floorsubmap[submap]],
-		   logmdct,
-		   logmask);
-      
+        floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+                   logmdct,
+                   logmask);
+
       /* are we managing bitrate?  If so, perform two more fits for
          later rate tweaking (fits represent hi/lo) */
       if(vorbis_bitrate_managed(vb) && floor_posts[i][PACKETBLOBS/2]){
-	/* higher rate by way of lower noise curve */
+        /* higher rate by way of lower noise curve */
 
-	_vp_offset_and_mix(psy_look,
-			   noise,
-			   tone,
-			   2,
-			   logmask);
+        _vp_offset_and_mix(psy_look,
+                           noise,
+                           tone,
+                           2,
+                           logmask,
+                           mdct,
+                           logmdct);
 
 #if 0
-	if(vi->channels==2){
-	  if(i==0)
-	    _analysis_output("mask2L",seq,logmask,n/2,1,0,0);
-	  else
-	    _analysis_output("mask2R",seq,logmask,n/2,1,0,0);
-	}
+        if(vi->channels==2){
+          if(i==0)
+            _analysis_output("mask2L",seq,logmask,n/2,1,0,0);
+          else
+            _analysis_output("mask2R",seq,logmask,n/2,1,0,0);
+        }else{
+          _analysis_output("mask2",seq,logmask,n/2,1,0,0);
+        }
 #endif
-	
-	floor_posts[i][PACKETBLOBS-1]=
-	  floor1_fit(vb,b->flr[info->floorsubmap[submap]],
-		     logmdct,
-		     logmask);
-      
-	/* lower rate by way of higher noise curve */
-	_vp_offset_and_mix(psy_look,
-			   noise,
-			   tone,
-			   0,
-			   logmask);
 
+        floor_posts[i][PACKETBLOBS-1]=
+          floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+                     logmdct,
+                     logmask);
+
+        /* lower rate by way of higher noise curve */
+        _vp_offset_and_mix(psy_look,
+                           noise,
+                           tone,
+                           0,
+                           logmask,
+                           mdct,
+                           logmdct);
+
 #if 0
-	if(vi->channels==2)
-	  if(i==0)
-	    _analysis_output("mask0L",seq,logmask,n/2,1,0,0);
-	  else
-	    _analysis_output("mask0R",seq,logmask,n/2,1,0,0);
+        if(vi->channels==2){
+          if(i==0)
+            _analysis_output("mask0L",seq,logmask,n/2,1,0,0);
+          else
+            _analysis_output("mask0R",seq,logmask,n/2,1,0,0);
+        }else{
+          _analysis_output("mask0",seq,logmask,n/2,1,0,0);
+        }
 #endif
 
-	floor_posts[i][0]=
-	  floor1_fit(vb,b->flr[info->floorsubmap[submap]],
-		     logmdct,
-		     logmask);
-	
-	/* we also interpolate a range of intermediate curves for
+        floor_posts[i][0]=
+          floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+                     logmdct,
+                     logmask);
+
+        /* we also interpolate a range of intermediate curves for
            intermediate rates */
-	for(k=1;k<PACKETBLOBS/2;k++)
-	  floor_posts[i][k]=
-	    floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
-				   floor_posts[i][0],
-				   floor_posts[i][PACKETBLOBS/2],
-				   k*65536/(PACKETBLOBS/2));
-	for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
-	  floor_posts[i][k]=
-	    floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
-				   floor_posts[i][PACKETBLOBS/2],
-				   floor_posts[i][PACKETBLOBS-1],
-				   (k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
+        for(k=1;k<PACKETBLOBS/2;k++)
+          floor_posts[i][k]=
+            floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
+                                   floor_posts[i][0],
+                                   floor_posts[i][PACKETBLOBS/2],
+                                   k*65536/(PACKETBLOBS/2));
+        for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
+          floor_posts[i][k]=
+            floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
+                                   floor_posts[i][PACKETBLOBS/2],
+                                   floor_posts[i][PACKETBLOBS-1],
+                                   (k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
       }
     }
   }
@@ -496,158 +584,116 @@
   /*
     the next phases are performed once for vbr-only and PACKETBLOB
     times for bitrate managed modes.
-    
+
     1) encode actual mode being used
     2) encode the floor for each channel, compute coded mask curve/res
     3) normalize and couple.
     4) encode residue
     5) save packet bytes to the packetblob vector
-    
+
   */
 
   /* iterate over the many masking curve fits we've created */
+
   {
-    float **res_bundle=malloc(sizeof(*res_bundle)*vi->channels);
-    float **couple_bundle=malloc(sizeof(*couple_bundle)*vi->channels);
+    int **couple_bundle=malloc(sizeof(*couple_bundle)*vi->channels);
     int *zerobundle=malloc(sizeof(*zerobundle)*vi->channels);
-    int **sortindex=malloc(sizeof(*sortindex)*vi->channels);
-    float **mag_memo;
-    int **mag_sort;
-    int sortindexes_allocated = 0;
 
-    if(info->coupling_steps){
-      mag_memo=_vp_quantize_couple_memo(vb,
-					&ci->psy_g_param,
-					psy_look,
-					info,
-					gmdct);    
-      
-      mag_sort=_vp_quantize_couple_sort(vb,
-					psy_look,
-					info,
-					mag_memo);    
-    }
-
-    memset(sortindex,0,sizeof(*sortindex)*vi->channels);
-    if(psy_look->vi->normal_channel_p){
-      sortindexes_allocated = vi->channels;
-      for(i=0;i<vi->channels;i++){
-	float *mdct    =gmdct[i];
-	sortindex[i]=malloc(sizeof(**sortindex)*n/2);
-	_vp_noise_normalize_sort(psy_look,mdct,sortindex[i]);
-      }
-    }
-
     for(k=(vorbis_bitrate_managed(vb)?0:PACKETBLOBS/2);
-	k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
-	k++){
+        k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
+        k++){
+      oggpack_buffer *opb=vbi->packetblob[k];
 
       /* start out our new packet blob with packet type and mode */
       /* Encode the packet type */
-      oggpack_write(&vb->opb,0,1);
+      oggpack_write(opb,0,1);
       /* Encode the modenumber */
       /* Encode frame mode, pre,post windowsize, then dispatch */
-      oggpack_write(&vb->opb,modenumber,b->modebits);
+      oggpack_write(opb,modenumber,b->modebits);
       if(vb->W){
-	oggpack_write(&vb->opb,vb->lW,1);
-	oggpack_write(&vb->opb,vb->nW,1);
+        oggpack_write(opb,vb->lW,1);
+        oggpack_write(opb,vb->nW,1);
       }
 
       /* encode floor, compute masking curve, sep out residue */
       for(i=0;i<vi->channels;i++){
-	int submap=info->chmuxlist[i];
-	float *mdct    =gmdct[i];
-	float *res     =vb->pcm[i];
-	int   *ilogmask=ilogmaskch[i]=
-	  _vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
-      
-	nonzero[i]=floor1_encode(vb,b->flr[info->floorsubmap[submap]],
-				 floor_posts[i][k],
-				 ilogmask);
-#if 0
-	{
-	  char buf[80];
-	  sprintf(buf,"maskI%c%d",i?'R':'L',k);
-	  float work[n/2];
-	  for(j=0;j<n/2;j++)
-	    work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]];
-	  _analysis_output(buf,seq,work,n/2,1,1,0);
-	}
-#endif
-	_vp_remove_floor(psy_look,
-			 mdct,
-			 ilogmask,
-			 res,
-			 ci->psy_g_param.sliding_lowpass[vb->W][k]);
+        int submap=info->chmuxlist[i];
+        int *ilogmask=iwork[i];
 
-	_vp_noise_normalize(psy_look,res,res+n/2,sortindex[i]);
-
-	
+        nonzero[i]=floor1_encode(opb,vb,b->flr[info->floorsubmap[submap]],
+                                 floor_posts[i][k],
+                                 ilogmask);
 #if 0
-	{
-	  char buf[80];
-	  float work[n/2];
-	  for(j=0;j<n/2;j++)
-	    work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]]*(res+n/2)[j];
-	  sprintf(buf,"resI%c%d",i?'R':'L',k);
-	  _analysis_output(buf,seq,work,n/2,1,1,0);
-
-	}
+        {
+          char buf[80];
+          sprintf(buf,"maskI%c%d",i?'R':'L',k);
+          float work[n/2];
+          for(j=0;j<n/2;j++)
+            work[j]=FLOOR1_fromdB_LOOKUP[iwork[i][j]];
+          _analysis_output(buf,seq,work,n/2,1,1,0);
+        }
 #endif
       }
-      
+
       /* our iteration is now based on masking curve, not prequant and
-	 coupling.  Only one prequant/coupling step */
-      
+         coupling.  Only one prequant/coupling step */
+
       /* quantize/couple */
       /* incomplete implementation that assumes the tree is all depth
          one, or no tree at all */
-      if(info->coupling_steps){
-	_vp_couple(k,
-		   &ci->psy_g_param,
-		   psy_look,
-		   info,
-		   vb->pcm,
-		   mag_memo,
-		   mag_sort,
-		   ilogmaskch,
-		   nonzero,
-		   ci->psy_g_param.sliding_lowpass[vb->W][k]);
+      _vp_couple_quantize_normalize(k,
+                                    &ci->psy_g_param,
+                                    psy_look,
+                                    info,
+                                    gmdct,
+                                    iwork,
+                                    nonzero,
+                                    ci->psy_g_param.sliding_lowpass[vb->W][k],
+                                    vi->channels);
+
+#if 0
+      for(i=0;i<vi->channels;i++){
+        char buf[80];
+        sprintf(buf,"res%c%d",i?'R':'L',k);
+        float work[n/2];
+        for(j=0;j<n/2;j++)
+          work[j]=iwork[i][j];
+        _analysis_output(buf,seq,work,n/2,1,0,0);
       }
-      
+#endif
+
       /* classify and encode by submap */
       for(i=0;i<info->submaps;i++){
-	int ch_in_bundle=0;
-	long **classifications;
-	int resnum=info->residuesubmap[i];
+        int ch_in_bundle=0;
+        long **classifications;
+        int resnum=info->residuesubmap[i];
 
-	for(j=0;j<vi->channels;j++){
-	  if(info->chmuxlist[j]==i){
-	    zerobundle[ch_in_bundle]=0;
-	    if(nonzero[j])zerobundle[ch_in_bundle]=1;
-	    res_bundle[ch_in_bundle]=vb->pcm[j];
-	    couple_bundle[ch_in_bundle++]=vb->pcm[j]+n/2;
-	  }
-	}
-	
-	classifications=_residue_P[ci->residue_type[resnum]]->
-	  class(vb,b->residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
-	
-	_residue_P[ci->residue_type[resnum]]->
-	  forward(vb,b->residue[resnum],
-		  couple_bundle,NULL,zerobundle,ch_in_bundle,classifications);
+        for(j=0;j<vi->channels;j++){
+          if(info->chmuxlist[j]==i){
+            zerobundle[ch_in_bundle]=0;
+            if(nonzero[j])zerobundle[ch_in_bundle]=1;
+            couple_bundle[ch_in_bundle++]=iwork[j];
+          }
+        }
+
+        classifications=_residue_P[ci->residue_type[resnum]]->
+          class(vb,b->residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
+
+        ch_in_bundle=0;
+        for(j=0;j<vi->channels;j++)
+          if(info->chmuxlist[j]==i)
+            couple_bundle[ch_in_bundle++]=iwork[j];
+
+        _residue_P[ci->residue_type[resnum]]->
+          forward(opb,vb,b->residue[resnum],
+                  couple_bundle,zerobundle,ch_in_bundle,classifications,i);
       }
-      
-      /* ok, done encoding.  Mark this protopacket and prepare next. */
-      oggpack_writealign(&vb->opb);
-      vbi->packetblob_markers[k]=oggpack_bytes(&vb->opb);
-      
+
+      /* ok, done encoding.  Next protopacket. */
     }
 
-    for (i=0;i<sortindexes_allocated;++i)
-      free(sortindex[i]);
-
-    free(res_bundle); free(couple_bundle); free(zerobundle); free(sortindex);
+    free(couple_bundle);
+    free(zerobundle);
   }
 
 #if 0
@@ -654,10 +700,8 @@
   seq++;
   total+=ci->blocksizes[vb->W]/4+ci->blocksizes[vb->nW]/4;
 #endif
-
-
-  free(local_ampmax);
   free(nonzero);
+  free(local_ampmax);
   return(0);
 }
 
@@ -665,16 +709,17 @@
   vorbis_dsp_state     *vd=vb->vd;
   vorbis_info          *vi=vd->vi;
   codec_setup_info     *ci=vi->codec_setup;
-  backend_lookup_state *b=vd->backend_state;
+  private_state        *b=vd->backend_state;
   vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)l;
+
   int                   i,j;
   long                  n=vb->pcmend=ci->blocksizes[vb->W];
+
   float **pcmbundle=malloc(sizeof(*pcmbundle)*vi->channels);
   int    *zerobundle=malloc(sizeof(*zerobundle)*vi->channels);
-
   int   *nonzero  =malloc(sizeof(*nonzero)*vi->channels);
   void **floormemo=malloc(sizeof(*floormemo)*vi->channels);
-  
+
   /* recover the spectral envelope; store it in the PCM vector for now */
   for(i=0;i<vi->channels;i++){
     int submap=info->chmuxlist[i];
@@ -683,7 +728,7 @@
     if(floormemo[i])
       nonzero[i]=1;
     else
-      nonzero[i]=0;      
+      nonzero[i]=0;
     memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2);
   }
 
@@ -691,8 +736,8 @@
   for(i=0;i<info->coupling_steps;i++){
     if(nonzero[info->coupling_mag[i]] ||
        nonzero[info->coupling_ang[i]]){
-      nonzero[info->coupling_mag[i]]=1; 
-      nonzero[info->coupling_ang[i]]=1; 
+      nonzero[info->coupling_mag[i]]=1;
+      nonzero[info->coupling_ang[i]]=1;
     }
   }
 
@@ -701,17 +746,17 @@
     int ch_in_bundle=0;
     for(j=0;j<vi->channels;j++){
       if(info->chmuxlist[j]==i){
-	if(nonzero[j])
-	  zerobundle[ch_in_bundle]=1;
-	else
-	  zerobundle[ch_in_bundle]=0;
-	pcmbundle[ch_in_bundle++]=vb->pcm[j];
+        if(nonzero[j])
+          zerobundle[ch_in_bundle]=1;
+        else
+          zerobundle[ch_in_bundle]=0;
+        pcmbundle[ch_in_bundle++]=vb->pcm[j];
       }
     }
 
     _residue_P[ci->residue_type[info->residuesubmap[i]]]->
       inverse(vb,b->residue[info->residuesubmap[i]],
-	      pcmbundle,zerobundle,ch_in_bundle);
+              pcmbundle,zerobundle,ch_in_bundle);
   }
 
   /* channel coupling */
@@ -724,21 +769,21 @@
       float ang=pcmA[j];
 
       if(mag>0)
-	if(ang>0){
-	  pcmM[j]=mag;
-	  pcmA[j]=mag-ang;
-	}else{
-	  pcmA[j]=mag;
-	  pcmM[j]=mag+ang;
-	}
+        if(ang>0){
+          pcmM[j]=mag;
+          pcmA[j]=mag-ang;
+        }else{
+          pcmA[j]=mag;
+          pcmM[j]=mag+ang;
+        }
       else
-	if(ang>0){
-	  pcmM[j]=mag;
-	  pcmA[j]=mag+ang;
-	}else{
-	  pcmA[j]=mag;
-	  pcmM[j]=mag-ang;
-	}
+        if(ang>0){
+          pcmM[j]=mag;
+          pcmA[j]=mag+ang;
+        }else{
+          pcmA[j]=mag;
+          pcmM[j]=mag-ang;
+        }
     }
   }
 
@@ -748,7 +793,7 @@
     int submap=info->chmuxlist[i];
     _floor_P[ci->floor_type[info->floorsubmap[submap]]]->
       inverse2(vb,b->flr[info->floorsubmap[submap]],
-	       floormemo[i],pcm);
+               floormemo[i],pcm);
   }
 
   /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
@@ -758,25 +803,16 @@
     mdct_backward(b->transform[vb->W][0],pcm,pcm);
   }
 
-  /* window the data */
-  for(i=0;i<vi->channels;i++){
-    float *pcm=vb->pcm[i];
-    if(nonzero[i])
-      _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
-    else
-      for(j=0;j<n;j++)
-	pcm[j]=0.f;
-
-  }
-
   /* all done! */
-  free(pcmbundle); free(zerobundle); free(nonzero); free(floormemo);
-
+  free(pcmbundle);
+  free(zerobundle);
+  free(nonzero);
+  free(floormemo);
   return(0);
 }
 
 /* export hooks */
-vorbis_func_mapping mapping0_exportbundle={
+const vorbis_func_mapping mapping0_exportbundle={
   &mapping0_pack,
   &mapping0_unpack,
   &mapping0_free_info,
@@ -783,4 +819,3 @@
   &mapping0_forward,
   &mapping0_inverse
 };
-
--- a/sys/src/cmd/audio/libvorbis/masking.h
+++ b/sys/src/cmd/audio/libvorbis/masking.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: masking curve data for psychoacoustics
- last mod: $Id: masking.h,v 1.24 2002/07/01 11:20:11 xiphmont Exp $
+ last mod: $Id: masking.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -22,12 +22,12 @@
    overly for only a bin or two of savings. */
 
 #define MAX_ATH 88
-static float ATH[]={
-  /*15*/  -51, -52, -53, -54, -55, -56, -57, -58,  
+static const float ATH[]={
+  /*15*/  -51, -52, -53, -54, -55, -56, -57, -58,
   /*31*/  -59, -60, -61, -62, -63, -64, -65, -66,
-  /*63*/  -67, -68, -69, -70, -71, -72, -73, -74, 
+  /*63*/  -67, -68, -69, -70, -71, -72, -73, -74,
   /*125*/ -75, -76, -77, -78, -80, -81, -82, -83,
-  /*250*/ -84, -85, -86, -87, -88, -88, -89, -89, 
+  /*250*/ -84, -85, -86, -87, -88, -88, -89, -89,
   /*500*/ -90, -91, -91, -92, -93, -94, -95, -96,
   /*1k*/  -96, -97, -98, -98, -99, -99,-100,-100,
   /*2k*/ -101,-102,-103,-104,-106,-107,-107,-107,
@@ -48,738 +48,738 @@
 /* (Vorbis 0dB, the loudest possible tone, is assumed to be ~100dB SPL
    for collection of these curves) */
 
-static float tonemasks[P_BANDS][6][EHMER_MAX]={
+static const float tonemasks[P_BANDS][6][EHMER_MAX]={
   /* 62.5 Hz */
-  {{ -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60, 
-     -60,  -60,  -60,  -60,  -62,  -62,  -65,  -73, 
-     -69,  -68,  -68,  -67,  -70,  -70,  -72,  -74, 
-     -75,  -79,  -79,  -80,  -83,  -88,  -93, -100, 
-     -110, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
+  {{ -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
+     -60,  -60,  -60,  -60,  -62,  -62,  -65,  -73,
+     -69,  -68,  -68,  -67,  -70,  -70,  -72,  -74,
+     -75,  -79,  -79,  -80,  -83,  -88,  -93, -100,
+     -110, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48, 
-     -48,  -48,  -48,  -48,  -48,  -53,  -61,  -66, 
-     -66,  -68,  -67,  -70,  -76,  -76,  -72,  -73, 
-     -75,  -76,  -78,  -79,  -83,  -88,  -93, -100, 
-     -110, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
+   { -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+     -48,  -48,  -48,  -48,  -48,  -53,  -61,  -66,
+     -66,  -68,  -67,  -70,  -76,  -76,  -72,  -73,
+     -75,  -76,  -78,  -79,  -83,  -88,  -93, -100,
+     -110, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37, 
-     -38,  -40,  -42,  -46,  -48,  -53,  -55,  -62, 
-     -65,  -58,  -56,  -56,  -61,  -60,  -65,  -67, 
-     -69,  -71,  -77,  -77,  -78,  -80,  -82,  -84, 
-     -88,  -93,  -98, -106, -112, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
+   { -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+     -38,  -40,  -42,  -46,  -48,  -53,  -55,  -62,
+     -65,  -58,  -56,  -56,  -61,  -60,  -65,  -67,
+     -69,  -71,  -77,  -77,  -78,  -80,  -82,  -84,
+     -88,  -93,  -98, -106, -112, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25, 
-     -25,  -26,  -27,  -29,  -32,  -38,  -48,  -52, 
-     -52,  -50,  -48,  -48,  -51,  -52,  -54,  -60, 
-     -67,  -67,  -66,  -68,  -69,  -73,  -73,  -76, 
-     -80,  -81,  -81,  -85,  -85,  -86,  -88,  -93, 
-     -100, -110, -999, -999, -999, -999, -999, -999, 
+   { -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+     -25,  -26,  -27,  -29,  -32,  -38,  -48,  -52,
+     -52,  -50,  -48,  -48,  -51,  -52,  -54,  -60,
+     -67,  -67,  -66,  -68,  -69,  -73,  -73,  -76,
+     -80,  -81,  -81,  -85,  -85,  -86,  -88,  -93,
+     -100, -110, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16, 
-     -17,  -19,  -20,  -22,  -26,  -28,  -31,  -40, 
-     -47,  -39,  -39,  -40,  -42,  -43,  -47,  -51, 
-     -57,  -52,  -55,  -55,  -60,  -58,  -62,  -63, 
-     -70,  -67,  -69,  -72,  -73,  -77,  -80,  -82, 
-     -83,  -87,  -90,  -94,  -98, -104, -115, -999, 
+   { -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+     -17,  -19,  -20,  -22,  -26,  -28,  -31,  -40,
+     -47,  -39,  -39,  -40,  -42,  -43,  -47,  -51,
+     -57,  -52,  -55,  -55,  -60,  -58,  -62,  -63,
+     -70,  -67,  -69,  -72,  -73,  -77,  -80,  -82,
+     -83,  -87,  -90,  -94,  -98, -104, -115, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   {  -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8, 
-      -8,   -8,  -10,  -11,  -15,  -19,  -25,  -30, 
-      -34,  -31,  -30,  -31,  -29,  -32,  -35,  -42, 
-      -48,  -42,  -44,  -46,  -50,  -50,  -51,  -52, 
-      -59,  -54,  -55,  -55,  -58,  -62,  -63,  -66, 
-      -72,  -73,  -76,  -75,  -78,  -80,  -80,  -81, 
-      -84,  -88,  -90,  -94,  -98, -101, -106, -110}}, 
+   {  -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+      -8,   -8,  -10,  -11,  -15,  -19,  -25,  -30,
+      -34,  -31,  -30,  -31,  -29,  -32,  -35,  -42,
+      -48,  -42,  -44,  -46,  -50,  -50,  -51,  -52,
+      -59,  -54,  -55,  -55,  -58,  -62,  -63,  -66,
+      -72,  -73,  -76,  -75,  -78,  -80,  -80,  -81,
+      -84,  -88,  -90,  -94,  -98, -101, -106, -110}},
   /* 88Hz */
-  {{ -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66, 
-     -66,  -66,  -66,  -66,  -66,  -67,  -67,  -67, 
-     -76,  -72,  -71,  -74,  -76,  -76,  -75,  -78, 
-     -79,  -79,  -81,  -83,  -86,  -89,  -93,  -97, 
-     -100, -105, -110, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
+  {{ -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
+     -66,  -66,  -66,  -66,  -66,  -67,  -67,  -67,
+     -76,  -72,  -71,  -74,  -76,  -76,  -75,  -78,
+     -79,  -79,  -81,  -83,  -86,  -89,  -93,  -97,
+     -100, -105, -110, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47, 
-     -47,  -47,  -47,  -48,  -51,  -55,  -59,  -66, 
-     -66,  -66,  -67,  -66,  -68,  -69,  -70,  -74, 
-     -79,  -77,  -77,  -78,  -80,  -81,  -82,  -84, 
-     -86,  -88,  -91,  -95, -100, -108, -116, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36, 
-     -36,  -37,  -37,  -41,  -44,  -48,  -51,  -58, 
-     -62,  -60,  -57,  -59,  -59,  -60,  -63,  -65, 
-     -72,  -71,  -70,  -72,  -74,  -77,  -76,  -78, 
-     -81,  -81,  -80,  -83,  -86,  -91,  -96, -100, 
-     -105, -110, -999, -999, -999, -999, -999, -999, 
+   { -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+     -47,  -47,  -47,  -48,  -51,  -55,  -59,  -66,
+     -66,  -66,  -67,  -66,  -68,  -69,  -70,  -74,
+     -79,  -77,  -77,  -78,  -80,  -81,  -82,  -84,
+     -86,  -88,  -91,  -95, -100, -108, -116, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28, 
-     -28,  -30,  -32,  -32,  -33,  -35,  -41,  -49, 
-     -50,  -49,  -47,  -48,  -48,  -52,  -51,  -57, 
-     -65,  -61,  -59,  -61,  -64,  -69,  -70,  -74, 
-     -77,  -77,  -78,  -81,  -84,  -85,  -87,  -90, 
-     -92,  -96, -100, -107, -112, -999, -999, -999, 
+   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+     -36,  -37,  -37,  -41,  -44,  -48,  -51,  -58,
+     -62,  -60,  -57,  -59,  -59,  -60,  -63,  -65,
+     -72,  -71,  -70,  -72,  -74,  -77,  -76,  -78,
+     -81,  -81,  -80,  -83,  -86,  -91,  -96, -100,
+     -105, -110, -999, -999, -999, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   { -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19, 
-     -20,  -21,  -23,  -27,  -30,  -35,  -36,  -41, 
-     -46,  -44,  -42,  -40,  -41,  -41,  -43,  -48, 
-     -55,  -53,  -52,  -53,  -56,  -59,  -58,  -60, 
-     -67,  -66,  -69,  -71,  -72,  -75,  -79,  -81, 
-     -84,  -87,  -90,  -93,  -97, -101, -107, -114, 
+   { -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+     -28,  -30,  -32,  -32,  -33,  -35,  -41,  -49,
+     -50,  -49,  -47,  -48,  -48,  -52,  -51,  -57,
+     -65,  -61,  -59,  -61,  -64,  -69,  -70,  -74,
+     -77,  -77,  -78,  -81,  -84,  -85,  -87,  -90,
+     -92,  -96, -100, -107, -112, -999, -999, -999,
      -999, -999, -999, -999, -999, -999, -999, -999},
-   {  -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9, 
-      -11,  -12,  -12,  -15,  -16,  -20,  -23,  -30, 
-      -37,  -34,  -33,  -34,  -31,  -32,  -32,  -38, 
-      -47,  -44,  -41,  -40,  -47,  -49,  -46,  -46, 
-      -58,  -50,  -50,  -54,  -58,  -62,  -64,  -67, 
-      -67,  -70,  -72,  -76,  -79,  -83,  -87,  -91, 
-      -96, -100, -104, -110, -999, -999, -999, -999}}, 
+   { -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+     -20,  -21,  -23,  -27,  -30,  -35,  -36,  -41,
+     -46,  -44,  -42,  -40,  -41,  -41,  -43,  -48,
+     -55,  -53,  -52,  -53,  -56,  -59,  -58,  -60,
+     -67,  -66,  -69,  -71,  -72,  -75,  -79,  -81,
+     -84,  -87,  -90,  -93,  -97, -101, -107, -114,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   {  -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+      -11,  -12,  -12,  -15,  -16,  -20,  -23,  -30,
+      -37,  -34,  -33,  -34,  -31,  -32,  -32,  -38,
+      -47,  -44,  -41,  -40,  -47,  -49,  -46,  -46,
+      -58,  -50,  -50,  -54,  -58,  -62,  -64,  -67,
+      -67,  -70,  -72,  -76,  -79,  -83,  -87,  -91,
+      -96, -100, -104, -110, -999, -999, -999, -999}},
   /* 125 Hz */
-  {{ -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62, 
-     -62,  -62,  -63,  -64,  -66,  -67,  -66,  -68, 
-     -75,  -72,  -76,  -75,  -76,  -78,  -79,  -82, 
-     -84,  -85,  -90,  -94, -101, -110, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59, 
-     -59,  -59,  -59,  -60,  -60,  -61,  -63,  -66, 
-     -71,  -68,  -70,  -70,  -71,  -72,  -72,  -75, 
-     -81,  -78,  -79,  -82,  -83,  -86,  -90,  -97, 
-     -103, -113, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53, 
-     -53,  -54,  -55,  -57,  -56,  -57,  -55,  -61, 
-     -65,  -60,  -60,  -62,  -63,  -63,  -66,  -68, 
-     -74,  -73,  -75,  -75,  -78,  -80,  -80,  -82, 
-     -85,  -90,  -96, -101, -108, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46, 
-     -46,  -46,  -47,  -47,  -47,  -47,  -48,  -51, 
-     -57,  -51,  -49,  -50,  -51,  -53,  -54,  -59, 
-     -66,  -60,  -62,  -67,  -67,  -70,  -72,  -75, 
-     -76,  -78,  -81,  -85,  -88,  -94,  -97, -104, 
-     -112, -999, -999, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36, 
-     -39,  -41,  -42,  -42,  -39,  -38,  -41,  -43, 
-     -52,  -44,  -40,  -39,  -37,  -37,  -40,  -47, 
-     -54,  -50,  -48,  -50,  -55,  -61,  -59,  -62, 
-     -66,  -66,  -66,  -69,  -69,  -73,  -74,  -74, 
-     -75,  -77,  -79,  -82,  -87,  -91,  -95, -100, 
-     -108, -115, -999, -999, -999, -999, -999, -999}, 
-   { -28,  -26,  -24,  -22,  -20,  -20,  -23,  -29, 
-     -30,  -31,  -28,  -27,  -28,  -28,  -28,  -35, 
-     -40,  -33,  -32,  -29,  -30,  -30,  -30,  -37, 
-     -45,  -41,  -37,  -38,  -45,  -47,  -47,  -48, 
-     -53,  -49,  -48,  -50,  -49,  -49,  -51,  -52, 
-     -58,  -56,  -57,  -56,  -60,  -61,  -62,  -70, 
-     -72,  -74,  -78,  -83,  -88,  -93, -100, -106}}, 
-  /* 177 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -110, -105, -100,  -95,  -91,  -87,  -83, 
-    -80,  -78,  -76,  -78,  -78,  -81,  -83,  -85, 
-    -86,  -85,  -86,  -87,  -90,  -97, -107, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -110, -105, -100,  -95,  -90, 
-    -85,  -81,  -77,  -73,  -70,  -67,  -67,  -68, 
-    -75,  -73,  -70,  -69,  -70,  -72,  -75,  -79, 
-    -84,  -83,  -84,  -86,  -88,  -89,  -89,  -93, 
-    -98, -105, -112, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-105, -100,  -95,  -90,  -85,  -80,  -76,  -71, 
-    -68,  -68,  -65,  -63,  -63,  -62,  -62,  -64, 
-    -65,  -64,  -61,  -62,  -63,  -64,  -66,  -68, 
-    -73,  -73,  -74,  -75,  -76,  -81,  -83,  -85, 
-    -88,  -89,  -92,  -95, -100, -108, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -80,  -75,  -71,  -68,  -65,  -63,  -62,  -61, 
-     -61,  -61,  -61,  -59,  -56,  -57,  -53,  -50, 
-     -58,  -52,  -50,  -50,  -52,  -53,  -54,  -58, 
-     -67,  -63,  -67,  -68,  -72,  -75,  -78,  -80, 
-     -81,  -81,  -82,  -85,  -89,  -90,  -93,  -97, 
-     -101, -107, -114, -999, -999, -999, -999, -999, 
-     -999, -999, -999, -999, -999, -999, -999, -999}, 
-   { -65,  -61,  -59,  -57,  -56,  -55,  -55,  -56, 
-     -56,  -57,  -55,  -53,  -52,  -47,  -44,  -44, 
-     -50,  -44,  -41,  -39,  -39,  -42,  -40,  -46, 
-     -51,  -49,  -50,  -53,  -54,  -63,  -60,  -61, 
-     -62,  -66,  -66,  -66,  -70,  -73,  -74,  -75, 
-     -76,  -75,  -79,  -85,  -89,  -91,  -96, -102, 
-     -110, -999, -999, -999, -999, -999, -999, -999}, 
-   { -52,  -50,  -49,  -49,  -48,  -48,  -48,  -49, 
-     -50,  -50,  -49,  -46,  -43,  -39,  -35,  -33, 
-     -38,  -36,  -32,  -29,  -32,  -32,  -32,  -35, 
-     -44,  -39,  -38,  -38,  -46,  -50,  -45,  -46, 
-     -53,  -50,  -50,  -50,  -54,  -54,  -53,  -53, 
-     -56,  -57,  -59,  -66,  -70,  -72,  -74,  -79, 
-     -83,  -85,  -90, -97, -114, -999, -999, -999}}, 
+  {{ -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
+     -62,  -62,  -63,  -64,  -66,  -67,  -66,  -68,
+     -75,  -72,  -76,  -75,  -76,  -78,  -79,  -82,
+     -84,  -85,  -90,  -94, -101, -110, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+     -59,  -59,  -59,  -60,  -60,  -61,  -63,  -66,
+     -71,  -68,  -70,  -70,  -71,  -72,  -72,  -75,
+     -81,  -78,  -79,  -82,  -83,  -86,  -90,  -97,
+     -103, -113, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+     -53,  -54,  -55,  -57,  -56,  -57,  -55,  -61,
+     -65,  -60,  -60,  -62,  -63,  -63,  -66,  -68,
+     -74,  -73,  -75,  -75,  -78,  -80,  -80,  -82,
+     -85,  -90,  -96, -101, -108, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+     -46,  -46,  -47,  -47,  -47,  -47,  -48,  -51,
+     -57,  -51,  -49,  -50,  -51,  -53,  -54,  -59,
+     -66,  -60,  -62,  -67,  -67,  -70,  -72,  -75,
+     -76,  -78,  -81,  -85,  -88,  -94,  -97, -104,
+     -112, -999, -999, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+     -39,  -41,  -42,  -42,  -39,  -38,  -41,  -43,
+     -52,  -44,  -40,  -39,  -37,  -37,  -40,  -47,
+     -54,  -50,  -48,  -50,  -55,  -61,  -59,  -62,
+     -66,  -66,  -66,  -69,  -69,  -73,  -74,  -74,
+     -75,  -77,  -79,  -82,  -87,  -91,  -95, -100,
+     -108, -115, -999, -999, -999, -999, -999, -999},
+   { -28,  -26,  -24,  -22,  -20,  -20,  -23,  -29,
+     -30,  -31,  -28,  -27,  -28,  -28,  -28,  -35,
+     -40,  -33,  -32,  -29,  -30,  -30,  -30,  -37,
+     -45,  -41,  -37,  -38,  -45,  -47,  -47,  -48,
+     -53,  -49,  -48,  -50,  -49,  -49,  -51,  -52,
+     -58,  -56,  -57,  -56,  -60,  -61,  -62,  -70,
+     -72,  -74,  -78,  -83,  -88,  -93, -100, -106}},
+  /* 177 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -110, -105, -100,  -95,  -91,  -87,  -83,
+    -80,  -78,  -76,  -78,  -78,  -81,  -83,  -85,
+    -86,  -85,  -86,  -87,  -90,  -97, -107, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -110, -105, -100,  -95,  -90,
+    -85,  -81,  -77,  -73,  -70,  -67,  -67,  -68,
+    -75,  -73,  -70,  -69,  -70,  -72,  -75,  -79,
+    -84,  -83,  -84,  -86,  -88,  -89,  -89,  -93,
+    -98, -105, -112, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-105, -100,  -95,  -90,  -85,  -80,  -76,  -71,
+    -68,  -68,  -65,  -63,  -63,  -62,  -62,  -64,
+    -65,  -64,  -61,  -62,  -63,  -64,  -66,  -68,
+    -73,  -73,  -74,  -75,  -76,  -81,  -83,  -85,
+    -88,  -89,  -92,  -95, -100, -108, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   { -80,  -75,  -71,  -68,  -65,  -63,  -62,  -61,
+     -61,  -61,  -61,  -59,  -56,  -57,  -53,  -50,
+     -58,  -52,  -50,  -50,  -52,  -53,  -54,  -58,
+     -67,  -63,  -67,  -68,  -72,  -75,  -78,  -80,
+     -81,  -81,  -82,  -85,  -89,  -90,  -93,  -97,
+     -101, -107, -114, -999, -999, -999, -999, -999,
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -65,  -61,  -59,  -57,  -56,  -55,  -55,  -56,
+     -56,  -57,  -55,  -53,  -52,  -47,  -44,  -44,
+     -50,  -44,  -41,  -39,  -39,  -42,  -40,  -46,
+     -51,  -49,  -50,  -53,  -54,  -63,  -60,  -61,
+     -62,  -66,  -66,  -66,  -70,  -73,  -74,  -75,
+     -76,  -75,  -79,  -85,  -89,  -91,  -96, -102,
+     -110, -999, -999, -999, -999, -999, -999, -999},
+   { -52,  -50,  -49,  -49,  -48,  -48,  -48,  -49,
+     -50,  -50,  -49,  -46,  -43,  -39,  -35,  -33,
+     -38,  -36,  -32,  -29,  -32,  -32,  -32,  -35,
+     -44,  -39,  -38,  -38,  -46,  -50,  -45,  -46,
+     -53,  -50,  -50,  -50,  -54,  -54,  -53,  -53,
+     -56,  -57,  -59,  -66,  -70,  -72,  -74,  -79,
+     -83,  -85,  -90, -97, -114, -999, -999, -999}},
   /* 250 Hz */
-  {{-999, -999, -999, -999, -999, -999, -110, -105, 
-    -100,  -95,  -90,  -86,  -80,  -75,  -75,  -79, 
-    -80,  -79,  -80,  -81,  -82,  -88,  -95, -103, 
-    -110, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -108, -103,  -98,  -93, 
-    -88,  -83,  -79,  -78,  -75,  -71,  -67,  -68, 
-    -73,  -73,  -72,  -73,  -75,  -77,  -80,  -82, 
-    -88,  -93, -100, -107, -114, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -110, -105, -101,  -96,  -90, 
-    -86,  -81,  -77,  -73,  -69,  -66,  -61,  -62, 
-    -66,  -64,  -62,  -65,  -66,  -70,  -72,  -76, 
-    -81,  -80,  -84,  -90,  -95, -102, -110, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -107, -103,  -97,  -92,  -88, 
-    -83,  -79,  -74,  -70,  -66,  -59,  -53,  -58, 
-    -62,  -55,  -54,  -54,  -54,  -58,  -61,  -62, 
-    -72,  -70,  -72,  -75,  -78,  -80,  -81,  -80, 
-    -83,  -83,  -88,  -93, -100, -107, -115, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -105, -100,  -95,  -90,  -85, 
-    -80,  -75,  -70,  -66,  -62,  -56,  -48,  -44, 
-    -48,  -46,  -46,  -43,  -46,  -48,  -48,  -51, 
-    -58,  -58,  -59,  -60,  -62,  -62,  -61,  -61, 
-    -65,  -64,  -65,  -68,  -70,  -74,  -75,  -78, 
-    -81,  -86,  -95, -110, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999,  -999, -105, -100,  -95,  -90,  -85,  -80, 
-    -75,  -70,  -65,  -61,  -55,  -49,  -39,  -33, 
-    -40,  -35,  -32,  -38,  -40,  -33,  -35,  -37, 
-    -46,  -41,  -45,  -44,  -46,  -42,  -45,  -46, 
-    -52,  -50,  -50,  -50,  -54,  -54,  -55,  -57, 
-    -62,  -64,  -66,  -68,  -70,  -76,  -81,  -90, 
-    -100, -110, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -110, -105,
+    -100,  -95,  -90,  -86,  -80,  -75,  -75,  -79,
+    -80,  -79,  -80,  -81,  -82,  -88,  -95, -103,
+    -110, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -108, -103,  -98,  -93,
+    -88,  -83,  -79,  -78,  -75,  -71,  -67,  -68,
+    -73,  -73,  -72,  -73,  -75,  -77,  -80,  -82,
+    -88,  -93, -100, -107, -114, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -110, -105, -101,  -96,  -90,
+    -86,  -81,  -77,  -73,  -69,  -66,  -61,  -62,
+    -66,  -64,  -62,  -65,  -66,  -70,  -72,  -76,
+    -81,  -80,  -84,  -90,  -95, -102, -110, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -107, -103,  -97,  -92,  -88,
+    -83,  -79,  -74,  -70,  -66,  -59,  -53,  -58,
+    -62,  -55,  -54,  -54,  -54,  -58,  -61,  -62,
+    -72,  -70,  -72,  -75,  -78,  -80,  -81,  -80,
+    -83,  -83,  -88,  -93, -100, -107, -115, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -105, -100,  -95,  -90,  -85,
+    -80,  -75,  -70,  -66,  -62,  -56,  -48,  -44,
+    -48,  -46,  -46,  -43,  -46,  -48,  -48,  -51,
+    -58,  -58,  -59,  -60,  -62,  -62,  -61,  -61,
+    -65,  -64,  -65,  -68,  -70,  -74,  -75,  -78,
+    -81,  -86,  -95, -110, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999,  -999, -105, -100,  -95,  -90,  -85,  -80,
+    -75,  -70,  -65,  -61,  -55,  -49,  -39,  -33,
+    -40,  -35,  -32,  -38,  -40,  -33,  -35,  -37,
+    -46,  -41,  -45,  -44,  -46,  -42,  -45,  -46,
+    -52,  -50,  -50,  -50,  -54,  -54,  -55,  -57,
+    -62,  -64,  -66,  -68,  -70,  -76,  -81,  -90,
+    -100, -110, -999, -999, -999, -999, -999, -999}},
   /* 354 hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -105,  -98,  -90,  -85,  -82,  -83,  -80,  -78, 
-    -84,  -79,  -80,  -83,  -87,  -89,  -91,  -93, 
-    -99, -106, -117, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -105,  -98,  -90,  -85,  -80,  -75,  -70,  -68, 
-    -74,  -72,  -74,  -77,  -80,  -82,  -85,  -87, 
-    -92,  -89,  -91,  -95, -100, -106, -112, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -105,  -98,  -90,  -83,  -75,  -71,  -63,  -64, 
-    -67,  -62,  -64,  -67,  -70,  -73,  -77,  -81, 
-    -84,  -83,  -85,  -89,  -90,  -93,  -98, -104, 
-    -109, -114, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -103,  -96,  -88,  -81,  -75,  -68,  -58,  -54, 
-    -56,  -54,  -56,  -56,  -58,  -60,  -63,  -66, 
-    -74,  -69,  -72,  -72,  -75,  -74,  -77,  -81, 
-    -81,  -82,  -84,  -87,  -93,  -96,  -99, -104, 
-    -110, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -108, -102,  -96, 
-    -91,  -85,  -80,  -74,  -68,  -60,  -51,  -46, 
-    -48,  -46,  -43,  -45,  -47,  -47,  -49,  -48, 
-    -56,  -53,  -55,  -58,  -57,  -63,  -58,  -60, 
-    -66,  -64,  -67,  -70,  -70,  -74,  -77,  -84, 
-    -86,  -89,  -91,  -93,  -94, -101, -109, -118, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -108, -103,  -98,  -93,  -88, 
-    -83,  -78,  -73,  -68,  -60,  -53,  -44,  -35, 
-    -38,  -38,  -34,  -34,  -36,  -40,  -41,  -44, 
-    -51,  -45,  -46,  -47,  -46,  -54,  -50,  -49, 
-    -50,  -50,  -50,  -51,  -54,  -57,  -58,  -60, 
-    -66,  -66,  -66,  -64,  -65,  -68,  -77,  -82, 
-    -87,  -95, -110, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -105,  -98,  -90,  -85,  -82,  -83,  -80,  -78,
+    -84,  -79,  -80,  -83,  -87,  -89,  -91,  -93,
+    -99, -106, -117, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -105,  -98,  -90,  -85,  -80,  -75,  -70,  -68,
+    -74,  -72,  -74,  -77,  -80,  -82,  -85,  -87,
+    -92,  -89,  -91,  -95, -100, -106, -112, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -105,  -98,  -90,  -83,  -75,  -71,  -63,  -64,
+    -67,  -62,  -64,  -67,  -70,  -73,  -77,  -81,
+    -84,  -83,  -85,  -89,  -90,  -93,  -98, -104,
+    -109, -114, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -103,  -96,  -88,  -81,  -75,  -68,  -58,  -54,
+    -56,  -54,  -56,  -56,  -58,  -60,  -63,  -66,
+    -74,  -69,  -72,  -72,  -75,  -74,  -77,  -81,
+    -81,  -82,  -84,  -87,  -93,  -96,  -99, -104,
+    -110, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -108, -102,  -96,
+    -91,  -85,  -80,  -74,  -68,  -60,  -51,  -46,
+    -48,  -46,  -43,  -45,  -47,  -47,  -49,  -48,
+    -56,  -53,  -55,  -58,  -57,  -63,  -58,  -60,
+    -66,  -64,  -67,  -70,  -70,  -74,  -77,  -84,
+    -86,  -89,  -91,  -93,  -94, -101, -109, -118,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -108, -103,  -98,  -93,  -88,
+    -83,  -78,  -73,  -68,  -60,  -53,  -44,  -35,
+    -38,  -38,  -34,  -34,  -36,  -40,  -41,  -44,
+    -51,  -45,  -46,  -47,  -46,  -54,  -50,  -49,
+    -50,  -50,  -50,  -51,  -54,  -57,  -58,  -60,
+    -66,  -66,  -66,  -64,  -65,  -68,  -77,  -82,
+    -87,  -95, -110, -999, -999, -999, -999, -999}},
   /* 500 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -107, -102,  -97,  -92,  -87,  -83,  -78,  -75, 
-    -82,  -79,  -83,  -85,  -89,  -92,  -95,  -98, 
-    -101, -105, -109, -113, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -106, 
-    -100,  -95,  -90,  -86,  -81,  -78,  -74,  -69, 
-    -74,  -74,  -76,  -79,  -83,  -84,  -86,  -89, 
-    -92,  -97,  -93, -100, -103, -107, -110, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -106, -100, 
-    -95, -90, -87, -83, -80, -75, -69, -60, 
-    -66, -66, -68, -70, -74, -78, -79, -81, 
-    -81, -83, -84, -87, -93, -96, -99, -103, 
-    -107, -110, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -108, -103, -98, 
-    -93, -89, -85, -82, -78, -71, -62, -55, 
-    -58, -58, -54, -54, -55, -59, -61, -62, 
-    -70, -66, -66, -67, -70, -72, -75, -78, 
-    -84, -84, -84, -88, -91, -90, -95, -98, 
-    -102, -103, -106, -110, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -108, -103,  -98,  -94, 
-    -90,  -87,  -82,  -79,  -73,  -67,  -58,  -47, 
-    -50,  -45,  -41,  -45,  -48,  -44,  -44,  -49, 
-    -54,  -51,  -48,  -47,  -49,  -50,  -51,  -57, 
-    -58,  -60,  -63,  -69,  -70,  -69,  -71,  -74, 
-    -78,  -82,  -90,  -95, -101, -105, -110, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -105, -101, -97, -93, -90, 
-    -85, -80, -77, -72, -65, -56, -48, -37, 
-    -40, -36, -34, -40, -50, -47, -38, -41, 
-    -47, -38, -35, -39, -38, -43, -40, -45, 
-    -50, -45, -44, -47, -50, -55, -48, -48, 
-    -52, -66, -70, -76, -82, -90, -97, -105, 
-    -110, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -107, -102,  -97,  -92,  -87,  -83,  -78,  -75,
+    -82,  -79,  -83,  -85,  -89,  -92,  -95,  -98,
+    -101, -105, -109, -113, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -106,
+    -100,  -95,  -90,  -86,  -81,  -78,  -74,  -69,
+    -74,  -74,  -76,  -79,  -83,  -84,  -86,  -89,
+    -92,  -97,  -93, -100, -103, -107, -110, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -106, -100,
+    -95, -90, -87, -83, -80, -75, -69, -60,
+    -66, -66, -68, -70, -74, -78, -79, -81,
+    -81, -83, -84, -87, -93, -96, -99, -103,
+    -107, -110, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -108, -103, -98,
+    -93, -89, -85, -82, -78, -71, -62, -55,
+    -58, -58, -54, -54, -55, -59, -61, -62,
+    -70, -66, -66, -67, -70, -72, -75, -78,
+    -84, -84, -84, -88, -91, -90, -95, -98,
+    -102, -103, -106, -110, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -108, -103,  -98,  -94,
+    -90,  -87,  -82,  -79,  -73,  -67,  -58,  -47,
+    -50,  -45,  -41,  -45,  -48,  -44,  -44,  -49,
+    -54,  -51,  -48,  -47,  -49,  -50,  -51,  -57,
+    -58,  -60,  -63,  -69,  -70,  -69,  -71,  -74,
+    -78,  -82,  -90,  -95, -101, -105, -110, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -105, -101, -97, -93, -90,
+    -85, -80, -77, -72, -65, -56, -48, -37,
+    -40, -36, -34, -40, -50, -47, -38, -41,
+    -47, -38, -35, -39, -38, -43, -40, -45,
+    -50, -45, -44, -47, -50, -55, -48, -48,
+    -52, -66, -70, -76, -82, -90, -97, -105,
+    -110, -999, -999, -999, -999, -999, -999, -999}},
   /* 707 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -108, -103,  -98,  -93,  -86,  -79,  -76, 
-    -83,  -81,  -85,  -87,  -89,  -93,  -98, -102, 
-    -107, -112, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -108, -103,  -98,  -93,  -86,  -79,  -71, 
-    -77,  -74,  -77,  -79,  -81,  -84,  -85,  -90, 
-    -92,  -93,  -92,  -98, -101, -108, -112, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -108, -103,  -98,  -93,  -87,  -78,  -68,  -65, 
-    -66,  -62,  -65,  -67,  -70,  -73,  -75,  -78, 
-    -82,  -82,  -83,  -84,  -91,  -93,  -98, -102, 
-    -106, -110, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -105, -100, -95, -90, -82, -74, -62, -57, 
-    -58, -56, -51, -52, -52, -54, -54, -58, 
-    -66, -59, -60, -63, -66, -69, -73, -79, 
-    -83, -84, -80, -81, -81, -82, -88, -92, 
-    -98, -105, -113, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -107, 
-    -102,  -97,  -92,  -84,  -79,  -69,  -57,  -47, 
-    -52,  -47,  -44,  -45,  -50,  -52,  -42,  -42, 
-    -53,  -43,  -43,  -48,  -51,  -56,  -55,  -52, 
-    -57,  -59,  -61,  -62,  -67,  -71,  -78,  -83, 
-    -86,  -94,  -98, -103, -110, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -105, -100, 
-    -95,  -90,  -84,  -78,  -70,  -61,  -51,  -41, 
-    -40,  -38,  -40,  -46,  -52,  -51,  -41,  -40, 
-    -46,  -40,  -38,  -38,  -41,  -46,  -41,  -46, 
-    -47,  -43,  -43,  -45,  -41,  -45,  -56,  -67, 
-    -68,  -83,  -87,  -90,  -95, -102, -107, -113, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -108, -103,  -98,  -93,  -86,  -79,  -76,
+    -83,  -81,  -85,  -87,  -89,  -93,  -98, -102,
+    -107, -112, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -108, -103,  -98,  -93,  -86,  -79,  -71,
+    -77,  -74,  -77,  -79,  -81,  -84,  -85,  -90,
+    -92,  -93,  -92,  -98, -101, -108, -112, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -108, -103,  -98,  -93,  -87,  -78,  -68,  -65,
+    -66,  -62,  -65,  -67,  -70,  -73,  -75,  -78,
+    -82,  -82,  -83,  -84,  -91,  -93,  -98, -102,
+    -106, -110, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -105, -100, -95, -90, -82, -74, -62, -57,
+    -58, -56, -51, -52, -52, -54, -54, -58,
+    -66, -59, -60, -63, -66, -69, -73, -79,
+    -83, -84, -80, -81, -81, -82, -88, -92,
+    -98, -105, -113, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -107,
+    -102,  -97,  -92,  -84,  -79,  -69,  -57,  -47,
+    -52,  -47,  -44,  -45,  -50,  -52,  -42,  -42,
+    -53,  -43,  -43,  -48,  -51,  -56,  -55,  -52,
+    -57,  -59,  -61,  -62,  -67,  -71,  -78,  -83,
+    -86,  -94,  -98, -103, -110, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -105, -100,
+    -95,  -90,  -84,  -78,  -70,  -61,  -51,  -41,
+    -40,  -38,  -40,  -46,  -52,  -51,  -41,  -40,
+    -46,  -40,  -38,  -38,  -41,  -46,  -41,  -46,
+    -47,  -43,  -43,  -45,  -41,  -45,  -56,  -67,
+    -68,  -83,  -87,  -90,  -95, -102, -107, -113,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 1000 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -109, -105, -101,  -96,  -91,  -84,  -77, 
-    -82,  -82,  -85,  -89,  -94, -100, -106, -110, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -106, -103,  -98,  -92,  -85,  -80,  -71, 
-    -75,  -72,  -76,  -80,  -84,  -86,  -89,  -93, 
-    -100, -107, -113, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -107, 
-    -104, -101,  -97,  -92,  -88,  -84,  -80,  -64, 
-    -66,  -63,  -64,  -66,  -69,  -73,  -77,  -83, 
-    -83,  -86,  -91,  -98, -104, -111, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -107, 
-    -104, -101,  -97,  -92,  -90,  -84,  -74,  -57, 
-    -58,  -52,  -55,  -54,  -50,  -52,  -50,  -52, 
-    -63,  -62,  -69,  -76,  -77,  -78,  -78,  -79, 
-    -82,  -88,  -94, -100, -106, -111, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -106, -102, 
-    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -50, 
-    -50,  -41,  -44,  -49,  -47,  -50,  -50,  -44, 
-    -55,  -46,  -47,  -48,  -48,  -54,  -49,  -49, 
-    -58,  -62,  -71,  -81,  -87,  -92,  -97, -102, 
-    -108, -114, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -106, -102, 
-    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -45, 
-    -43,  -41,  -47,  -50,  -51,  -50,  -49,  -45, 
-    -47,  -41,  -44,  -41,  -39,  -43,  -38,  -37, 
-    -40,  -41,  -44,  -50,  -58,  -65,  -73,  -79, 
-    -85,  -92,  -97, -101, -105, -109, -113, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -109, -105, -101,  -96,  -91,  -84,  -77,
+    -82,  -82,  -85,  -89,  -94, -100, -106, -110,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -106, -103,  -98,  -92,  -85,  -80,  -71,
+    -75,  -72,  -76,  -80,  -84,  -86,  -89,  -93,
+    -100, -107, -113, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -107,
+    -104, -101,  -97,  -92,  -88,  -84,  -80,  -64,
+    -66,  -63,  -64,  -66,  -69,  -73,  -77,  -83,
+    -83,  -86,  -91,  -98, -104, -111, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -107,
+    -104, -101,  -97,  -92,  -90,  -84,  -74,  -57,
+    -58,  -52,  -55,  -54,  -50,  -52,  -50,  -52,
+    -63,  -62,  -69,  -76,  -77,  -78,  -78,  -79,
+    -82,  -88,  -94, -100, -106, -111, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -106, -102,
+    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -50,
+    -50,  -41,  -44,  -49,  -47,  -50,  -50,  -44,
+    -55,  -46,  -47,  -48,  -48,  -54,  -49,  -49,
+    -58,  -62,  -71,  -81,  -87,  -92,  -97, -102,
+    -108, -114, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -106, -102,
+    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -45,
+    -43,  -41,  -47,  -50,  -51,  -50,  -49,  -45,
+    -47,  -41,  -44,  -41,  -39,  -43,  -38,  -37,
+    -40,  -41,  -44,  -50,  -58,  -65,  -73,  -79,
+    -85,  -92,  -97, -101, -105, -109, -113, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 1414 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -107, -100,  -95,  -87,  -81, 
-    -85,  -83,  -88,  -93, -100, -107, -114, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -107, -101,  -95,  -88,  -83,  -76, 
-    -73,  -72,  -79,  -84,  -90,  -95, -100, -105, 
-    -110, -115, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -104,  -98,  -92,  -87,  -81,  -70, 
-    -65,  -62,  -67,  -71,  -74,  -80,  -85,  -91, 
-    -95,  -99, -103, -108, -111, -114, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -103,  -97,  -90,  -85,  -76,  -60, 
-    -56,  -54,  -60,  -62,  -61,  -56,  -63,  -65, 
-    -73,  -74,  -77,  -75,  -78,  -81,  -86,  -87, 
-    -88,  -91,  -94,  -98, -103, -110, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -105, 
-    -100,  -97,  -92,  -86,  -81,  -79,  -70,  -57, 
-    -51,  -47,  -51,  -58,  -60,  -56,  -53,  -50, 
-    -58,  -52,  -50,  -50,  -53,  -55,  -64,  -69, 
-    -71,  -85,  -82,  -78,  -81,  -85,  -95, -102, 
-    -112, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -105, 
-    -100,  -97,  -92,  -85,  -83,  -79,  -72,  -49, 
-    -40,  -43,  -43,  -54,  -56,  -51,  -50,  -40, 
-    -43,  -38,  -36,  -35,  -37,  -38,  -37,  -44, 
-    -54,  -60,  -57,  -60,  -70,  -75,  -84,  -92, 
-    -103, -112, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -107, -100,  -95,  -87,  -81,
+    -85,  -83,  -88,  -93, -100, -107, -114, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -107, -101,  -95,  -88,  -83,  -76,
+    -73,  -72,  -79,  -84,  -90,  -95, -100, -105,
+    -110, -115, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -104,  -98,  -92,  -87,  -81,  -70,
+    -65,  -62,  -67,  -71,  -74,  -80,  -85,  -91,
+    -95,  -99, -103, -108, -111, -114, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -103,  -97,  -90,  -85,  -76,  -60,
+    -56,  -54,  -60,  -62,  -61,  -56,  -63,  -65,
+    -73,  -74,  -77,  -75,  -78,  -81,  -86,  -87,
+    -88,  -91,  -94,  -98, -103, -110, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -105,
+    -100,  -97,  -92,  -86,  -81,  -79,  -70,  -57,
+    -51,  -47,  -51,  -58,  -60,  -56,  -53,  -50,
+    -58,  -52,  -50,  -50,  -53,  -55,  -64,  -69,
+    -71,  -85,  -82,  -78,  -81,  -85,  -95, -102,
+    -112, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -105,
+    -100,  -97,  -92,  -85,  -83,  -79,  -72,  -49,
+    -40,  -43,  -43,  -54,  -56,  -51,  -50,  -40,
+    -43,  -38,  -36,  -35,  -37,  -38,  -37,  -44,
+    -54,  -60,  -57,  -60,  -70,  -75,  -84,  -92,
+    -103, -112, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 2000 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -102,  -95,  -89,  -82, 
-    -83,  -84,  -90,  -92,  -99, -107, -113, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -107, -101,  -95,  -89,  -83,  -72, 
-    -74,  -78,  -85,  -88,  -88,  -90,  -92,  -98, 
-    -105, -111, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -109, -103, -97, -93, -87, -81, -70, 
-    -70, -67, -75, -73, -76, -79, -81, -83, 
-    -88, -89, -97, -103, -110, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -107, -100,  -94,  -88,  -83,  -75,  -63, 
-    -59,  -59,  -63,  -66,  -60,  -62,  -67,  -67, 
-    -77,  -76,  -81,  -88,  -86,  -92,  -96, -102, 
-    -109, -116, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -105,  -98,  -92,  -86,  -81,  -73,  -56, 
-    -52,  -47,  -55,  -60,  -58,  -52,  -51,  -45, 
-    -49,  -50,  -53,  -54,  -61,  -71,  -70,  -69, 
-    -78,  -79,  -87,  -90,  -96, -104, -112, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -103,  -96,  -90,  -86,  -78,  -70,  -51, 
-    -42,  -47,  -48,  -55,  -54,  -54,  -53,  -42, 
-    -35,  -28,  -33,  -38,  -37,  -44,  -47,  -49, 
-    -54,  -63,  -68,  -78,  -82,  -89,  -94,  -99, 
-    -104, -109, -114, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -102,  -95,  -89,  -82,
+    -83,  -84,  -90,  -92,  -99, -107, -113, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -107, -101,  -95,  -89,  -83,  -72,
+    -74,  -78,  -85,  -88,  -88,  -90,  -92,  -98,
+    -105, -111, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -109, -103, -97, -93, -87, -81, -70,
+    -70, -67, -75, -73, -76, -79, -81, -83,
+    -88, -89, -97, -103, -110, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -107, -100,  -94,  -88,  -83,  -75,  -63,
+    -59,  -59,  -63,  -66,  -60,  -62,  -67,  -67,
+    -77,  -76,  -81,  -88,  -86,  -92,  -96, -102,
+    -109, -116, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -105,  -98,  -92,  -86,  -81,  -73,  -56,
+    -52,  -47,  -55,  -60,  -58,  -52,  -51,  -45,
+    -49,  -50,  -53,  -54,  -61,  -71,  -70,  -69,
+    -78,  -79,  -87,  -90,  -96, -104, -112, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -103,  -96,  -90,  -86,  -78,  -70,  -51,
+    -42,  -47,  -48,  -55,  -54,  -54,  -53,  -42,
+    -35,  -28,  -33,  -38,  -37,  -44,  -47,  -49,
+    -54,  -63,  -68,  -78,  -82,  -89,  -94,  -99,
+    -104, -109, -114, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 2828 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -110, -100,  -90,  -79, 
-    -85,  -81,  -82,  -82,  -89,  -94,  -99, -103, 
-    -109, -115, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -105,  -97,  -85,  -72, 
-    -74,  -70,  -70,  -70,  -76,  -85,  -91,  -93, 
-    -97, -103, -109, -115, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -112,  -93,  -81,  -68, 
-    -62,  -60,  -60,  -57,  -63,  -70,  -77,  -82, 
-    -90,  -93,  -98, -104, -109, -113, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -113, -100,  -93,  -84,  -63, 
-    -58,  -48,  -53,  -54,  -52,  -52,  -57,  -64, 
-    -66,  -76,  -83,  -81,  -85,  -85,  -90,  -95, 
-    -98, -101, -103, -106, -108, -111, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -105,  -95,  -86,  -74,  -53, 
-    -50,  -38,  -43,  -49,  -43,  -42,  -39,  -39, 
-    -46,  -52,  -57,  -56,  -72,  -69,  -74,  -81, 
-    -87,  -92,  -94,  -97,  -99, -102, -105, -108, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -108,  -99,  -90,  -76,  -66,  -45, 
-    -43,  -41,  -44,  -47,  -43,  -47,  -40,  -30, 
-    -31,  -31,  -39,  -33,  -40,  -41,  -43,  -53, 
-    -59,  -70,  -73,  -77,  -79,  -82,  -84,  -87, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -110, -100,  -90,  -79,
+    -85,  -81,  -82,  -82,  -89,  -94,  -99, -103,
+    -109, -115, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -105,  -97,  -85,  -72,
+    -74,  -70,  -70,  -70,  -76,  -85,  -91,  -93,
+    -97, -103, -109, -115, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -112,  -93,  -81,  -68,
+    -62,  -60,  -60,  -57,  -63,  -70,  -77,  -82,
+    -90,  -93,  -98, -104, -109, -113, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -113, -100,  -93,  -84,  -63,
+    -58,  -48,  -53,  -54,  -52,  -52,  -57,  -64,
+    -66,  -76,  -83,  -81,  -85,  -85,  -90,  -95,
+    -98, -101, -103, -106, -108, -111, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -105,  -95,  -86,  -74,  -53,
+    -50,  -38,  -43,  -49,  -43,  -42,  -39,  -39,
+    -46,  -52,  -57,  -56,  -72,  -69,  -74,  -81,
+    -87,  -92,  -94,  -97,  -99, -102, -105, -108,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -108,  -99,  -90,  -76,  -66,  -45,
+    -43,  -41,  -44,  -47,  -43,  -47,  -40,  -30,
+    -31,  -31,  -39,  -33,  -40,  -41,  -43,  -53,
+    -59,  -70,  -73,  -77,  -79,  -82,  -84,  -87,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 4000 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110,  -91,  -76, 
-    -75,  -85,  -93,  -98, -104, -110, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110,  -91,  -76,
+    -75,  -85,  -93,  -98, -104, -110, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
     -999, -999, -999, -999, -999, -999, -999, -999},
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110,  -91,  -70, 
-    -70,  -75,  -86,  -89,  -94,  -98, -101, -106, 
-    -110, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -110,  -95,  -80,  -60, 
-    -65,  -64,  -74,  -83,  -88,  -91,  -95,  -99, 
-    -103, -107, -110, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -110,  -95,  -80,  -58, 
-    -55,  -49,  -66,  -68,  -71,  -78,  -78,  -80, 
-    -88,  -85,  -89,  -97, -100, -105, -110, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -110,  -95,  -80,  -53, 
-    -52,  -41,  -59,  -59,  -49,  -58,  -56,  -63, 
-    -86,  -79,  -90,  -93,  -98, -103, -107, -112, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110,  -97,  -91,  -73,  -45, 
-    -40,  -33,  -53,  -61,  -49,  -54,  -50,  -50, 
-    -60,  -52,  -67,  -74,  -81,  -92,  -96, -100, 
-    -105, -110, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110,  -91,  -70,
+    -70,  -75,  -86,  -89,  -94,  -98, -101, -106,
+    -110, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -110,  -95,  -80,  -60,
+    -65,  -64,  -74,  -83,  -88,  -91,  -95,  -99,
+    -103, -107, -110, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -110,  -95,  -80,  -58,
+    -55,  -49,  -66,  -68,  -71,  -78,  -78,  -80,
+    -88,  -85,  -89,  -97, -100, -105, -110, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -110,  -95,  -80,  -53,
+    -52,  -41,  -59,  -59,  -49,  -58,  -56,  -63,
+    -86,  -79,  -90,  -93,  -98, -103, -107, -112,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110,  -97,  -91,  -73,  -45,
+    -40,  -33,  -53,  -61,  -49,  -54,  -50,  -50,
+    -60,  -52,  -67,  -74,  -81,  -92,  -96, -100,
+    -105, -110, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 5657 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -113, -106,  -99,  -92,  -77, 
-    -80,  -88,  -97, -106, -115, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -116, -109, -102,  -95,  -89,  -74, 
-    -72,  -88,  -87,  -95, -102, -109, -116, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -116, -109, -102,  -95,  -89,  -75, 
-    -66,  -74,  -77,  -78,  -86,  -87,  -90,  -96, 
-    -105, -115, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -115, -108, -101,  -94,  -88,  -66, 
-    -56,  -61,  -70,  -65,  -78,  -72,  -83,  -84, 
-    -93,  -98, -105, -110, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -110, -105,  -95,  -89,  -82,  -57, 
-    -52,  -52,  -59,  -56,  -59,  -58,  -69,  -67, 
-    -88,  -82,  -82,  -89,  -94, -100, -108, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -110, -101,  -96,  -90,  -83,  -77,  -54, 
-    -43,  -38,  -50,  -48,  -52,  -48,  -42,  -42, 
-    -51,  -52,  -53,  -59,  -65,  -71,  -78,  -85, 
-    -95, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -113, -106,  -99,  -92,  -77,
+    -80,  -88,  -97, -106, -115, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -116, -109, -102,  -95,  -89,  -74,
+    -72,  -88,  -87,  -95, -102, -109, -116, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -116, -109, -102,  -95,  -89,  -75,
+    -66,  -74,  -77,  -78,  -86,  -87,  -90,  -96,
+    -105, -115, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -115, -108, -101,  -94,  -88,  -66,
+    -56,  -61,  -70,  -65,  -78,  -72,  -83,  -84,
+    -93,  -98, -105, -110, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -110, -105,  -95,  -89,  -82,  -57,
+    -52,  -52,  -59,  -56,  -59,  -58,  -69,  -67,
+    -88,  -82,  -82,  -89,  -94, -100, -108, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -110, -101,  -96,  -90,  -83,  -77,  -54,
+    -43,  -38,  -50,  -48,  -52,  -48,  -42,  -42,
+    -51,  -52,  -53,  -59,  -65,  -71,  -78,  -85,
+    -95, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 8000 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -120, -105,  -86,  -68, 
-    -78,  -79,  -90, -100, -110, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -120, -105,  -86,  -66, 
-    -73,  -77,  -88,  -96, -105, -115, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -120, -105,  -92,  -80,  -61, 
-    -64,  -68,  -80,  -87,  -92, -100, -110, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -120, -104,  -91,  -79,  -52, 
-    -60,  -54,  -64,  -69,  -77,  -80,  -82,  -84, 
-    -85,  -87,  -88,  -90, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -118, -100,  -87,  -77,  -49, 
-    -50,  -44,  -58,  -61,  -61,  -67,  -65,  -62, 
-    -62,  -62,  -65,  -68, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -115,  -98,  -84,  -62,  -49, 
-    -44,  -38,  -46,  -49,  -49,  -46,  -39,  -37, 
-    -39,  -40,  -42,  -43, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -120, -105,  -86,  -68,
+    -78,  -79,  -90, -100, -110, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -120, -105,  -86,  -66,
+    -73,  -77,  -88,  -96, -105, -115, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -120, -105,  -92,  -80,  -61,
+    -64,  -68,  -80,  -87,  -92, -100, -110, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -120, -104,  -91,  -79,  -52,
+    -60,  -54,  -64,  -69,  -77,  -80,  -82,  -84,
+    -85,  -87,  -88,  -90, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -118, -100,  -87,  -77,  -49,
+    -50,  -44,  -58,  -61,  -61,  -67,  -65,  -62,
+    -62,  -62,  -65,  -68, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -115,  -98,  -84,  -62,  -49,
+    -44,  -38,  -46,  -49,  -49,  -46,  -39,  -37,
+    -39,  -40,  -42,  -43, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 11314 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110,  -88,  -74, 
-    -77,  -82,  -82,  -85,  -90,  -94,  -99, -104, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110,  -88,  -66, 
-    -70,  -81,  -80,  -81,  -84,  -88,  -91,  -93, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110,  -88,  -61, 
-    -63,  -70,  -71,  -74,  -77,  -80,  -83,  -85, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -110, -86, -62, 
-    -63,  -62,  -62,  -58,  -52,  -50,  -50,  -52, 
-    -54, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -118, -108,  -84,  -53, 
-    -50,  -50,  -50,  -55,  -47,  -45,  -40,  -40, 
-    -40, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -118, -100,  -73,  -43, 
-    -37,  -42,  -43,  -53,  -38,  -37,  -35,  -35, 
-    -38, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110,  -88,  -74,
+    -77,  -82,  -82,  -85,  -90,  -94,  -99, -104,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110,  -88,  -66,
+    -70,  -81,  -80,  -81,  -84,  -88,  -91,  -93,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110,  -88,  -61,
+    -63,  -70,  -71,  -74,  -77,  -80,  -83,  -85,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -110, -86, -62,
+    -63,  -62,  -62,  -58,  -52,  -50,  -50,  -52,
+    -54, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -118, -108,  -84,  -53,
+    -50,  -50,  -50,  -55,  -47,  -45,  -40,  -40,
+    -40, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -118, -100,  -73,  -43,
+    -37,  -42,  -43,  -53,  -38,  -37,  -35,  -35,
+    -38, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999}},
   /* 16000 Hz */
-  {{-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -91,  -84,  -74, 
-    -80,  -80,  -80,  -80,  -80, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -91,  -84,  -74, 
-    -68,  -68,  -68,  -68,  -68, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -86,  -78,  -70, 
-    -60,  -45,  -30,  -21, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -87,  -78,  -67, 
-    -48,  -38,  -29,  -21, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -86,  -69,  -56, 
-    -45,  -35,  -33,  -29, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999}, 
-   {-999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -110, -100,  -83,  -71,  -48, 
-    -27,  -38,  -37,  -34, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
-    -999, -999, -999, -999, -999, -999, -999, -999, 
+  {{-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -91,  -84,  -74,
+    -80,  -80,  -80,  -80,  -80, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -91,  -84,  -74,
+    -68,  -68,  -68,  -68,  -68, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -86,  -78,  -70,
+    -60,  -45,  -30,  -21, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -87,  -78,  -67,
+    -48,  -38,  -29,  -21, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -86,  -69,  -56,
+    -45,  -35,  -33,  -29, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -110, -100,  -83,  -71,  -48,
+    -27,  -38,  -37,  -34, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
+    -999, -999, -999, -999, -999, -999, -999, -999,
     -999, -999, -999, -999, -999, -999, -999, -999}}
-}; 
+};
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/mdct.c
+++ b/sys/src/cmd/audio/libvorbis/mdct.c
@@ -5,14 +5,14 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: normalized modified discrete cosine transform
            power of two length transform only [64 <= n ]
- last mod: $Id: mdct.c,v 1.31 2002/06/28 22:19:36 xiphmont Exp $
+ last mod: $Id: mdct.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  Original algorithm adapted long ago from _The use of multirate filter
  banks for coding of high quality digital audio_, by T. Sporer,
@@ -26,7 +26,7 @@
 
  This module DOES NOT INCLUDE code to generate/apply the window
  function.  Everybody has their own weird favorite including me... I
- happen to like the properties of y=sin(2PI*sin^2(x)), but others may
+ happen to like the properties of y=sin(.5PI*sin^2(x)), but others may
  vehemently disagree.
 
  ********************************************************************/
@@ -52,7 +52,7 @@
 void mdct_init(mdct_lookup *lookup,int n){
   int   *bitrev=_ogg_malloc(sizeof(*bitrev)*(n/4));
   DATA_TYPE *T=_ogg_malloc(sizeof(*T)*(n+n/4));
-  
+
   int i;
   int n2=n>>1;
   int log2n=lookup->log2n=rint(log((float)n)/log(2.f));
@@ -81,7 +81,7 @@
     for(i=0;i<n/8;i++){
       int acc=0;
       for(j=0;msb>>j;j++)
-	if((msb>>j)&i)acc|=1<<j;
+        if((msb>>j)&i)acc|=1<<j;
       bitrev[i*2]=((~acc)&mask)-1;
       bitrev[i*2+1]=acc;
 
@@ -97,21 +97,21 @@
   REG_TYPE r2   = x[4] + x[0];
   REG_TYPE r3   = x[4] - x[0];
 
-	   x[6] = r0   + r2;
-	   x[4] = r0   - r2;
-	   
-	   r0   = x[5] - x[1];
-	   r2   = x[7] - x[3];
-	   x[0] = r1   + r0;
-	   x[2] = r1   - r0;
-	   
-	   r0   = x[5] + x[1];
-	   r1   = x[7] + x[3];
-	   x[3] = r2   + r3;
-	   x[1] = r2   - r3;
-	   x[7] = r1   + r0;
-	   x[5] = r1   - r0;
-	   
+           x[6] = r0   + r2;
+           x[4] = r0   - r2;
+
+           r0   = x[5] - x[1];
+           r2   = x[7] - x[3];
+           x[0] = r1   + r0;
+           x[2] = r1   - r0;
+
+           r0   = x[5] + x[1];
+           r1   = x[7] + x[3];
+           x[3] = r2   + r3;
+           x[1] = r2   - r3;
+           x[7] = r1   + r0;
+           x[5] = r1   - r0;
+
 }
 
 /* 16 point butterfly (in place, 4 register) */
@@ -145,8 +145,8 @@
            x[6]  = r0;
            x[7]  = r1;
 
-	   mdct_butterfly_8(x);
-	   mdct_butterfly_8(x+8);
+           mdct_butterfly_8(x);
+           mdct_butterfly_8(x+8);
 }
 
 /* 32 point butterfly (in place, 4 register) */
@@ -154,70 +154,70 @@
   REG_TYPE r0     = x[30] - x[14];
   REG_TYPE r1     = x[31] - x[15];
 
-           x[30] +=         x[14];           
-	   x[31] +=         x[15];
-           x[14]  =         r0;              
-	   x[15]  =         r1;
+           x[30] +=         x[14];
+           x[31] +=         x[15];
+           x[14]  =         r0;
+           x[15]  =         r1;
 
-           r0     = x[28] - x[12];   
-	   r1     = x[29] - x[13];
-           x[28] +=         x[12];           
-	   x[29] +=         x[13];
+           r0     = x[28] - x[12];
+           r1     = x[29] - x[13];
+           x[28] +=         x[12];
+           x[29] +=         x[13];
            x[12]  = MULT_NORM( r0 * cPI1_8  -  r1 * cPI3_8 );
-	   x[13]  = MULT_NORM( r0 * cPI3_8  +  r1 * cPI1_8 );
+           x[13]  = MULT_NORM( r0 * cPI3_8  +  r1 * cPI1_8 );
 
            r0     = x[26] - x[10];
-	   r1     = x[27] - x[11];
-	   x[26] +=         x[10];
-	   x[27] +=         x[11];
-	   x[10]  = MULT_NORM(( r0  - r1 ) * cPI2_8);
-	   x[11]  = MULT_NORM(( r0  + r1 ) * cPI2_8);
+           r1     = x[27] - x[11];
+           x[26] +=         x[10];
+           x[27] +=         x[11];
+           x[10]  = MULT_NORM(( r0  - r1 ) * cPI2_8);
+           x[11]  = MULT_NORM(( r0  + r1 ) * cPI2_8);
 
-	   r0     = x[24] - x[8];
-	   r1     = x[25] - x[9];
-	   x[24] += x[8];
-	   x[25] += x[9];
-	   x[8]   = MULT_NORM( r0 * cPI3_8  -  r1 * cPI1_8 );
-	   x[9]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
+           r0     = x[24] - x[8];
+           r1     = x[25] - x[9];
+           x[24] += x[8];
+           x[25] += x[9];
+           x[8]   = MULT_NORM( r0 * cPI3_8  -  r1 * cPI1_8 );
+           x[9]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
 
-	   r0     = x[22] - x[6];
-	   r1     = x[7]  - x[23];
-	   x[22] += x[6];
-	   x[23] += x[7];
-	   x[6]   = r1;
-	   x[7]   = r0;
+           r0     = x[22] - x[6];
+           r1     = x[7]  - x[23];
+           x[22] += x[6];
+           x[23] += x[7];
+           x[6]   = r1;
+           x[7]   = r0;
 
-	   r0     = x[4]  - x[20];
-	   r1     = x[5]  - x[21];
-	   x[20] += x[4];
-	   x[21] += x[5];
-	   x[4]   = MULT_NORM( r1 * cPI1_8  +  r0 * cPI3_8 );
-	   x[5]   = MULT_NORM( r1 * cPI3_8  -  r0 * cPI1_8 );
+           r0     = x[4]  - x[20];
+           r1     = x[5]  - x[21];
+           x[20] += x[4];
+           x[21] += x[5];
+           x[4]   = MULT_NORM( r1 * cPI1_8  +  r0 * cPI3_8 );
+           x[5]   = MULT_NORM( r1 * cPI3_8  -  r0 * cPI1_8 );
 
-	   r0     = x[2]  - x[18];
-	   r1     = x[3]  - x[19];
-	   x[18] += x[2];
-	   x[19] += x[3];
-	   x[2]   = MULT_NORM(( r1  + r0 ) * cPI2_8);
-	   x[3]   = MULT_NORM(( r1  - r0 ) * cPI2_8);
+           r0     = x[2]  - x[18];
+           r1     = x[3]  - x[19];
+           x[18] += x[2];
+           x[19] += x[3];
+           x[2]   = MULT_NORM(( r1  + r0 ) * cPI2_8);
+           x[3]   = MULT_NORM(( r1  - r0 ) * cPI2_8);
 
-	   r0     = x[0]  - x[16];
-	   r1     = x[1]  - x[17];
-	   x[16] += x[0];
-	   x[17] += x[1];
-	   x[0]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
-	   x[1]   = MULT_NORM( r1 * cPI1_8  -  r0 * cPI3_8 );
+           r0     = x[0]  - x[16];
+           r1     = x[1]  - x[17];
+           x[16] += x[0];
+           x[17] += x[1];
+           x[0]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
+           x[1]   = MULT_NORM( r1 * cPI1_8  -  r0 * cPI3_8 );
 
-	   mdct_butterfly_16(x);
-	   mdct_butterfly_16(x+16);
+           mdct_butterfly_16(x);
+           mdct_butterfly_16(x+16);
 
 }
 
 /* N point first stage butterfly (in place, 2 register) */
 STIN void mdct_butterfly_first(DATA_TYPE *T,
-					DATA_TYPE *x,
-					int points){
-  
+                                        DATA_TYPE *x,
+                                        int points){
+
   DATA_TYPE *x1        = x          + points      - 8;
   DATA_TYPE *x2        = x          + (points>>1) - 8;
   REG_TYPE   r0;
@@ -224,35 +224,35 @@
   REG_TYPE   r1;
 
   do{
-    
+
                r0      = x1[6]      -  x2[6];
-	       r1      = x1[7]      -  x2[7];
-	       x1[6]  += x2[6];
-	       x1[7]  += x2[7];
-	       x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
-	       x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
-	       
-	       r0      = x1[4]      -  x2[4];
-	       r1      = x1[5]      -  x2[5];
-	       x1[4]  += x2[4];
-	       x1[5]  += x2[5];
-	       x2[4]   = MULT_NORM(r1 * T[5]  +  r0 * T[4]);
-	       x2[5]   = MULT_NORM(r1 * T[4]  -  r0 * T[5]);
-	       
-	       r0      = x1[2]      -  x2[2];
-	       r1      = x1[3]      -  x2[3];
-	       x1[2]  += x2[2];
-	       x1[3]  += x2[3];
-	       x2[2]   = MULT_NORM(r1 * T[9]  +  r0 * T[8]);
-	       x2[3]   = MULT_NORM(r1 * T[8]  -  r0 * T[9]);
-	       
-	       r0      = x1[0]      -  x2[0];
-	       r1      = x1[1]      -  x2[1];
-	       x1[0]  += x2[0];
-	       x1[1]  += x2[1];
-	       x2[0]   = MULT_NORM(r1 * T[13] +  r0 * T[12]);
-	       x2[1]   = MULT_NORM(r1 * T[12] -  r0 * T[13]);
-	       
+               r1      = x1[7]      -  x2[7];
+               x1[6]  += x2[6];
+               x1[7]  += x2[7];
+               x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+               x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+
+               r0      = x1[4]      -  x2[4];
+               r1      = x1[5]      -  x2[5];
+               x1[4]  += x2[4];
+               x1[5]  += x2[5];
+               x2[4]   = MULT_NORM(r1 * T[5]  +  r0 * T[4]);
+               x2[5]   = MULT_NORM(r1 * T[4]  -  r0 * T[5]);
+
+               r0      = x1[2]      -  x2[2];
+               r1      = x1[3]      -  x2[3];
+               x1[2]  += x2[2];
+               x1[3]  += x2[3];
+               x2[2]   = MULT_NORM(r1 * T[9]  +  r0 * T[8]);
+               x2[3]   = MULT_NORM(r1 * T[8]  -  r0 * T[9]);
+
+               r0      = x1[0]      -  x2[0];
+               r1      = x1[1]      -  x2[1];
+               x1[0]  += x2[0];
+               x1[1]  += x2[1];
+               x2[0]   = MULT_NORM(r1 * T[13] +  r0 * T[12]);
+               x2[1]   = MULT_NORM(r1 * T[12] -  r0 * T[13]);
+
     x1-=8;
     x2-=8;
     T+=16;
@@ -262,10 +262,10 @@
 
 /* N/stage point generic N stage butterfly (in place, 2 register) */
 STIN void mdct_butterfly_generic(DATA_TYPE *T,
-					  DATA_TYPE *x,
-					  int points,
-					  int trigint){
-  
+                                          DATA_TYPE *x,
+                                          int points,
+                                          int trigint){
+
   DATA_TYPE *x1        = x          + points      - 8;
   DATA_TYPE *x2        = x          + (points>>1) - 8;
   REG_TYPE   r0;
@@ -272,42 +272,42 @@
   REG_TYPE   r1;
 
   do{
-    
+
                r0      = x1[6]      -  x2[6];
-	       r1      = x1[7]      -  x2[7];
-	       x1[6]  += x2[6];
-	       x1[7]  += x2[7];
-	       x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
-	       x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
-	       
-	       T+=trigint;
-	       
-	       r0      = x1[4]      -  x2[4];
-	       r1      = x1[5]      -  x2[5];
-	       x1[4]  += x2[4];
-	       x1[5]  += x2[5];
-	       x2[4]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
-	       x2[5]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
-	       
-	       T+=trigint;
-	       
-	       r0      = x1[2]      -  x2[2];
-	       r1      = x1[3]      -  x2[3];
-	       x1[2]  += x2[2];
-	       x1[3]  += x2[3];
-	       x2[2]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
-	       x2[3]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
-	       
-	       T+=trigint;
-	       
-	       r0      = x1[0]      -  x2[0];
-	       r1      = x1[1]      -  x2[1];
-	       x1[0]  += x2[0];
-	       x1[1]  += x2[1];
-	       x2[0]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
-	       x2[1]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+               r1      = x1[7]      -  x2[7];
+               x1[6]  += x2[6];
+               x1[7]  += x2[7];
+               x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+               x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
 
-	       T+=trigint;
+               T+=trigint;
+
+               r0      = x1[4]      -  x2[4];
+               r1      = x1[5]      -  x2[5];
+               x1[4]  += x2[4];
+               x1[5]  += x2[5];
+               x2[4]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+               x2[5]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+
+               T+=trigint;
+
+               r0      = x1[2]      -  x2[2];
+               r1      = x1[3]      -  x2[3];
+               x1[2]  += x2[2];
+               x1[3]  += x2[3];
+               x2[2]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+               x2[3]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+
+               T+=trigint;
+
+               r0      = x1[0]      -  x2[0];
+               r1      = x1[1]      -  x2[1];
+               x1[0]  += x2[0];
+               x1[1]  += x2[1];
+               x2[0]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+               x2[1]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+
+               T+=trigint;
     x1-=8;
     x2-=8;
 
@@ -315,13 +315,13 @@
 }
 
 STIN void mdct_butterflies(mdct_lookup *init,
-			     DATA_TYPE *x,
-			     int points){
-  
+                             DATA_TYPE *x,
+                             int points){
+
   DATA_TYPE *T=init->trig;
   int stages=init->log2n-5;
   int i,j;
-  
+
   if(--stages>0){
     mdct_butterfly_first(T,x,points);
   }
@@ -344,8 +344,8 @@
   }
 }
 
-STIN void mdct_bitreverse(mdct_lookup *init, 
-			    DATA_TYPE *x){
+STIN void mdct_bitreverse(mdct_lookup *init,
+                            DATA_TYPE *x){
   int        n       = init->n;
   int       *bit     = init->bitrev;
   DATA_TYPE *w0      = x;
@@ -361,16 +361,16 @@
     REG_TYPE  r2     = MULT_NORM(r1     * T[0]   + r0 * T[1]);
     REG_TYPE  r3     = MULT_NORM(r1     * T[1]   - r0 * T[0]);
 
-	      w1    -= 4;
+              w1    -= 4;
 
               r0     = HALVE(x0[1] + x1[1]);
               r1     = HALVE(x0[0] - x1[0]);
-      
-	      w0[0]  = r0     + r2;
-	      w1[2]  = r0     - r2;
-	      w0[1]  = r1     + r3;
-	      w1[3]  = r3     - r1;
 
+              w0[0]  = r0     + r2;
+              w1[2]  = r0     - r2;
+              w0[1]  = r1     + r3;
+              w1[3]  = r3     - r1;
+
               x0     = x+bit[2];
               x1     = x+bit[3];
 
@@ -381,16 +381,16 @@
 
               r0     = HALVE(x0[1] + x1[1]);
               r1     = HALVE(x0[0] - x1[0]);
-      
-	      w0[2]  = r0     + r2;
-	      w1[0]  = r0     - r2;
-	      w0[3]  = r1     + r3;
-	      w1[1]  = r3     - r1;
 
-	      T     += 4;
-	      bit   += 4;
-	      w0    += 4;
+              w0[2]  = r0     + r2;
+              w1[0]  = r0     - r2;
+              w0[3]  = r1     + r3;
+              w1[1]  = r3     - r1;
 
+              T     += 4;
+              bit   += 4;
+              w0    += 4;
+
   }while(w0<w1);
 }
 
@@ -439,7 +439,7 @@
     DATA_TYPE *oX2=out+n2+n4;
     DATA_TYPE *iX =out;
     T             =init->trig+n2;
-    
+
     do{
       oX1-=4;
 
@@ -497,13 +497,11 @@
   int n8=n>>3;
   DATA_TYPE *w=malloc(n*sizeof(*w)); /* forward needs working space */
   DATA_TYPE *w2=w+n2;
-  DATA_TYPE *free_me;
 
-
   /* rotate */
 
   /* window + rotate + step 1 */
-  
+
   REG_TYPE r0;
   REG_TYPE r1;
   DATA_TYPE *x0=in+n2+n4;
@@ -512,13 +510,11 @@
 
   int i=0;
 
-  free_me = w;
-
   for(i=0;i<n8;i+=2){
     x0 -=4;
     T-=2;
     r0= x0[2] + x1[0];
-    r1= x0[0] + x1[2];       
+    r1= x0[0] + x1[2];
     w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
     w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
     x1 +=4;
@@ -525,17 +521,17 @@
   }
 
   x1=in+1;
-  
+
   for(;i<n2-n8;i+=2){
     T-=2;
     x0 -=4;
     r0= x0[2] - x1[0];
-    r1= x0[0] - x1[2];       
+    r1= x0[0] - x1[2];
     w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
     w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
     x1 +=4;
   }
-    
+
   x0=in+n;
 
   for(;i<n2;i+=2){
@@ -542,7 +538,7 @@
     T-=2;
     x0 -=4;
     r0= -x0[2] - x1[0];
-    r1= -x0[0] - x1[2];       
+    r1= -x0[0] - x1[2];
     w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
     w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
     x1 +=4;
@@ -564,8 +560,5 @@
     w+=2;
     T+=2;
   }
-
-  free(free_me);
-
+  free(w);
 }
-
--- a/sys/src/cmd/audio/libvorbis/mdct.h
+++ b/sys/src/cmd/audio/libvorbis/mdct.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: modified discrete cosine transform prototypes
- last mod: $Id: mdct.h,v 1.20 2002/01/22 11:59:00 xiphmont Exp $
+ last mod: $Id: mdct.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -56,7 +56,7 @@
 typedef struct {
   int n;
   int log2n;
-  
+
   DATA_TYPE *trig;
   int       *bitrev;
 
@@ -69,15 +69,3 @@
 extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
 
 #endif
-
-
-
-
-
-
-
-
-
-
-
-
--- a/sys/src/cmd/audio/libvorbis/misc.h
+++ b/sys/src/cmd/audio/libvorbis/misc.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: miscellaneous prototypes
- last mod: $Id: misc.h,v 1.12 2002/06/28 22:19:37 xiphmont Exp $
+ last mod: $Id: misc.h 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -19,20 +19,26 @@
 #define _V_RANDOM_H_
 #include "vorbis/codec.h"
 
-extern int analysis_noisy;
-
 extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
 extern void _vorbis_block_ripcord(vorbis_block *vb);
+extern int ov_ilog(ogg_uint32_t v);
+
+#ifdef ANALYSIS
+extern int analysis_noisy;
 extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
-			     ogg_int64_t off);
+                             ogg_int64_t off);
+extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,
+                             ogg_int64_t off);
+#endif
 
 #ifdef DEBUG_MALLOC
 
 #define _VDBG_GRAPHFILE "malloc.m"
-extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); 
-extern void _VDBG_free(void *ptr,char *file,long line); 
+#undef _VDBG_GRAPHFILE
+extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line);
+extern void _VDBG_free(void *ptr,char *file,long line);
 
-#ifndef MISC_C 
+#ifndef MISC_C
 #undef _ogg_malloc
 #undef _ogg_calloc
 #undef _ogg_realloc
--- a/sys/src/cmd/audio/libvorbis/mkfile
+++ b/sys/src/cmd/audio/libvorbis/mkfile
@@ -5,28 +5,28 @@
 LIB=libvorbis.a$O
 
 OFILES=\
-	mdct.$O\
-	smallft.$O\
+	analysis.$O\
+	bitrate.$O\
 	block.$O\
+	codebook.$O\
 	envelope.$O\
-	window.$O\
-	lsp.$O\
-	lpc.$O\
-	analysis.$O\
-	synthesis.$O\
-	psy.$O\
-	info.$O\
-	floor1.$O\
 	floor0.$O\
-	res0.$O\
+	floor1.$O\
+	info.$O\
+	lookup.$O\
+	lpc.$O\
+	lsp.$O\
 	mapping0.$O\
+	mdct.$O\
+	psy.$O\
 	registry.$O\
-	codebook.$O\
+	res0.$O\
 	sharedbook.$O\
-	lookup.$O\
-	bitrate.$O\
-	vorbisfile.$O\
+	smallft.$O\
+	synthesis.$O\
 	vorbisenc.$O\
+	vorbisfile.$O\
+	window.$O\
 
 HFILES=\
 
--- a/sys/src/cmd/audio/libvorbis/modes/floor_all.h
+++ b/sys/src/cmd/audio/libvorbis/modes/floor_all.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: key floor settings
- last mod: $Id: floor_all.h,v 1.1 2002/07/11 06:41:04 xiphmont Exp $
+ last mod: $Id: floor_all.h 17050 2010-03-26 01:34:42Z xiphmont $
 
  ********************************************************************/
 
@@ -19,7 +19,7 @@
 #include "backends.h"
 #include "books/floor/floor_books.h"
 
-static static_codebook *_floor_128x4_books[]={
+static const static_codebook*const _floor_128x4_books[]={
   &_huff_book_line_128x4_class0,
   &_huff_book_line_128x4_0sub0,
   &_huff_book_line_128x4_0sub1,
@@ -26,7 +26,7 @@
   &_huff_book_line_128x4_0sub2,
   &_huff_book_line_128x4_0sub3,
 };
-static static_codebook *_floor_256x4_books[]={
+static const static_codebook*const _floor_256x4_books[]={
   &_huff_book_line_256x4_class0,
   &_huff_book_line_256x4_0sub0,
   &_huff_book_line_256x4_0sub1,
@@ -33,79 +33,71 @@
   &_huff_book_line_256x4_0sub2,
   &_huff_book_line_256x4_0sub3,
 };
-static static_codebook *_floor_128x7_books[]={
+static const static_codebook*const _floor_128x7_books[]={
   &_huff_book_line_128x7_class0,
   &_huff_book_line_128x7_class1,
-  
+
   &_huff_book_line_128x7_0sub1,
   &_huff_book_line_128x7_0sub2,
   &_huff_book_line_128x7_0sub3,
   &_huff_book_line_128x7_1sub1,
   &_huff_book_line_128x7_1sub2,
-  &_huff_book_line_128x7_1sub3, 
+  &_huff_book_line_128x7_1sub3,
 };
-static static_codebook *_floor_256x7_books[]={
+static const static_codebook*const _floor_256x7_books[]={
   &_huff_book_line_256x7_class0,
   &_huff_book_line_256x7_class1,
-  
+
   &_huff_book_line_256x7_0sub1,
   &_huff_book_line_256x7_0sub2,
   &_huff_book_line_256x7_0sub3,
   &_huff_book_line_256x7_1sub1,
   &_huff_book_line_256x7_1sub2,
-  &_huff_book_line_256x7_1sub3, 
+  &_huff_book_line_256x7_1sub3,
 };
-static static_codebook *_floor_128x11_books[]={
+static const static_codebook*const _floor_128x11_books[]={
   &_huff_book_line_128x11_class1,
   &_huff_book_line_128x11_class2,
   &_huff_book_line_128x11_class3,
-  
+
   &_huff_book_line_128x11_0sub0,
   &_huff_book_line_128x11_1sub0,
   &_huff_book_line_128x11_1sub1,
   &_huff_book_line_128x11_2sub1,
   &_huff_book_line_128x11_2sub2,
-  &_huff_book_line_128x11_2sub3, 
+  &_huff_book_line_128x11_2sub3,
   &_huff_book_line_128x11_3sub1,
   &_huff_book_line_128x11_3sub2,
-  &_huff_book_line_128x11_3sub3, 
+  &_huff_book_line_128x11_3sub3,
 };
-static static_codebook *_floor_128x17_books[]={
+static const static_codebook*const _floor_128x17_books[]={
   &_huff_book_line_128x17_class1,
   &_huff_book_line_128x17_class2,
   &_huff_book_line_128x17_class3,
-  
+
   &_huff_book_line_128x17_0sub0,
   &_huff_book_line_128x17_1sub0,
   &_huff_book_line_128x17_1sub1,
   &_huff_book_line_128x17_2sub1,
   &_huff_book_line_128x17_2sub2,
-  &_huff_book_line_128x17_2sub3, 
+  &_huff_book_line_128x17_2sub3,
   &_huff_book_line_128x17_3sub1,
   &_huff_book_line_128x17_3sub2,
-  &_huff_book_line_128x17_3sub3, 
+  &_huff_book_line_128x17_3sub3,
 };
-static static_codebook *_floor_512x17_books[]={
-  &_huff_book_line_512x17_class1,
-  &_huff_book_line_512x17_class2,
-  &_huff_book_line_512x17_class3,
-  
-  &_huff_book_line_512x17_0sub0,
-  &_huff_book_line_512x17_1sub0,
-  &_huff_book_line_512x17_1sub1,
-  &_huff_book_line_512x17_2sub1,
-  &_huff_book_line_512x17_2sub2,
-  &_huff_book_line_512x17_2sub3, 
-  &_huff_book_line_512x17_3sub1,
-  &_huff_book_line_512x17_3sub2,
-  &_huff_book_line_512x17_3sub3, 
+static const static_codebook*const _floor_256x4low_books[]={
+  &_huff_book_line_256x4low_class0,
+  &_huff_book_line_256x4low_0sub0,
+  &_huff_book_line_256x4low_0sub1,
+  &_huff_book_line_256x4low_0sub2,
+  &_huff_book_line_256x4low_0sub3,
 };
-static static_codebook *_floor_1024x27_books[]={
+static const static_codebook*const _floor_1024x27_books[]={
   &_huff_book_line_1024x27_class1,
   &_huff_book_line_1024x27_class2,
   &_huff_book_line_1024x27_class3,
   &_huff_book_line_1024x27_class4,
-  
+
   &_huff_book_line_1024x27_0sub0,
   &_huff_book_line_1024x27_1sub0,
   &_huff_book_line_1024x27_1sub1,
@@ -118,8 +110,46 @@
   &_huff_book_line_1024x27_4sub2,
   &_huff_book_line_1024x27_4sub3,
 };
+static const static_codebook*const _floor_2048x27_books[]={
+  &_huff_book_line_2048x27_class1,
+  &_huff_book_line_2048x27_class2,
+  &_huff_book_line_2048x27_class3,
+  &_huff_book_line_2048x27_class4,
 
-static static_codebook **_floor_books[10]={
+  &_huff_book_line_2048x27_0sub0,
+  &_huff_book_line_2048x27_1sub0,
+  &_huff_book_line_2048x27_1sub1,
+  &_huff_book_line_2048x27_2sub0,
+  &_huff_book_line_2048x27_2sub1,
+  &_huff_book_line_2048x27_3sub1,
+  &_huff_book_line_2048x27_3sub2,
+  &_huff_book_line_2048x27_3sub3,
+  &_huff_book_line_2048x27_4sub1,
+  &_huff_book_line_2048x27_4sub2,
+  &_huff_book_line_2048x27_4sub3,
+};
+
+static const static_codebook*const _floor_512x17_books[]={
+  &_huff_book_line_512x17_class1,
+  &_huff_book_line_512x17_class2,
+  &_huff_book_line_512x17_class3,
+
+  &_huff_book_line_512x17_0sub0,
+  &_huff_book_line_512x17_1sub0,
+  &_huff_book_line_512x17_1sub1,
+  &_huff_book_line_512x17_2sub1,
+  &_huff_book_line_512x17_2sub2,
+  &_huff_book_line_512x17_2sub3,
+  &_huff_book_line_512x17_3sub1,
+  &_huff_book_line_512x17_3sub2,
+  &_huff_book_line_512x17_3sub3,
+};
+
+static const static_codebook*const _floor_Xx0_books[]={
+  0
+};
+
+static const static_codebook*const *const _floor_books[11]={
   _floor_128x4_books,
   _floor_256x4_books,
   _floor_128x7_books,
@@ -126,101 +156,105 @@
   _floor_256x7_books,
   _floor_128x11_books,
   _floor_128x17_books,
-  _floor_128x17_books,
+  _floor_256x4low_books,
   _floor_1024x27_books,
-  _floor_1024x27_books,
+  _floor_2048x27_books,
   _floor_512x17_books,
+  _floor_Xx0_books,
 };
 
-static vorbis_info_floor1 _floor[10]={
-  /* 128 x 4 */
+static const vorbis_info_floor1 _floor[11]={
+  /* 0: 128 x 4 */
   {
     1,{0},{4},{2},{0},
     {{1,2,3,4}},
     4,{0,128, 33,8,16,70},
 
-    60,30,500,   1.,18.,  -1
+    60,30,500,   1.,18.,  128
   },
-  /* 256 x 4 */
+  /* 1: 256 x 4 */
   {
     1,{0},{4},{2},{0},
     {{1,2,3,4}},
     4,{0,256, 66,16,32,140},
 
-    60,30,500,   1.,18.,  -1
+    60,30,500,   1.,18.,  256
   },
-  /* 128 x 7 */
+  /* 2: 128 x 7 */
   {
     2,{0,1},{3,4},{2,2},{0,1},
     {{-1,2,3,4},{-1,5,6,7}},
     4,{0,128, 14,4,58, 2,8,28,90},
-    
-    60,30,500,   1.,18.,  -1
+
+    60,30,500,   1.,18.,  128
   },
-  /* 256 x 7 */
+  /* 3: 256 x 7 */
   {
     2,{0,1},{3,4},{2,2},{0,1},
     {{-1,2,3,4},{-1,5,6,7}},
     4,{0,256, 28,8,116, 4,16,56,180},
-    
-    60,30,500,   1.,18.,  -1
-  },
 
-  /* 128 x 11 */
+    60,30,500,   1.,18.,  256
+  },
+  /* 4: 128 x 11 */
   {
     4,{0,1,2,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
-    
+
     2,{0,128,  8,33,  4,16,70,  2,6,12,  23,46,90},
-    
-     60,30,500,   1,18.,  -1
+
+     60,30,500,   1,18.,  128
   },
-    
-  /* 128 x 17 */
+  /* 5: 128 x 17 */
   {
     6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
     2,{0,128,  12,46,  4,8,16,  23,33,70,  2,6,10,  14,19,28,  39,58,90},
 
-    60,30,500,    1,18.,  -1 
+    60,30,500,    1,18.,  128
   },
-  
-  /* 1024 x 17 */
+  /* 6: 256 x 4 (low bitrate version) */
   {
-    6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
-    {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
-    2,{0,1024,  93,372,  33,65,130,  186,260,556,  
-       14,46,79,  111,158,220,  312,464,720},
-    
-    60,30,500,    1,18.,  -1 /* lowpass! */
+    1,{0},{4},{2},{0},
+    {{1,2,3,4}},
+    4,{0,256, 66,16,32,140},
+
+    60,30,500,   1.,18.,  256
   },
-  /* 1024 x 27 */
+  /* 7: 1024 x 27 */
   {
     8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
     {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
     2,{0,1024,   93,23,372, 6,46,186,750,  14,33,65, 130,260,556,
        3,10,18,28,  39,55,79,111,  158,220,312,  464,650,850},
-    
-    60,30,500,    3,18.,  -1 /* lowpass */
+
+    60,30,500,    3,18.,  1024
   },
-  /* 2048 x 27 */
+  /* 8: 2048 x 27 */
   {
     8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
     {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
     2,{0,2048,   186,46,744, 12,92,372,1500,  28,66,130, 260,520,1112,
        6,20,36,56,  78,110,158,222,  316,440,624,  928,1300,1700},
-    
-    60,30,500,    3,18.,  -1 /* lowpass */
+
+    60,30,500,    3,18.,  2048
   },
-  /* 512 x 17 */
+  /* 9: 512 x 17 */
   {
     6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
     {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
-    2,{0,512,  46,186,  16,33,65,  93,130,278,  
+    2,{0,512,  46,186,  16,33,65,  93,130,278,
        7,23,39,  55,79,110,  156,232,360},
-    
-    60,30,500,    1,18.,  -1 /* lowpass! */
+
+    60,30,500,    1,18.,  512
   },
 
-};
+  /* 10: X x 0 (LFE floor; edge posts only) */
+  {
+    0,{0}, {0},{0},{-1},
+    {{-1}},
+    2,{0,12},
+    60,30,500,   1.,18.,  10
+  },
 
+};
--- a/sys/src/cmd/audio/libvorbis/modes/psych_11.h
+++ b/sys/src/cmd/audio/libvorbis/modes/psych_11.h
@@ -5,25 +5,25 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 11kHz settings 
- last mod: $Id: psych_11.h,v 1.1 2002/07/10 03:04:22 xiphmont Exp $
+ function: 11kHz settings
+ last mod: $Id: psych_11.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
-static double _psy_lowpass_11[3]={4.5,5.5,30.,};
+static const double _psy_lowpass_11[3]={4.5,5.5,30.,};
 
-static att3 _psy_tone_masteratt_11[3]={
+static const att3 _psy_tone_masteratt_11[3]={
   {{ 30,  25,  12},  0,   0},  /* 0 */
   {{ 30,  25,  12},  0,   0},  /* 0 */
-  {{ 20,   0, -14},  0,  1.}, /* 0 */
+  {{ 20,   0, -14},  0,   0}, /* 0 */
 };
 
-static vp_adjblock _vp_tonemask_adj_11[3]={
+static const vp_adjblock _vp_tonemask_adj_11[3]={
   /* adjust for mode zero */
   /* 63     125     250     500     1     2     4     8    16 */
   {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 2, 0,99,99,99}}, /* 0 */
@@ -32,7 +32,7 @@
 };
 
 
-static noise3 _psy_noisebias_11[3]={
+static const noise3 _psy_noisebias_11[3]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
   {{{-10,-10,-10,-10, -5, -5, -5,  0,  4, 10, 10, 12, 12, 12, 99, 99, 99},
     {-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  4,  5,  5, 10, 99, 99, 99},
@@ -47,5 +47,5 @@
     {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
 };
 
-static double _noise_thresh_11[3]={ .3,.5,.5 };
+static const double _noise_thresh_11[3]={ .3,.5,.5 };
 
--- a/sys/src/cmd/audio/libvorbis/modes/psych_16.h
+++ b/sys/src/cmd/audio/libvorbis/modes/psych_16.h
@@ -5,18 +5,18 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 16kHz settings 
- last mod: $Id: psych_16.h,v 1.1 2002/07/10 03:04:22 xiphmont Exp $
+ function: 16kHz settings
+ last mod: $Id: psych_16.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
 /* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_16[4]={
+static const adj_stereo _psy_stereo_modes_16[4]={
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  */
   {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
    {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
@@ -36,9 +36,9 @@
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
 };
 
-static double _psy_lowpass_16[4]={6.5,8,30.,99.};
+static const double _psy_lowpass_16[4]={6.5,8,30.,99.};
 
-static att3 _psy_tone_masteratt_16[4]={
+static const att3 _psy_tone_masteratt_16[4]={
   {{ 30,  25,  12},  0,   0},  /* 0 */
   {{ 25,  22,  12},  0,   0},  /* 0 */
   {{ 20,  12,   0},  0,   0},  /* 0 */
@@ -45,7 +45,7 @@
   {{ 15,   0, -14},  0,   0}, /* 0 */
 };
 
-static vp_adjblock _vp_tonemask_adj_16[4]={
+static const vp_adjblock _vp_tonemask_adj_16[4]={
   /* adjust for mode zero */
   /* 63     125     250     500       1     2     4     8    16 */
   {{-20,-20,-20,-20,-20,-16,-10,  0,  0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
@@ -55,7 +55,7 @@
 };
 
 
-static noise3 _psy_noisebias_16_short[4]={
+static const noise3 _psy_noisebias_16_short[4]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
   {{{-15,-15,-15,-15,-15,-10,-10,-5,   4, 10, 10, 10, 10, 12, 12, 14, 20},
     {-15,-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  5,  5,  6,  8,  8, 15},
@@ -74,7 +74,7 @@
     {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 };
 
-static noise3 _psy_noisebias_16_impulse[4]={
+static const noise3 _psy_noisebias_16_impulse[4]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
   {{{-15,-15,-15,-15,-15,-10,-10,-5,   4, 10, 10, 10, 10, 12, 12, 14, 20},
     {-15,-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  5,  5,  6,  8,  8, 15},
@@ -93,7 +93,7 @@
     {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 };
 
-static noise3 _psy_noisebias_16[4]={
+static const noise3 _psy_noisebias_16[4]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
   {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  6,  8,  8, 10, 10, 10, 14, 20},
     {-10,-10,-10,-10,-10, -5, -2, -2,  0,  0,  0,  4,  5,  6,  8,  8, 15},
@@ -112,19 +112,22 @@
     {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 };
 
-static double _noise_thresh_16[4]={ .3,.5,.5,.5 };
+static const noiseguard _psy_noiseguards_16[4]={
+  {10,10,-1},
+  {10,10,-1},
+  {20,20,-1},
+  {20,20,-1},
+};
 
-static int _noise_start_16_short[3]={ 256,128,9999 };
-static int _noise_start_16[3]={ 256,256,9999 };
-static int _noise_part_16[4]={ 8,8,8,8 };
+static const double _noise_thresh_16[4]={ .3,.5,.5,.5 };
 
-static int _psy_ath_floater_16[4]={
+static const int _noise_start_16[3]={ 256,256,9999 };
+static const int _noise_part_16[4]={ 8,8,8,8 };
+
+static const int _psy_ath_floater_16[4]={
   -100,-100,-100,-105,
 };
 
-static int _psy_ath_abs_16[4]={
-  -110,-110,-120,-140,
+static const int _psy_ath_abs_16[4]={
+  -130,-130,-130,-140,
 };
-
-
-
--- a/sys/src/cmd/audio/libvorbis/modes/psych_44.h
+++ b/sys/src/cmd/audio/libvorbis/modes/psych_44.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: key psychoacoustic settings for 44.1/48kHz
- last mod: $Id: psych_44.h,v 1.26 2002/07/13 06:12:49 xiphmont Exp $
+ last mod: $Id: psych_44.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -18,34 +18,34 @@
 
 /* preecho trigger settings *****************************************/
 
-static vorbis_info_psy_global _psy_global_44[5]={
+static const vorbis_info_psy_global _psy_global_44[5]={
 
   {8,   /* lines per eighth octave */
-   {20.f,14.f,12.f,12.f,12.f,12.f,12.f}, 
+   {20.f,14.f,12.f,12.f,12.f,12.f,12.f},
    {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
    -6.f,
    {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
   },
   {8,   /* lines per eighth octave */
-   {14.f,10.f,10.f,10.f,10.f,10.f,10.f}, 
+   {14.f,10.f,10.f,10.f,10.f,10.f,10.f},
    {-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
    -6.f,
    {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
   },
   {8,   /* lines per eighth octave */
-   {12.f,10.f,10.f,10.f,10.f,10.f,10.f}, 
+   {12.f,10.f,10.f,10.f,10.f,10.f,10.f},
    {-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
    -6.f,
    {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
   },
   {8,   /* lines per eighth octave */
-   {10.f,8.f,8.f,8.f,8.f,8.f,8.f}, 
+   {10.f,8.f,8.f,8.f,8.f,8.f,8.f},
    {-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
    -6.f,
    {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
   },
   {8,   /* lines per eighth octave */
-   {10.f,6.f,6.f,6.f,6.f,6.f,6.f}, 
+   {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
    {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
    -6.f,
    {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
@@ -53,7 +53,7 @@
 };
 
 /* noise compander lookups * low, mid, high quality ****************/
-static compandblock _psy_compand_44[6]={
+static const compandblock _psy_compand_44[6]={
   /* sub-mode Z short */
   {{
     0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
@@ -62,7 +62,7 @@
     24,25,26,27,28,29,30, 31,     /* 31dB */
     32,33,34,35,36,37,38, 39,     /* 39dB */
   }},
-  /* mode_Z nominal short*/
+  /* mode_Z nominal short */
   {{
      0, 1, 2, 3, 4, 5, 6,  6,     /* 7dB */
      7, 7, 7, 7, 6, 6, 6,  7,     /* 15dB */
@@ -105,102 +105,163 @@
 };
 
 /* tonal masking curve level adjustments *************************/
-static vp_adjblock _vp_tonemask_adj_longblock[11]={
-  /* adjust for mode zero */
-  /* 63     125     250     500     1     2     4     8    16 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 5, 0, 0, 0, 0, 0}}, /* 1 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
-  {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
+
+static const vp_adjblock _vp_tonemask_adj_longblock[12]={
+
+   /* 63     125     250     500       1       2       4       8      16 */
+
+   {{ -3, -8,-13,-15,-10,-10,-10,-10,-10,-10,-10,  0,  0,  0,  0,  0,  0}}, /* -1 */
+
+/* {{-15,-15,-15,-15,-10, -8, -4, -2,  0,  0,  0, 10,  0,  0,  0,  0,  0}},    0 */
+   {{ -4,-10,-14,-16,-15,-14,-13,-12,-12,-12,-11, -1, -1, -1, -1, -1,  0}}, /* 0 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  5,  0,  0,  0,  0,  0}},    1 */
+   {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, -1, -1,  0}}, /* 1 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    2 */
+   {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -6, -3, -1, -1, -1,  0}}, /* 2 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    3 */
+   {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, -1, -1,  0}}, /* 3 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}}, *//* 4 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 4 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    5 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 5 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    6 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2,  0}}, /* 6 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    7 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 7 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    8 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 8 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    9 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 9 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    10 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 10 */
 };
-static vp_adjblock _vp_tonemask_adj_otherblock[11]={
-  /* adjust for mode zero */
-  /* 63     125     250     500       1     2     4     8    16 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 5, 0, 0, 0, 0, 0}}, /* 1 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
-  {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
+
+static const vp_adjblock _vp_tonemask_adj_otherblock[12]={
+   /* 63     125     250     500       1       2       4       8      16 */
+
+   {{ -3, -8,-13,-15,-10,-10, -9, -9, -9, -9, -9,  1,  1,  1,  1,  1,  1}}, /* -1 */
+
+/* {{-20,-20,-20,-20,-14,-12,-10, -8, -4,  0,  0, 10,  0,  0,  0,  0,  0}},    0 */
+   {{ -4,-10,-14,-16,-14,-13,-12,-12,-11,-11,-10,  0,  0,  0,  0,  0,  0}}, /* 0 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  5,  0,  0,  0,  0,  0}},    1 */
+   {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1,  0,  0,  0}}, /* 1 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    2 */
+   {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -5, -2, -1,  0,  0,  0}}, /* 2 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    3 */
+   {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2,  0,  0,  0}}, /* 3 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    4 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 4 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    5 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 5 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    6 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2,  0}}, /* 6 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    7 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 7 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    8 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 8 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    9 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 9 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    10 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 10 */
 };
 
-static noise3 _psy_noisebias_trans_low[2]={
+/* noise bias (transition block) */
+static const noise3 _psy_noisebias_trans[12]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
-  /* 0 */
+  /* -1 */
   {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
-    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  4,  8,  8, 15},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
     {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
-  /* 1 */
-  {{{-15,-15,-15,-15,-15,-10, -5,  0,  2,  2,  6,  6,  6,  8, 10, 12, 15},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2,  0,  0,  0,  2,  4,  10},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4,  -2}}},
-};
-static noise3 _psy_noisebias_long_low[2]={
-    /*63     125     250     500      1k       2k      4k      8k     16k*/
-  /* 0 */
-  {{{-10,-10,-10,-10,-10, -4,  0,  0,  0,  6,  6,  6,  6, 10, 10, 12,  20},
-    {-20,-20,-20,-20,-20,-20,-10, -2,  0,  0,  0,  0,  0,  2,  4,  6,  15},
-    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
-  /* 1 */
-  {{{-10,-10,-10,-10,-10,-10, -8, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
-    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2,  0,  0,  0,  0,  2,  4,  10},
-    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
-};
-
-static noise3 _psy_noisebias_trans[11]={
-  /*  63     125     250     500      1k       2k      4k      8k     16k*/
-  /* 0 */
+  /* 0
   {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2,  0,  0,  2,  4,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4,  0,  0,  0,  0,  2,  4,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4,  -2}}},*/
+  {{{-15,-15,-15,-15,-15,-12, -6, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4,  0,  0,  0,  0,  2,  3,   6},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4,  -2}}},
-  /* 1 */
+  /* 1
   {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  8},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
-  /* 2 */
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  1,   4},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6,  -4}}},
+  /* 2
   {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  6},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
-  /* 3 */
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}}, */
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -2, -1,  0,  3},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -7, -4}}},
+  /* 3
   {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2,  0,  2},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
-  /* 4 */
+  /* 4
   {{{-20,-20,-20,-20,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  5},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-20,-20,-20,-20,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1,  1},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
-  /* 5 */
+  /* 5
   {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
     {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1,  2},
+    {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}}, */
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1,  0},
     {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
-  /* 6 */
+  /* 6
   {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
     {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2,  1},
-    {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},
-  /* 7 */
-  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4, 7},
-    {-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4,  0},
+    {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2,  0},
     {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
-  /* 8 */
+  /* 7
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4,  0},
+    {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},*/
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
+    {-34,-34,-34,-34,-30,-26,-26,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
+  /* 8
   {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2,  0,  0,  0,  1,  2,  3,  7},
     {-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
-    {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
-  /* 9 */
+    {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
+  {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2,  0,  0,  0,  1,  2,  3,  7},
+    {-36,-36,-36,-36,-30,-30,-30,-24,-20,-16,-16,-16,-16,-14,-12,-10, -7},
+    {-36,-36,-36,-36,-34,-30,-28,-26,-24,-30,-30,-30,-30,-30,-30,-24,-20}}},
+  /* 9
   {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
     {-36,-36,-36,-36,-34,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
-    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
+  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+    {-38,-38,-38,-38,-36,-34,-34,-30,-24,-20,-20,-20,-20,-18,-16,-12,-10},
+    {-40,-40,-40,-40,-40,-40,-40,-38,-35,-35,-35,-35,-35,-35,-35,-35,-30}}},
   /* 10 */
   {{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
     {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
@@ -207,36 +268,63 @@
     {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
 };
 
-static noise3 _psy_noisebias_long[11]={
-    /*63     125     250     500      1k       2k      4k      8k     16k*/
+/*  noise bias (long block) */
+static const noise3 _psy_noisebias_long[12]={
+  /*63     125     250     500      1k       2k      4k      8k     16k*/
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  0,  6,  6,  6,  6, 10, 10, 12,  20},
+    {-20,-20,-20,-20,-20,-20,-10, -2,  0,  0,  0,  0,  0,  2,  4,  6,  15},
+    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
+
   /* 0 */
+  /*  {{{-10,-10,-10,-10,-10,-10, -8,  2,  2,  2,  4,  4,  5,  5,  5,  8,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14, -6,  0,  0,  0,  0,  0,  2,  4,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
   {{{-10,-10,-10,-10,-10,-10, -8,  2,  2,  2,  4,  4,  5,  5,  5,  8,  10},
-    {-20,-20,-20,-20,-20,-20,-10, -6, -4, -2, -2, -2,  0,  0,  2,  4,  10},
-    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
+    {-20,-20,-20,-20,-20,-20,-20,-14, -6,  0,  0,  0,  0,  0,  2,  3,  6},
+    {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},
   /* 1 */
+  /*  {{{-10,-10,-10,-10,-10,-10, -8, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  8},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
   {{{-10,-10,-10,-10,-10,-10, -8, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  8},
-    {-20,-20,-20,-20,-20,-20,-20,-14, -8, -8, -8, -8, -8, -6, -6, -6, -4}}},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  1,  4},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
   /* 2 */
+  /*  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  6},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
   {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  6},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -2, -1,  0,  3},
     {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
   /* 3 */
+  /*  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  6},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
   {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  6},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2,  0,  2},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -5}}},
   /* 4 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  5},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
   {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  5},
-    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1,  1},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -7}}},
   /* 5 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1,  2},
+      {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},*/
   {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
-    {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1,  2},
-    {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
+    {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1,  0},
+    {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -8}}},
   /* 6 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2,  1},
+      {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
   {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
-    {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2,  1},
-    {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},
+    {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2,  0},
+    {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12,-10}}},
   /* 7 */
   {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
     {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4,  0},
@@ -255,11 +343,20 @@
     {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
 };
 
-static noise3 _psy_noisebias_impulse[11]={
+/* noise bias (impulse block) */
+static const noise3 _psy_noisebias_impulse[12]={
   /*  63     125     250     500      1k      2k      4k      8k     16k*/
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+
   /* 0 */
+  /*  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  4,  8,  8,  8, 10, 12, 14, 20},
+      {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2,  0,  0,  0,  0,  2,  4,  10},
+      {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
   {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  4,  8,  8,  8, 10, 12, 14, 20},
-    {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2,  0,  0,  0,  0,  2,  4,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2,  0,  0,  0,  0,  2,  3,  6},
     {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
   /* 1 */
   {{{-12,-12,-12,-12,-12, -8, -6, -4,  0,  4,  4,  4,  4, 10, 12, 14, 20},
@@ -281,21 +378,33 @@
   {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
     {-32,-32,-32,-32,-28,-24,-22,-16,-10, -6, -8, -8, -6, -6, -6, -4, -2},
     {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
-  /* 6 */
+  /* 6
   {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
-    {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
-    {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},
+      {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
+      {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},*/
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
+    {-34,-34,-34,-34,-30,-30,-30,-24,-16,-16,-16,-16,-16,-16,-14,-14,-12},
+    {-36,-36,-36,-36,-36,-34,-28,-24,-20,-20,-20,-20,-20,-20,-20,-18,-16}}},
   /* 7 */
+  /*  {{{-22,-22,-22,-22,-22,-20,-14,-10, -6,  0,  0,  0,  0,  4,  4,  6, 11},
+      {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
+      {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},*/
   {{{-22,-22,-22,-22,-22,-20,-14,-10, -6,  0,  0,  0,  0,  4,  4,  6, 11},
-    {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
-    {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},
+    {-34,-34,-34,-34,-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-24,-22},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
   /* 8 */
+  /*  {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1,  3,  3,  5, 10},
+      {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
+      {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
   {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1,  3,  3,  5, 10},
-    {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
-    {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
+    {-34,-34,-34,-34,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-24},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
   /* 9 */
+  /*  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+      {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
+      {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
   {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
-    {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
+    {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26},
     {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
   /* 10 */
   {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
@@ -303,9 +412,15 @@
     {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
 };
 
-
-static noise3 _psy_noisebias_padding[11]={
+/* noise bias (padding block) */
+static const noise3 _psy_noisebias_padding[12]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
+
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+
   /* 0 */
   {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2,  2,  3,  6,  6,  8, 10},
@@ -315,8 +430,11 @@
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4,  0,  0,  0,  2,  2,  4,  8},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2,  0}}},
   /* 2 */
+  /*  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  8, 10, 10, 16},
+      {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4,  0,  0,  0,  2,  2,  4,  8},
+      {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},*/
   {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  8, 10, 10, 16},
-    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4,  0,  0,  0,  2,  2,  4,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1,  0,  0,  2,  6},
     {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
   /* 3 */
   {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  6,  8,  8, 14},
@@ -352,46 +470,47 @@
     {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
 };
 
-static noiseguard _psy_noiseguards_44[4]={
-  {4,4,15},
-  {4,4,15},
+
+static const noiseguard _psy_noiseguards_44[4]={
+  {3,3,15},
+  {3,3,15},
   {10,10,100},
   {10,10,100},
 };
 
-static int _psy_tone_suppress[11]={
-  -20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
+static const int _psy_tone_suppress[12]={
+  -20,-20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
 };
-
-static int _psy_tone_0dB[11]={
-  95,95,95,95,95,105,105,105,105,105,105,
+static const int _psy_tone_0dB[12]={
+  90,90,95,95,95,95,105,105,105,105,105,105,
 };
-
-static int _psy_noise_suppress[11]={
- -24,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
+static const int _psy_noise_suppress[12]={
+  -20,-20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
 };
 
-static vorbis_info_psy _psy_info_template={
+static const vorbis_info_psy _psy_info_template={
+  /* blockflag */
   -1,
-  -110.,-140.,
+  /* ath_adjatt, ath_maxatt */
+  -140.,-140.,
   /* tonemask att boost/decay,suppr,curves */
-  {0.f,0.f,0.f},     0.,0.,    -40.f, {0.},  
-  
+  {0.f,0.f,0.f},     0.,0.,    -40.f, {0.},
+
   /*noisemaskp,supp, low/high window, low/hi guard, minimum */
-  1,          -0.f,         .5f, .5f,         0,0,0,
+  1,          -0.f,           .5f, .5f,         0,0,0,
+  /* noiseoffset*3, noisecompand, max_curve_dB */
   {{-1},{-1},{-1}},{-1},105.f,
-
-  0,0,-1,-1,0.,
+  /* noise normalization - noise_p, start, partition, thresh. */
+  0,-1,-1,0.,
 };
 
 /* ath ****************/
 
-static int _psy_ath_floater[11]={
-  -100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
+static const int _psy_ath_floater[12]={
+  -100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
 };
-
-static int _psy_ath_abs[11]={
-  -110,-110,-120,-130,-140,-140,-140,-140,-140,-140,-150,
+static const int _psy_ath_abs[12]={
+  -130,-130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150,
 };
 
 /* stereo setup.  These don't map directly to quality level, there's
@@ -403,34 +522,31 @@
 /* various stereo possibilities */
 
 /* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_44_low[2]={
-  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         0  */
+static const adj_stereo _psy_stereo_modes_44[12]={
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         -1  */
   {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  2,  1,  0,  0,  0,  0},
    {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  5,  4,  3},
    {  1,  2,  3,  4,  4,  4,  4,  4,  4,  5,  6,  7,  8,  8,  8},
    { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
-  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         1  */
-  {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  2,  1,  0,  0,  0,  0},
-   {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  5,  4,  3},
-   {  1,  2,  3,  4,  5,  5,  6,  6,  6,  6,  6,  7,  8,  8,  8},
-   { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
-};
 
-static adj_stereo _psy_stereo_modes_44[11]={
-  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         0  */
-  {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  2,  1,  0,  0,  0,  0},
-   {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  5,  4,  3},
-   {  1,  2,  3,  4,  5,  5,  6,  6,  6,  6,  6,  7,  8,  8,  8},
+/*    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         0  */
+  {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  1,  0,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3},
+   {  1,  2,  3,  4,  4,  5,  6,  6,  6,  6,  6,  8,  8,  8,  8},
    { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
+
+
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         1  */
   {{  3,  3,  3,  3,  3,  3,  3,  3,  2,  1,  0,  0,  0,  0,  0},
    {  8,  8,  8,  8,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3},
    {  1,  2,  3,  4,  4,  5,  6,  6,  6,  6,  6,  8,  8,  8,  8},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+
+
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         2  */
-  {{  3,  3,  3,  3,  3,  3,  2,  2,  2,  1,  0,  0,  0,  0,  0},
-   {  8,  8,  8,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3,  2,  1},
-   {  3,  4,  4,  4,  5,  6,  6,  6,  6,  6,  6,  8,  8,  8,  8},
+  {{  3,  3,  3,  3,  3,  3,  3,  2,  1,  1,  0,  0,  0,  0,  0},
+   {  8,  8,  6,  6,  5,  5,  4,  4,  4,  4,  4,  4,  3,  2,  1},
+   {  3,  4,  4,  5,  5,  6,  6,  6,  6,  6,  6,  8,  8,  8,  8},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         3  */
   {{  2,  2,  2,  2,  2,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0},
@@ -445,22 +561,22 @@
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         5  */
   {{  2,  2,  2,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
    {  3,  3,  3,  3,  3,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0},
-   {  6,  6,  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+   {  6,  7,  8,  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         6  */
   {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
    {  3,  3,  3,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0},
-   {  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+   {  8,  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         7  */
   {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
    {  3,  3,  3,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
-   {  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+   {  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         8  */
   {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
    {  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
-   {  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+   {  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         9  */
   {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
@@ -475,15 +591,13 @@
 };
 
 /* tone master attenuation by base quality mode and bitrate tweak */
-
-static att3 _psy_tone_masteratt_44_low[2]={
-  {{ 34,  20,   8},  0, 1.25}, /* 0 */
-  {{ 34,  20,   8}, -2, 1.25}, /* 1 */
-};
-static att3 _psy_tone_masteratt_44[11]={
+static const att3 _psy_tone_masteratt_44[12]={
+  {{ 35,  21,   9},  0,    0}, /* -1 */
   {{ 30,  20,   8}, -2, 1.25}, /* 0 */
-  {{ 25,  14,   4},  0,    0}, /* 1 */
-  {{ 20,  10,  -2},  0,    0}, /* 2 */
+  /*  {{ 25,  14,   4},  0,    0}, *//* 1 */
+  {{ 25,  12,   2},  0,    0}, /* 1 */
+  /*  {{ 20,  10,  -2},  0,    0}, *//* 2 */
+  {{ 20,   9,  -3},  0,    0}, /* 2 */
   {{ 20,   9,  -4},  0,    0}, /* 3 */
   {{ 20,   9,  -4},  0,    0}, /* 4 */
   {{ 20,   6,  -6},  0,    0}, /* 5 */
@@ -495,38 +609,34 @@
 };
 
 /* lowpass by mode **************/
-static double _psy_lowpass_44_low[2]={
-  15.1,15.1,
+static const double _psy_lowpass_44[12]={
+  /*  15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999. */
+  13.9,15.1,15.8,16.5,17.2,18.9,20.1,48.,999.,999.,999.,999.
 };
-static double _psy_lowpass_44[11]={
-  15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
-};
 
 /* noise normalization **********/
 
-static int _noise_start_short_44[10]={
-  16,16,16,16,32,32,9999,9999,9999,9999
+static const int _noise_start_short_44[11]={
+  /*  16,16,16,16,32,32,9999,9999,9999,9999 */
+  32,16,16,16,32,9999,9999,9999,9999,9999,9999
 };
-static int _noise_start_long_44[10]={
-  128,128,128,256,512,512,9999,9999,9999,9999
+static const int _noise_start_long_44[11]={
+  /*  128,128,128,256,512,512,9999,9999,9999,9999 */
+  256,128,128,256,512,9999,9999,9999,9999,9999,9999
 };
-static int _noise_part_short_44[10]={
-  8,8,8,8,8,8,8,8,8,8
+
+static const int _noise_part_short_44[11]={
+    8,8,8,8,8,8,8,8,8,8,8
 };
-static int _noise_part_long_44[10]={
-  32,32,32,32,32,32,32,32,32,32
+static const int _noise_part_long_44[11]={
+    32,32,32,32,32,32,32,32,32,32,32
 };
-static double _noise_thresh_44[10]={
-  .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999.,
-};
-static double _noise_thresh_44_2[2]={
-  .5,.5,
-};
 
-
-static int _noise_start_short_44_low[2]={
-  32,32
+static const double _noise_thresh_44[11]={
+  /*  .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999., */
+   .2,.2,.2,.4,.6,9999.,9999.,9999.,9999.,9999.,9999.,
 };
-static int _noise_start_long_44_low[2]={
-  256,256
+
+static const double _noise_thresh_5only[2]={
+ .5,.5,
 };
--- a/sys/src/cmd/audio/libvorbis/modes/psych_8.h
+++ b/sys/src/cmd/audio/libvorbis/modes/psych_8.h
@@ -5,23 +5,23 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 8kHz psychoacoustic settings 
- last mod: $Id: psych_8.h,v 1.2 2002/07/11 08:57:29 xiphmont Exp $
+ function: 8kHz psychoacoustic settings
+ last mod: $Id: psych_8.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
-static att3 _psy_tone_masteratt_8[3]={
+static const att3 _psy_tone_masteratt_8[3]={
   {{ 32,  25,  12},  0,   0},  /* 0 */
   {{ 30,  25,  12},  0,   0},  /* 0 */
   {{ 20,   0, -14},  0,   0}, /* 0 */
 };
 
-static vp_adjblock _vp_tonemask_adj_8[3]={
+static const vp_adjblock _vp_tonemask_adj_8[3]={
   /* adjust for mode zero */
   /* 63     125     250     500     1     2     4     8    16 */
   {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
@@ -30,7 +30,7 @@
 };
 
 
-static noise3 _psy_noisebias_8[3]={
+static const noise3 _psy_noisebias_8[3]={
   /*  63     125     250     500      1k       2k      4k      8k     16k*/
   {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  8,  8,  8, 10, 10, 99, 99, 99},
     {-10,-10,-10,-10, -5, -5, -5,  0,  0,  4,  4,  4,  4,  4, 99, 99, 99},
@@ -46,7 +46,7 @@
 };
 
 /* stereo mode by base quality level */
-static adj_stereo _psy_stereo_modes_8[3]={
+static const adj_stereo _psy_stereo_modes_8[3]={
   /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  */
   {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
    {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
@@ -62,12 +62,12 @@
    { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
 };
 
-static noiseguard _psy_noiseguards_8[2]={
+static const noiseguard _psy_noiseguards_8[2]={
   {10,10,-1},
   {10,10,-1},
 };
 
-static compandblock _psy_compand_8[2]={
+static const compandblock _psy_compand_8[2]={
   {{
      0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
      8, 8, 9, 9,10,10,11, 11,     /* 15dB */
@@ -84,19 +84,18 @@
   }},
 };
 
-static double _psy_lowpass_8[3]={3.,4.,4.};
-static int _noise_start_8[2]={
+static const double _psy_lowpass_8[3]={3.,4.,4.};
+static const int _noise_start_8[2]={
   64,64,
 };
-static int _noise_part_8[2]={
+static const int _noise_part_8[2]={
   8,8,
 };
 
-static int _psy_ath_floater_8[3]={
+static const int _psy_ath_floater_8[3]={
   -100,-100,-105,
 };
 
-static int _psy_ath_abs_8[3]={
-  -110,-110,-140,
+static const int _psy_ath_abs_8[3]={
+  -130,-130,-140,
 };
-
--- a/sys/src/cmd/audio/libvorbis/modes/residue_16.h
+++ b/sys/src/cmd/audio/libvorbis/modes/residue_16.h
@@ -1,27 +1,27 @@
 /********************************************************************
  *                                                                  *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * This FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel residue templates 16/22kHz
- last mod: $Id: residue_16.h,v 1.3 2002/07/11 10:27:55 xiphmont Exp $
+ last mod: $Id: residue_16.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
 /***** residue backends *********************************************/
 
-static static_bookblock _resbook_16s_0={
+static const static_bookblock _resbook_16s_0={
   {
     {0},
     {0,0,&_16c0_s_p1_0},
-    {0,0,&_16c0_s_p2_0},
+    {0},
     {0,0,&_16c0_s_p3_0},
     {0,0,&_16c0_s_p4_0},
     {0,0,&_16c0_s_p5_0},
@@ -31,11 +31,11 @@
     {&_16c0_s_p9_0,&_16c0_s_p9_1,&_16c0_s_p9_2}
    }
 };
-static static_bookblock _resbook_16s_1={
+static const static_bookblock _resbook_16s_1={
   {
     {0},
     {0,0,&_16c1_s_p1_0},
-    {0,0,&_16c1_s_p2_0},
+    {0},
     {0,0,&_16c1_s_p3_0},
     {0,0,&_16c1_s_p4_0},
     {0,0,&_16c1_s_p5_0},
@@ -45,7 +45,7 @@
     {&_16c1_s_p9_0,&_16c1_s_p9_1,&_16c1_s_p9_2}
    }
 };
-static static_bookblock _resbook_16s_2={
+static const static_bookblock _resbook_16s_2={
   {
     {0},
     {0,0,&_16c2_s_p1_0},
@@ -60,37 +60,37 @@
    }
 };
 
-static vorbis_residue_template _res_16s_0[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_16s_0[]={
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__16c0_s_single,&_huff_book__16c0_s_single,
    &_resbook_16s_0,&_resbook_16s_0},
 };
-static vorbis_residue_template _res_16s_1[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_16s_1[]={
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__16c1_s_short,&_huff_book__16c1_s_short,
    &_resbook_16s_1,&_resbook_16s_1},
-  
-  {2,0,  &_residue_44_mid,
+
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__16c1_s_long,&_huff_book__16c1_s_long,
    &_resbook_16s_1,&_resbook_16s_1}
 };
-static vorbis_residue_template _res_16s_2[]={
-  {2,0,  &_residue_44_high,
+static const vorbis_residue_template _res_16s_2[]={
+  {2,0,32,  &_residue_44_high,
    &_huff_book__16c2_s_short,&_huff_book__16c2_s_short,
    &_resbook_16s_2,&_resbook_16s_2},
-  
-  {2,0,  &_residue_44_high,
+
+  {2,0,32,  &_residue_44_high,
    &_huff_book__16c2_s_long,&_huff_book__16c2_s_long,
    &_resbook_16s_2,&_resbook_16s_2}
 };
 
-static vorbis_mapping_template _mapres_template_16_stereo[3]={
+static const vorbis_mapping_template _mapres_template_16_stereo[3]={
   { _map_nominal, _res_16s_0 }, /* 0 */
   { _map_nominal, _res_16s_1 }, /* 1 */
   { _map_nominal, _res_16s_2 }, /* 2 */
 };
 
-static static_bookblock _resbook_16u_0={
+static const static_bookblock _resbook_16u_0={
   {
     {0},
     {0,0,&_16u0__p1_0},
@@ -102,7 +102,7 @@
     {&_16u0__p7_0,&_16u0__p7_1,&_16u0__p7_2}
    }
 };
-static static_bookblock _resbook_16u_1={
+static const static_bookblock _resbook_16u_1={
   {
     {0},
     {0,0,&_16u1__p1_0},
@@ -116,7 +116,7 @@
     {&_16u1__p9_0,&_16u1__p9_1,&_16u1__p9_2}
    }
 };
-static static_bookblock _resbook_16u_2={
+static const static_bookblock _resbook_16u_2={
   {
     {0},
     {0,0,&_16u2_p1_0},
@@ -131,32 +131,32 @@
    }
 };
 
-static vorbis_residue_template _res_16u_0[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_16u_0[]={
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__16u0__single,&_huff_book__16u0__single,
    &_resbook_16u_0,&_resbook_16u_0},
 };
-static vorbis_residue_template _res_16u_1[]={
-  {1,0,  &_residue_44_mid_un,
+static const vorbis_residue_template _res_16u_1[]={
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__16u1__short,&_huff_book__16u1__short,
    &_resbook_16u_1,&_resbook_16u_1},
-  
-  {1,0,  &_residue_44_mid_un,
+
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__16u1__long,&_huff_book__16u1__long,
    &_resbook_16u_1,&_resbook_16u_1}
 };
-static vorbis_residue_template _res_16u_2[]={
-  {1,0,  &_residue_44_hi_un,
+static const vorbis_residue_template _res_16u_2[]={
+  {1,0,32,  &_residue_44_hi_un,
    &_huff_book__16u2__short,&_huff_book__16u2__short,
    &_resbook_16u_2,&_resbook_16u_2},
-  
-  {1,0,  &_residue_44_hi_un,
+
+  {1,0,32,  &_residue_44_hi_un,
    &_huff_book__16u2__long,&_huff_book__16u2__long,
    &_resbook_16u_2,&_resbook_16u_2}
 };
 
 
-static vorbis_mapping_template _mapres_template_16_uncoupled[3]={
+static const vorbis_mapping_template _mapres_template_16_uncoupled[3]={
   { _map_nominal_u, _res_16u_0 }, /* 0 */
   { _map_nominal_u, _res_16u_1 }, /* 1 */
   { _map_nominal_u, _res_16u_2 }, /* 2 */
--- a/sys/src/cmd/audio/libvorbis/modes/residue_44.h
+++ b/sys/src/cmd/audio/libvorbis/modes/residue_44.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel residue templates for 32/44.1/48kHz
- last mod: $Id: residue_44.h,v 1.16 2002/07/11 06:41:04 xiphmont Exp $
+ last mod: $Id: residue_44.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -21,58 +21,86 @@
 
 /***** residue backends *********************************************/
 
-static vorbis_info_residue0 _residue_44_mid={
-  0,-1, -1, 10,-1,
-  /*  0     1     2     3     4     5     6     7     8  */
+static const vorbis_info_residue0 _residue_44_low={
+  0,-1, -1, 9,-1,-1,
+  /* 0   1   2   3   4   5   6   7  */
   {0},
   {-1},
-  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5,  8.5,  16.5, 32.5},
-  {  .5,   .5, 999.,   .5,  999., 4.5,  8.5,  16.5, 32.5},
+  {  0,  1,  2,  2,  4,  8, 16, 32},
+  {  0,  0,  0,999,  4,  8, 16, 32},
 };
 
-static vorbis_info_residue0 _residue_44_high={
-  0,-1, -1, 10,-1,
-  /*  0     1     2     3     4     5     6     7     8  */
+static const vorbis_info_residue0 _residue_44_mid={
+  0,-1, -1, 10,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
   {0},
   {-1},
-  {  .5,  1.5,  2.5,  4.5,  8.5, 16.5, 32.5, 71.5,157.5},
-  {  .5,  1.5,  2.5,  3.5,  4.5,  8.5, 16.5, 71.5,157.5},
+  {  0,  1,  1,  2,  2,  4,  8, 16, 32},
+  {  0,  0,999,  0,999,  4,  8, 16, 32},
 };
 
-static static_bookblock _resbook_44s_0={
+static const vorbis_info_residue0 _residue_44_high={
+  0,-1, -1, 10,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
+  {0},
+  {-1},
+  {  0,  1,  2,  4,  8, 16, 32, 71,157},
+  {  0,  1,  2,  3,  4,  8, 16, 71,157},
+};
+
+static const static_bookblock _resbook_44s_n1={
   {
-    {0},{0,0,&_44c0_s_p1_0},{0,0,&_44c0_s_p2_0},{0,0,&_44c0_s_p3_0},
-    {0,0,&_44c0_s_p4_0},{0,0,&_44c0_s_p5_0},{0,0,&_44c0_s_p6_0},
-    {&_44c0_s_p7_0,&_44c0_s_p7_1},{&_44c0_s_p8_0,&_44c0_s_p8_1},
-    {&_44c0_s_p9_0,&_44c0_s_p9_1,&_44c0_s_p9_2}
+    {0},{0,0,&_44cn1_s_p1_0},{0,0,&_44cn1_s_p2_0},
+    {0,0,&_44cn1_s_p3_0},{0,0,&_44cn1_s_p4_0},{0,0,&_44cn1_s_p5_0},
+    {&_44cn1_s_p6_0,&_44cn1_s_p6_1},{&_44cn1_s_p7_0,&_44cn1_s_p7_1},
+    {&_44cn1_s_p8_0,&_44cn1_s_p8_1,&_44cn1_s_p8_2}
    }
 };
-static static_bookblock _resbook_44sm_0={
+static const static_bookblock _resbook_44sm_n1={
   {
-    {0},{0,0,&_44c0_sm_p1_0},{0,0,&_44c0_sm_p2_0},{0,0,&_44c0_sm_p3_0},
-    {0,0,&_44c0_sm_p4_0},{0,0,&_44c0_sm_p5_0},{0,0,&_44c0_sm_p6_0},
-    {&_44c0_sm_p7_0,&_44c0_sm_p7_1},{&_44c0_sm_p8_0,&_44c0_sm_p8_1},
-    {&_44c0_sm_p9_0,&_44c0_sm_p9_1,&_44c0_sm_p9_2}
+    {0},{0,0,&_44cn1_sm_p1_0},{0,0,&_44cn1_sm_p2_0},
+    {0,0,&_44cn1_sm_p3_0},{0,0,&_44cn1_sm_p4_0},{0,0,&_44cn1_sm_p5_0},
+    {&_44cn1_sm_p6_0,&_44cn1_sm_p6_1},{&_44cn1_sm_p7_0,&_44cn1_sm_p7_1},
+    {&_44cn1_sm_p8_0,&_44cn1_sm_p8_1,&_44cn1_sm_p8_2}
    }
 };
-static static_bookblock _resbook_44s_1={
+
+static const static_bookblock _resbook_44s_0={
   {
-    {0},{0,0,&_44c1_s_p1_0},{0,0,&_44c1_s_p2_0},{0,0,&_44c1_s_p3_0},
-    {0,0,&_44c1_s_p4_0},{0,0,&_44c1_s_p5_0},{0,0,&_44c1_s_p6_0},
-    {&_44c1_s_p7_0,&_44c1_s_p7_1},{&_44c1_s_p8_0,&_44c1_s_p8_1},
-    {&_44c1_s_p9_0,&_44c1_s_p9_1,&_44c1_s_p9_2}
+    {0},{0,0,&_44c0_s_p1_0},{0,0,&_44c0_s_p2_0},
+    {0,0,&_44c0_s_p3_0},{0,0,&_44c0_s_p4_0},{0,0,&_44c0_s_p5_0},
+    {&_44c0_s_p6_0,&_44c0_s_p6_1},{&_44c0_s_p7_0,&_44c0_s_p7_1},
+    {&_44c0_s_p8_0,&_44c0_s_p8_1,&_44c0_s_p8_2}
    }
 };
-static static_bookblock _resbook_44sm_1={
+static const static_bookblock _resbook_44sm_0={
   {
-    {0},{0,0,&_44c1_sm_p1_0},{0,0,&_44c1_sm_p2_0},{0,0,&_44c1_sm_p3_0},
-    {0,0,&_44c1_sm_p4_0},{0,0,&_44c1_sm_p5_0},{0,0,&_44c1_sm_p6_0},
-    {&_44c1_sm_p7_0,&_44c1_sm_p7_1},{&_44c1_sm_p8_0,&_44c1_sm_p8_1},
-    {&_44c1_sm_p9_0,&_44c1_sm_p9_1,&_44c1_sm_p9_2}
+    {0},{0,0,&_44c0_sm_p1_0},{0,0,&_44c0_sm_p2_0},
+    {0,0,&_44c0_sm_p3_0},{0,0,&_44c0_sm_p4_0},{0,0,&_44c0_sm_p5_0},
+    {&_44c0_sm_p6_0,&_44c0_sm_p6_1},{&_44c0_sm_p7_0,&_44c0_sm_p7_1},
+    {&_44c0_sm_p8_0,&_44c0_sm_p8_1,&_44c0_sm_p8_2}
    }
 };
-static static_bookblock _resbook_44s_2={
+
+static const static_bookblock _resbook_44s_1={
   {
+    {0},{0,0,&_44c1_s_p1_0},{0,0,&_44c1_s_p2_0},
+    {0,0,&_44c1_s_p3_0},{0,0,&_44c1_s_p4_0},{0,0,&_44c1_s_p5_0},
+    {&_44c1_s_p6_0,&_44c1_s_p6_1},{&_44c1_s_p7_0,&_44c1_s_p7_1},
+    {&_44c1_s_p8_0,&_44c1_s_p8_1,&_44c1_s_p8_2}
+   }
+};
+static const static_bookblock _resbook_44sm_1={
+  {
+    {0},{0,0,&_44c1_sm_p1_0},{0,0,&_44c1_sm_p2_0},
+    {0,0,&_44c1_sm_p3_0},{0,0,&_44c1_sm_p4_0},{0,0,&_44c1_sm_p5_0},
+    {&_44c1_sm_p6_0,&_44c1_sm_p6_1},{&_44c1_sm_p7_0,&_44c1_sm_p7_1},
+    {&_44c1_sm_p8_0,&_44c1_sm_p8_1,&_44c1_sm_p8_2}
+   }
+};
+
+static const static_bookblock _resbook_44s_2={
+  {
     {0},{0,0,&_44c2_s_p1_0},{0,0,&_44c2_s_p2_0},{0,0,&_44c2_s_p3_0},
     {0,0,&_44c2_s_p4_0},{0,0,&_44c2_s_p5_0},{0,0,&_44c2_s_p6_0},
     {&_44c2_s_p7_0,&_44c2_s_p7_1},{&_44c2_s_p8_0,&_44c2_s_p8_1},
@@ -79,7 +107,7 @@
     {&_44c2_s_p9_0,&_44c2_s_p9_1,&_44c2_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_3={
+static const static_bookblock _resbook_44s_3={
   {
     {0},{0,0,&_44c3_s_p1_0},{0,0,&_44c3_s_p2_0},{0,0,&_44c3_s_p3_0},
     {0,0,&_44c3_s_p4_0},{0,0,&_44c3_s_p5_0},{0,0,&_44c3_s_p6_0},
@@ -87,7 +115,7 @@
     {&_44c3_s_p9_0,&_44c3_s_p9_1,&_44c3_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_4={
+static const static_bookblock _resbook_44s_4={
   {
     {0},{0,0,&_44c4_s_p1_0},{0,0,&_44c4_s_p2_0},{0,0,&_44c4_s_p3_0},
     {0,0,&_44c4_s_p4_0},{0,0,&_44c4_s_p5_0},{0,0,&_44c4_s_p6_0},
@@ -95,7 +123,7 @@
     {&_44c4_s_p9_0,&_44c4_s_p9_1,&_44c4_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_5={
+static const static_bookblock _resbook_44s_5={
   {
     {0},{0,0,&_44c5_s_p1_0},{0,0,&_44c5_s_p2_0},{0,0,&_44c5_s_p3_0},
     {0,0,&_44c5_s_p4_0},{0,0,&_44c5_s_p5_0},{0,0,&_44c5_s_p6_0},
@@ -103,7 +131,7 @@
     {&_44c5_s_p9_0,&_44c5_s_p9_1,&_44c5_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_6={
+static const static_bookblock _resbook_44s_6={
   {
     {0},{0,0,&_44c6_s_p1_0},{0,0,&_44c6_s_p2_0},{0,0,&_44c6_s_p3_0},
     {0,0,&_44c6_s_p4_0},
@@ -114,7 +142,7 @@
     {&_44c6_s_p9_0,&_44c6_s_p9_1,&_44c6_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_7={
+static const static_bookblock _resbook_44s_7={
   {
     {0},{0,0,&_44c7_s_p1_0},{0,0,&_44c7_s_p2_0},{0,0,&_44c7_s_p3_0},
     {0,0,&_44c7_s_p4_0},
@@ -125,7 +153,7 @@
     {&_44c7_s_p9_0,&_44c7_s_p9_1,&_44c7_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_8={
+static const static_bookblock _resbook_44s_8={
   {
     {0},{0,0,&_44c8_s_p1_0},{0,0,&_44c8_s_p2_0},{0,0,&_44c8_s_p3_0},
     {0,0,&_44c8_s_p4_0},
@@ -136,7 +164,7 @@
     {&_44c8_s_p9_0,&_44c8_s_p9_1,&_44c8_s_p9_2}
    }
 };
-static static_bookblock _resbook_44s_9={
+static const static_bookblock _resbook_44s_9={
   {
     {0},{0,0,&_44c9_s_p1_0},{0,0,&_44c9_s_p2_0},{0,0,&_44c9_s_p3_0},
     {0,0,&_44c9_s_p4_0},
@@ -148,99 +176,109 @@
    }
 };
 
+static const vorbis_residue_template _res_44s_n1[]={
+  {2,0,32,  &_residue_44_low,
+   &_huff_book__44cn1_s_short,&_huff_book__44cn1_sm_short,
+   &_resbook_44s_n1,&_resbook_44sm_n1},
 
-static vorbis_residue_template _res_44s_0[]={
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_low,
+   &_huff_book__44cn1_s_long,&_huff_book__44cn1_sm_long,
+   &_resbook_44s_n1,&_resbook_44sm_n1}
+};
+static const vorbis_residue_template _res_44s_0[]={
+  {2,0,16,  &_residue_44_low,
    &_huff_book__44c0_s_short,&_huff_book__44c0_sm_short,
    &_resbook_44s_0,&_resbook_44sm_0},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_low,
    &_huff_book__44c0_s_long,&_huff_book__44c0_sm_long,
    &_resbook_44s_0,&_resbook_44sm_0}
 };
-static vorbis_residue_template _res_44s_1[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_44s_1[]={
+  {2,0,16,  &_residue_44_low,
    &_huff_book__44c1_s_short,&_huff_book__44c1_sm_short,
    &_resbook_44s_1,&_resbook_44sm_1},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_low,
    &_huff_book__44c1_s_long,&_huff_book__44c1_sm_long,
    &_resbook_44s_1,&_resbook_44sm_1}
 };
-static vorbis_residue_template _res_44s_2[]={
-  {2,0,  &_residue_44_mid,
+
+static const vorbis_residue_template _res_44s_2[]={
+  {2,0,16,  &_residue_44_mid,
    &_huff_book__44c2_s_short,&_huff_book__44c2_s_short,
    &_resbook_44s_2,&_resbook_44s_2},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__44c2_s_long,&_huff_book__44c2_s_long,
    &_resbook_44s_2,&_resbook_44s_2}
 };
-static vorbis_residue_template _res_44s_3[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_44s_3[]={
+  {2,0,16,  &_residue_44_mid,
    &_huff_book__44c3_s_short,&_huff_book__44c3_s_short,
    &_resbook_44s_3,&_resbook_44s_3},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__44c3_s_long,&_huff_book__44c3_s_long,
    &_resbook_44s_3,&_resbook_44s_3}
 };
-static vorbis_residue_template _res_44s_4[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_44s_4[]={
+  {2,0,16,  &_residue_44_mid,
    &_huff_book__44c4_s_short,&_huff_book__44c4_s_short,
    &_resbook_44s_4,&_resbook_44s_4},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__44c4_s_long,&_huff_book__44c4_s_long,
    &_resbook_44s_4,&_resbook_44s_4}
 };
-static vorbis_residue_template _res_44s_5[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_44s_5[]={
+  {2,0,16,  &_residue_44_mid,
    &_huff_book__44c5_s_short,&_huff_book__44c5_s_short,
    &_resbook_44s_5,&_resbook_44s_5},
 
-  {2,0,  &_residue_44_mid,
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__44c5_s_long,&_huff_book__44c5_s_long,
    &_resbook_44s_5,&_resbook_44s_5}
 };
-static vorbis_residue_template _res_44s_6[]={
-  {2,0,  &_residue_44_high,
+static const vorbis_residue_template _res_44s_6[]={
+  {2,0,16,  &_residue_44_high,
    &_huff_book__44c6_s_short,&_huff_book__44c6_s_short,
    &_resbook_44s_6,&_resbook_44s_6},
 
-  {2,0,  &_residue_44_high,
+  {2,0,32,  &_residue_44_high,
    &_huff_book__44c6_s_long,&_huff_book__44c6_s_long,
    &_resbook_44s_6,&_resbook_44s_6}
 };
-static vorbis_residue_template _res_44s_7[]={
-  {2,0,  &_residue_44_high,
+static const vorbis_residue_template _res_44s_7[]={
+  {2,0,16,  &_residue_44_high,
    &_huff_book__44c7_s_short,&_huff_book__44c7_s_short,
    &_resbook_44s_7,&_resbook_44s_7},
 
-  {2,0,  &_residue_44_high,
+  {2,0,32,  &_residue_44_high,
    &_huff_book__44c7_s_long,&_huff_book__44c7_s_long,
    &_resbook_44s_7,&_resbook_44s_7}
 };
-static vorbis_residue_template _res_44s_8[]={
-  {2,0,  &_residue_44_high,
+static const vorbis_residue_template _res_44s_8[]={
+  {2,0,16,  &_residue_44_high,
    &_huff_book__44c8_s_short,&_huff_book__44c8_s_short,
    &_resbook_44s_8,&_resbook_44s_8},
 
-  {2,0,  &_residue_44_high,
+  {2,0,32,  &_residue_44_high,
    &_huff_book__44c8_s_long,&_huff_book__44c8_s_long,
    &_resbook_44s_8,&_resbook_44s_8}
 };
-static vorbis_residue_template _res_44s_9[]={
-  {2,0,  &_residue_44_high,
+static const vorbis_residue_template _res_44s_9[]={
+  {2,0,16,  &_residue_44_high,
    &_huff_book__44c9_s_short,&_huff_book__44c9_s_short,
    &_resbook_44s_9,&_resbook_44s_9},
 
-  {2,0,  &_residue_44_high,
+  {2,0,32,  &_residue_44_high,
    &_huff_book__44c9_s_long,&_huff_book__44c9_s_long,
    &_resbook_44s_9,&_resbook_44s_9}
 };
 
-static vorbis_mapping_template _mapres_template_44_stereo[]={
+static const vorbis_mapping_template _mapres_template_44_stereo[]={
+  { _map_nominal, _res_44s_n1 }, /* -1 */
   { _map_nominal, _res_44s_0 }, /* 0 */
   { _map_nominal, _res_44s_1 }, /* 1 */
   { _map_nominal, _res_44s_2 }, /* 2 */
--- /dev/null
+++ b/sys/src/cmd/audio/libvorbis/modes/residue_44p51.h
@@ -1,0 +1,451 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel residue templates for 32/44.1/48kHz uncoupled
+ last mod: $Id: residue_44p51.h 19013 2013-11-12 04:04:50Z giles $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "backends.h"
+
+#include "books/coupled/res_books_51.h"
+
+/***** residue backends *********************************************/
+
+static const vorbis_info_residue0 _residue_44p_lo={
+  0,-1, -1, 7,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
+  {0},
+  {-1},
+  {  0,  1,  2,  7, 17, 31},
+  {  0,  0, 99,  7, 17, 31},
+};
+
+static const vorbis_info_residue0 _residue_44p={
+  0,-1, -1, 8,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
+  {0},
+  {-1},
+  {  0,  1,  1,   2,  7, 17, 31},
+  {  0,  0, 99,  99,  7, 17, 31},
+};
+
+static const vorbis_info_residue0 _residue_44p_hi={
+  0,-1, -1, 8,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
+  {0},
+  {-1},
+  {  0,  1,  2,  4,  7, 17, 31},
+  {  0,  1,  2,  4,  7, 17, 31},
+};
+
+static const vorbis_info_residue0 _residue_44p_lfe={
+  0,-1, -1, 2,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8  */
+  {0},
+  {-1},
+  { 32},
+  { -1}
+};
+
+static const static_bookblock _resbook_44p_n1={
+  {
+    {0},
+    {0,&_44pn1_p1_0},
+
+    {&_44pn1_p2_0,&_44pn1_p2_1,0},
+    {&_44pn1_p3_0,&_44pn1_p3_1,0},
+    {&_44pn1_p4_0,&_44pn1_p4_1,0},
+
+    {&_44pn1_p5_0,&_44pn1_p5_1,&_44pn1_p4_1},
+    {&_44pn1_p6_0,&_44pn1_p6_1,&_44pn1_p6_2},
+   }
+};
+
+static const static_bookblock _resbook_44p_0={
+  {
+    {0},
+    {0,&_44p0_p1_0},
+
+    {&_44p0_p2_0,&_44p0_p2_1,0},
+    {&_44p0_p3_0,&_44p0_p3_1,0},
+    {&_44p0_p4_0,&_44p0_p4_1,0},
+
+    {&_44p0_p5_0,&_44p0_p5_1,&_44p0_p4_1},
+    {&_44p0_p6_0,&_44p0_p6_1,&_44p0_p6_2},
+   }
+};
+
+static const static_bookblock _resbook_44p_1={
+  {
+    {0},
+    {0,&_44p1_p1_0},
+
+    {&_44p1_p2_0,&_44p1_p2_1,0},
+    {&_44p1_p3_0,&_44p1_p3_1,0},
+    {&_44p1_p4_0,&_44p1_p4_1,0},
+
+    {&_44p1_p5_0,&_44p1_p5_1,&_44p1_p4_1},
+    {&_44p1_p6_0,&_44p1_p6_1,&_44p1_p6_2},
+   }
+};
+
+static const static_bookblock _resbook_44p_2={
+  {
+    {0},
+    {0,0,&_44p2_p1_0},
+    {0,&_44p2_p2_0,0},
+
+    {&_44p2_p3_0,&_44p2_p3_1,0},
+    {&_44p2_p4_0,&_44p2_p4_1,0},
+    {&_44p2_p5_0,&_44p2_p5_1,0},
+
+    {&_44p2_p6_0,&_44p2_p6_1,&_44p2_p5_1},
+    {&_44p2_p7_0,&_44p2_p7_1,&_44p2_p7_2,&_44p2_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_3={
+  {
+    {0},
+    {0,0,&_44p3_p1_0},
+    {0,&_44p3_p2_0,0},
+
+    {&_44p3_p3_0,&_44p3_p3_1,0},
+    {&_44p3_p4_0,&_44p3_p4_1,0},
+    {&_44p3_p5_0,&_44p3_p5_1,0},
+
+    {&_44p3_p6_0,&_44p3_p6_1,&_44p3_p5_1},
+    {&_44p3_p7_0,&_44p3_p7_1,&_44p3_p7_2,&_44p3_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_4={
+  {
+    {0},
+    {0,0,&_44p4_p1_0},
+    {0,&_44p4_p2_0,0},
+
+    {&_44p4_p3_0,&_44p4_p3_1,0},
+    {&_44p4_p4_0,&_44p4_p4_1,0},
+    {&_44p4_p5_0,&_44p4_p5_1,0},
+
+    {&_44p4_p6_0,&_44p4_p6_1,&_44p4_p5_1},
+    {&_44p4_p7_0,&_44p4_p7_1,&_44p4_p7_2,&_44p4_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_5={
+  {
+    {0},
+    {0,0,&_44p5_p1_0},
+    {0,&_44p5_p2_0,0},
+
+    {&_44p5_p3_0,&_44p5_p3_1,0},
+    {&_44p5_p4_0,&_44p5_p4_1,0},
+    {&_44p5_p5_0,&_44p5_p5_1,0},
+
+    {&_44p5_p6_0,&_44p5_p6_1,&_44p5_p5_1},
+    {&_44p5_p7_0,&_44p5_p7_1,&_44p5_p7_2,&_44p5_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_6={
+  {
+    {0},
+    {0,0,&_44p6_p1_0},
+    {0,&_44p6_p2_0,0},
+
+    {&_44p6_p3_0,&_44p6_p3_1,0},
+    {&_44p6_p4_0,&_44p6_p4_1,0},
+    {&_44p6_p5_0,&_44p6_p5_1,0},
+
+    {&_44p6_p6_0,&_44p6_p6_1,&_44p6_p5_1},
+    {&_44p6_p7_0,&_44p6_p7_1,&_44p6_p7_2,&_44p6_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_7={
+  {
+    {0},
+    {0,0,&_44p7_p1_0},
+    {0,&_44p7_p2_0,0},
+
+    {&_44p7_p3_0,&_44p7_p3_1,0},
+    {&_44p7_p4_0,&_44p7_p4_1,0},
+    {&_44p7_p5_0,&_44p7_p5_1,0},
+
+    {&_44p7_p6_0,&_44p7_p6_1,&_44p7_p5_1},
+    {&_44p7_p7_0,&_44p7_p7_1,&_44p7_p7_2,&_44p7_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_8={
+  {
+    {0},
+    {0,0,&_44p8_p1_0},
+    {0,&_44p8_p2_0,0},
+
+    {&_44p8_p3_0,&_44p8_p3_1,0},
+    {&_44p8_p4_0,&_44p8_p4_1,0},
+    {&_44p8_p5_0,&_44p8_p5_1,0},
+
+    {&_44p8_p6_0,&_44p8_p6_1,&_44p8_p5_1},
+    {&_44p8_p7_0,&_44p8_p7_1,&_44p8_p7_2,&_44p8_p7_3}
+   }
+};
+static const static_bookblock _resbook_44p_9={
+  {
+    {0},
+    {0,0,&_44p9_p1_0},
+    {0,&_44p9_p2_0,0},
+
+    {&_44p9_p3_0,&_44p9_p3_1,0},
+    {&_44p9_p4_0,&_44p9_p4_1,0},
+    {&_44p9_p5_0,&_44p9_p5_1,0},
+
+    {&_44p9_p6_0,&_44p9_p6_1,&_44p9_p5_1},
+    {&_44p9_p7_0,&_44p9_p7_1,&_44p9_p7_2,&_44p9_p7_3}
+   }
+};
+
+static const static_bookblock _resbook_44p_ln1={
+  {
+    {&_44pn1_l0_0,&_44pn1_l0_1,0},
+    {&_44pn1_l1_0,&_44pn1_p6_1,&_44pn1_p6_2},
+   }
+};
+static const static_bookblock _resbook_44p_l0={
+  {
+    {&_44p0_l0_0,&_44p0_l0_1,0},
+    {&_44p0_l1_0,&_44p0_p6_1,&_44p0_p6_2},
+   }
+};
+static const static_bookblock _resbook_44p_l1={
+  {
+    {&_44p1_l0_0,&_44p1_l0_1,0},
+    {&_44p1_l1_0,&_44p1_p6_1,&_44p1_p6_2},
+   }
+};
+static const static_bookblock _resbook_44p_l2={
+  {
+    {&_44p2_l0_0,&_44p2_l0_1,0},
+    {&_44p2_l1_0,&_44p2_p7_2,&_44p2_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l3={
+  {
+    {&_44p3_l0_0,&_44p3_l0_1,0},
+    {&_44p3_l1_0,&_44p3_p7_2,&_44p3_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l4={
+  {
+    {&_44p4_l0_0,&_44p4_l0_1,0},
+    {&_44p4_l1_0,&_44p4_p7_2,&_44p4_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l5={
+  {
+    {&_44p5_l0_0,&_44p5_l0_1,0},
+    {&_44p5_l1_0,&_44p5_p7_2,&_44p5_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l6={
+  {
+    {&_44p6_l0_0,&_44p6_l0_1,0},
+    {&_44p6_l1_0,&_44p6_p7_2,&_44p6_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l7={
+  {
+    {&_44p7_l0_0,&_44p7_l0_1,0},
+    {&_44p7_l1_0,&_44p7_p7_2,&_44p7_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l8={
+  {
+    {&_44p8_l0_0,&_44p8_l0_1,0},
+    {&_44p8_l1_0,&_44p8_p7_2,&_44p8_p7_3},
+   }
+};
+static const static_bookblock _resbook_44p_l9={
+  {
+    {&_44p9_l0_0,&_44p9_l0_1,0},
+    {&_44p9_l1_0,&_44p9_p7_2,&_44p9_p7_3},
+   }
+};
+
+
+static const vorbis_info_mapping0 _map_nominal_51[2]={
+  {2, {0,0,0,0,0,1}, {0,2}, {0,2}, 4,{0,3,0,0},{2,4,1,3}},
+  {2, {0,0,0,0,0,1}, {1,2}, {1,2}, 4,{0,3,0,0},{2,4,1,3}}
+};
+static const vorbis_info_mapping0 _map_nominal_51u[2]={
+  {2, {0,0,0,0,0,1}, {0,2}, {0,2}, 0,{0},{0}},
+  {2, {0,0,0,0,0,1}, {1,2}, {1,2}, 0,{0},{0}}
+};
+
+static const vorbis_residue_template _res_44p51_n1[]={
+  {2,0,30,  &_residue_44p_lo,
+   &_huff_book__44pn1_short,&_huff_book__44pn1_short,
+   &_resbook_44p_n1,&_resbook_44p_n1},
+
+  {2,0,30,  &_residue_44p_lo,
+   &_huff_book__44pn1_long,&_huff_book__44pn1_long,
+   &_resbook_44p_n1,&_resbook_44p_n1},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44pn1_lfe,&_huff_book__44pn1_lfe,
+   &_resbook_44p_ln1,&_resbook_44p_ln1}
+};
+static const vorbis_residue_template _res_44p51_0[]={
+  {2,0,15,  &_residue_44p_lo,
+   &_huff_book__44p0_short,&_huff_book__44p0_short,
+   &_resbook_44p_0,&_resbook_44p_0},
+
+  {2,0,30,  &_residue_44p_lo,
+   &_huff_book__44p0_long,&_huff_book__44p0_long,
+   &_resbook_44p_0,&_resbook_44p_0},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p0_lfe,&_huff_book__44p0_lfe,
+   &_resbook_44p_l0,&_resbook_44p_l0}
+};
+static const vorbis_residue_template _res_44p51_1[]={
+  {2,0,15,  &_residue_44p_lo,
+   &_huff_book__44p1_short,&_huff_book__44p1_short,
+   &_resbook_44p_1,&_resbook_44p_1},
+
+  {2,0,30,  &_residue_44p_lo,
+   &_huff_book__44p1_long,&_huff_book__44p1_long,
+   &_resbook_44p_1,&_resbook_44p_1},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p1_lfe,&_huff_book__44p1_lfe,
+   &_resbook_44p_l1,&_resbook_44p_l1}
+};
+static const vorbis_residue_template _res_44p51_2[]={
+  {2,0,15,  &_residue_44p,
+   &_huff_book__44p2_short,&_huff_book__44p2_short,
+   &_resbook_44p_2,&_resbook_44p_2},
+
+  {2,0,30,  &_residue_44p,
+   &_huff_book__44p2_long,&_huff_book__44p2_long,
+   &_resbook_44p_2,&_resbook_44p_2},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p2_lfe,&_huff_book__44p2_lfe,
+   &_resbook_44p_l2,&_resbook_44p_l2}
+};
+static const vorbis_residue_template _res_44p51_3[]={
+  {2,0,15,  &_residue_44p,
+   &_huff_book__44p3_short,&_huff_book__44p3_short,
+   &_resbook_44p_3,&_resbook_44p_3},
+
+  {2,0,30,  &_residue_44p,
+   &_huff_book__44p3_long,&_huff_book__44p3_long,
+   &_resbook_44p_3,&_resbook_44p_3},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p3_lfe,&_huff_book__44p3_lfe,
+   &_resbook_44p_l3,&_resbook_44p_l3}
+};
+static const vorbis_residue_template _res_44p51_4[]={
+  {2,0,15,  &_residue_44p,
+   &_huff_book__44p4_short,&_huff_book__44p4_short,
+   &_resbook_44p_4,&_resbook_44p_4},
+
+  {2,0,30,  &_residue_44p,
+   &_huff_book__44p4_long,&_huff_book__44p4_long,
+   &_resbook_44p_4,&_resbook_44p_4},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p4_lfe,&_huff_book__44p4_lfe,
+   &_resbook_44p_l4,&_resbook_44p_l4}
+};
+static const vorbis_residue_template _res_44p51_5[]={
+  {2,0,15,  &_residue_44p_hi,
+   &_huff_book__44p5_short,&_huff_book__44p5_short,
+   &_resbook_44p_5,&_resbook_44p_5},
+
+  {2,0,30,  &_residue_44p_hi,
+   &_huff_book__44p5_long,&_huff_book__44p5_long,
+   &_resbook_44p_5,&_resbook_44p_5},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p5_lfe,&_huff_book__44p5_lfe,
+   &_resbook_44p_l5,&_resbook_44p_l5}
+};
+static const vorbis_residue_template _res_44p51_6[]={
+  {2,0,15,  &_residue_44p_hi,
+   &_huff_book__44p6_short,&_huff_book__44p6_short,
+   &_resbook_44p_6,&_resbook_44p_6},
+
+  {2,0,30,  &_residue_44p_hi,
+   &_huff_book__44p6_long,&_huff_book__44p6_long,
+   &_resbook_44p_6,&_resbook_44p_6},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
+   &_resbook_44p_l6,&_resbook_44p_l6}
+};
+
+
+static const vorbis_residue_template _res_44p51_7[]={
+  {2,0,15,  &_residue_44p_hi,
+   &_huff_book__44p7_short,&_huff_book__44p7_short,
+   &_resbook_44p_7,&_resbook_44p_7},
+
+  {2,0,30,  &_residue_44p_hi,
+   &_huff_book__44p7_long,&_huff_book__44p7_long,
+   &_resbook_44p_7,&_resbook_44p_7},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
+   &_resbook_44p_l6,&_resbook_44p_l6}
+};
+static const vorbis_residue_template _res_44p51_8[]={
+  {2,0,15,  &_residue_44p_hi,
+   &_huff_book__44p8_short,&_huff_book__44p8_short,
+   &_resbook_44p_8,&_resbook_44p_8},
+
+  {2,0,30,  &_residue_44p_hi,
+   &_huff_book__44p8_long,&_huff_book__44p8_long,
+   &_resbook_44p_8,&_resbook_44p_8},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
+   &_resbook_44p_l6,&_resbook_44p_l6}
+};
+static const vorbis_residue_template _res_44p51_9[]={
+  {2,0,15,  &_residue_44p_hi,
+   &_huff_book__44p9_short,&_huff_book__44p9_short,
+   &_resbook_44p_9,&_resbook_44p_9},
+
+  {2,0,30,  &_residue_44p_hi,
+   &_huff_book__44p9_long,&_huff_book__44p9_long,
+   &_resbook_44p_9,&_resbook_44p_9},
+
+  {1,2,6,  &_residue_44p_lfe,
+   &_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
+   &_resbook_44p_l6,&_resbook_44p_l6}
+};
+
+static const vorbis_mapping_template _mapres_template_44_51[]={
+  { _map_nominal_51, _res_44p51_n1 }, /* -1 */
+  { _map_nominal_51, _res_44p51_0 }, /* 0 */
+  { _map_nominal_51, _res_44p51_1 }, /* 1 */
+  { _map_nominal_51, _res_44p51_2 }, /* 2 */
+  { _map_nominal_51, _res_44p51_3 }, /* 3 */
+  { _map_nominal_51, _res_44p51_4 }, /* 4 */
+  { _map_nominal_51u, _res_44p51_5 }, /* 5 */
+  { _map_nominal_51u, _res_44p51_6 }, /* 6 */
+  { _map_nominal_51u, _res_44p51_7 }, /* 7 */
+  { _map_nominal_51u, _res_44p51_8 }, /* 8 */
+  { _map_nominal_51u, _res_44p51_9 }, /* 9 */
+};
--- a/sys/src/cmd/audio/libvorbis/modes/residue_44u.h
+++ b/sys/src/cmd/audio/libvorbis/modes/residue_44u.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel residue templates for 32/44.1/48kHz uncoupled
- last mod: $Id: residue_44u.h,v 1.3 2002/07/11 06:41:04 xiphmont Exp $
+ last mod: $Id: residue_44u.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -22,43 +22,55 @@
 /***** residue backends *********************************************/
 
 
-static vorbis_info_residue0 _residue_44_low_un={
-  0,-1, -1, 8,-1,
+static const vorbis_info_residue0 _residue_44_low_un={
+  0,-1, -1, 8,-1,-1,
   {0},
   {-1},
-  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5, 28.5},
-  {  -1,   25,   -1,   45,   -1,   -1,   -1}
+  {  0,  1,  1,  2,  2,  4, 28},
+  { -1, 25, -1, 45, -1, -1, -1}
 };
 
-static vorbis_info_residue0 _residue_44_mid_un={
-  0,-1, -1, 10,-1,
-  /*  0     1     2     3     4     5     6     7     8     9 */
+static const vorbis_info_residue0 _residue_44_mid_un={
+  0,-1, -1, 10,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8   9 */
   {0},
   {-1},
-  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5,  4.5, 16.5, 60.5},
-  {  -1,   30,   -1,   50,   -1,   80,   -1,   -1,   -1}
+  {  0,  1,  1,  2,  2,  4,  4, 16, 60},
+  { -1, 30, -1, 50, -1, 80, -1, -1, -1}
 };
 
-static vorbis_info_residue0 _residue_44_hi_un={
-  0,-1, -1, 10,-1,
-  /*  0     1     2     3     4     5     6     7     8     9 */
+static const vorbis_info_residue0 _residue_44_hi_un={
+  0,-1, -1, 10,-1,-1,
+  /* 0   1   2   3   4   5   6   7   8   9 */
   {0},
   {-1},
-  {  .5,  1.5,  2.5,  4.5,  8.5, 16.5, 32.5, 71.5,157.5},
-  {  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1}
+  {  0,  1,  2,  4,  8, 16, 32, 71,157},
+  { -1, -1, -1, -1, -1, -1, -1, -1, -1}
 };
 
 /* mapping conventions:
    only one submap (this would change for efficient 5.1 support for example)*/
 /* Four psychoacoustic profiles are used, one for each blocktype */
-static vorbis_info_mapping0 _map_nominal_u[2]={
-  {1, {0,0}, {0}, {0}, 0,{0},{0}},
-  {1, {0,0}, {1}, {1}, 0,{0},{0}}
+static const vorbis_info_mapping0 _map_nominal_u[2]={
+  {1, {0,0,0,0,0,0}, {0}, {0}, 0,{0},{0}},
+  {1, {0,0,0,0,0,0}, {1}, {1}, 0,{0},{0}}
 };
 
-static static_bookblock _resbook_44u_0={
+static const static_bookblock _resbook_44u_n1={
   {
     {0},
+    {0,0,&_44un1__p1_0},
+    {0,0,&_44un1__p2_0},
+    {0,0,&_44un1__p3_0},
+    {0,0,&_44un1__p4_0},
+    {0,0,&_44un1__p5_0},
+    {&_44un1__p6_0,&_44un1__p6_1},
+    {&_44un1__p7_0,&_44un1__p7_1,&_44un1__p7_2}
+   }
+};
+static const static_bookblock _resbook_44u_0={
+  {
+    {0},
     {0,0,&_44u0__p1_0},
     {0,0,&_44u0__p2_0},
     {0,0,&_44u0__p3_0},
@@ -68,7 +80,7 @@
     {&_44u0__p7_0,&_44u0__p7_1,&_44u0__p7_2}
    }
 };
-static static_bookblock _resbook_44u_1={
+static const static_bookblock _resbook_44u_1={
   {
     {0},
     {0,0,&_44u1__p1_0},
@@ -80,7 +92,7 @@
     {&_44u1__p7_0,&_44u1__p7_1,&_44u1__p7_2}
    }
 };
-static static_bookblock _resbook_44u_2={
+static const static_bookblock _resbook_44u_2={
   {
     {0},
     {0,0,&_44u2__p1_0},
@@ -92,7 +104,7 @@
     {&_44u2__p7_0,&_44u2__p7_1,&_44u2__p7_2}
    }
 };
-static static_bookblock _resbook_44u_3={
+static const static_bookblock _resbook_44u_3={
   {
     {0},
     {0,0,&_44u3__p1_0},
@@ -104,7 +116,7 @@
     {&_44u3__p7_0,&_44u3__p7_1,&_44u3__p7_2}
    }
 };
-static static_bookblock _resbook_44u_4={
+static const static_bookblock _resbook_44u_4={
   {
     {0},
     {0,0,&_44u4__p1_0},
@@ -116,7 +128,7 @@
     {&_44u4__p7_0,&_44u4__p7_1,&_44u4__p7_2}
    }
 };
-static static_bookblock _resbook_44u_5={
+static const static_bookblock _resbook_44u_5={
   {
     {0},
     {0,0,&_44u5__p1_0},
@@ -130,7 +142,7 @@
     {&_44u5__p9_0,&_44u5__p9_1,&_44u5__p9_2}
    }
 };
-static static_bookblock _resbook_44u_6={
+static const static_bookblock _resbook_44u_6={
   {
     {0},
     {0,0,&_44u6__p1_0},
@@ -144,7 +156,7 @@
     {&_44u6__p9_0,&_44u6__p9_1,&_44u6__p9_2}
    }
 };
-static static_bookblock _resbook_44u_7={
+static const static_bookblock _resbook_44u_7={
   {
     {0},
     {0,0,&_44u7__p1_0},
@@ -158,7 +170,7 @@
     {&_44u7__p9_0,&_44u7__p9_1,&_44u7__p9_2}
    }
 };
-static static_bookblock _resbook_44u_8={
+static const static_bookblock _resbook_44u_8={
   {
     {0},
     {0,0,&_44u8_p1_0},
@@ -172,7 +184,7 @@
     {&_44u8_p9_0,&_44u8_p9_1,&_44u8_p9_2}
    }
 };
-static static_bookblock _resbook_44u_9={
+static const static_bookblock _resbook_44u_9={
   {
     {0},
     {0,0,&_44u9_p1_0},
@@ -187,102 +199,112 @@
    }
 };
 
-static vorbis_residue_template _res_44u_0[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_44u_n1[]={
+  {1,0,32,  &_residue_44_low_un,
+   &_huff_book__44un1__short,&_huff_book__44un1__short,
+   &_resbook_44u_n1,&_resbook_44u_n1},
+
+  {1,0,32,  &_residue_44_low_un,
+   &_huff_book__44un1__long,&_huff_book__44un1__long,
+   &_resbook_44u_n1,&_resbook_44u_n1}
+};
+static const vorbis_residue_template _res_44u_0[]={
+  {1,0,16,  &_residue_44_low_un,
    &_huff_book__44u0__short,&_huff_book__44u0__short,
    &_resbook_44u_0,&_resbook_44u_0},
 
-  {1,0,  &_residue_44_low_un,
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__44u0__long,&_huff_book__44u0__long,
    &_resbook_44u_0,&_resbook_44u_0}
 };
-static vorbis_residue_template _res_44u_1[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_44u_1[]={
+  {1,0,16,  &_residue_44_low_un,
    &_huff_book__44u1__short,&_huff_book__44u1__short,
    &_resbook_44u_1,&_resbook_44u_1},
 
-  {1,0,  &_residue_44_low_un,
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__44u1__long,&_huff_book__44u1__long,
    &_resbook_44u_1,&_resbook_44u_1}
 };
-static vorbis_residue_template _res_44u_2[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_44u_2[]={
+  {1,0,16,  &_residue_44_low_un,
    &_huff_book__44u2__short,&_huff_book__44u2__short,
    &_resbook_44u_2,&_resbook_44u_2},
 
-  {1,0,  &_residue_44_low_un,
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__44u2__long,&_huff_book__44u2__long,
    &_resbook_44u_2,&_resbook_44u_2}
 };
-static vorbis_residue_template _res_44u_3[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_44u_3[]={
+  {1,0,16,  &_residue_44_low_un,
    &_huff_book__44u3__short,&_huff_book__44u3__short,
    &_resbook_44u_3,&_resbook_44u_3},
 
-  {1,0,  &_residue_44_low_un,
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__44u3__long,&_huff_book__44u3__long,
    &_resbook_44u_3,&_resbook_44u_3}
 };
-static vorbis_residue_template _res_44u_4[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_44u_4[]={
+  {1,0,16,  &_residue_44_low_un,
    &_huff_book__44u4__short,&_huff_book__44u4__short,
    &_resbook_44u_4,&_resbook_44u_4},
 
-  {1,0,  &_residue_44_low_un,
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__44u4__long,&_huff_book__44u4__long,
    &_resbook_44u_4,&_resbook_44u_4}
 };
 
-static vorbis_residue_template _res_44u_5[]={
-  {1,0,  &_residue_44_mid_un,
+static const vorbis_residue_template _res_44u_5[]={
+  {1,0,16,  &_residue_44_mid_un,
    &_huff_book__44u5__short,&_huff_book__44u5__short,
    &_resbook_44u_5,&_resbook_44u_5},
 
-  {1,0,  &_residue_44_mid_un,
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__44u5__long,&_huff_book__44u5__long,
    &_resbook_44u_5,&_resbook_44u_5}
 };
 
-static vorbis_residue_template _res_44u_6[]={
-  {1,0,  &_residue_44_mid_un,
+static const vorbis_residue_template _res_44u_6[]={
+  {1,0,16,  &_residue_44_mid_un,
    &_huff_book__44u6__short,&_huff_book__44u6__short,
    &_resbook_44u_6,&_resbook_44u_6},
 
-  {1,0,  &_residue_44_mid_un,
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__44u6__long,&_huff_book__44u6__long,
    &_resbook_44u_6,&_resbook_44u_6}
 };
 
-static vorbis_residue_template _res_44u_7[]={
-  {1,0,  &_residue_44_mid_un,
+static const vorbis_residue_template _res_44u_7[]={
+  {1,0,16,  &_residue_44_mid_un,
    &_huff_book__44u7__short,&_huff_book__44u7__short,
    &_resbook_44u_7,&_resbook_44u_7},
 
-  {1,0,  &_residue_44_mid_un,
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__44u7__long,&_huff_book__44u7__long,
    &_resbook_44u_7,&_resbook_44u_7}
 };
 
-static vorbis_residue_template _res_44u_8[]={
-  {1,0,  &_residue_44_hi_un,
+static const vorbis_residue_template _res_44u_8[]={
+  {1,0,16,  &_residue_44_hi_un,
    &_huff_book__44u8__short,&_huff_book__44u8__short,
    &_resbook_44u_8,&_resbook_44u_8},
 
-  {1,0,  &_residue_44_hi_un,
+  {1,0,32,  &_residue_44_hi_un,
    &_huff_book__44u8__long,&_huff_book__44u8__long,
    &_resbook_44u_8,&_resbook_44u_8}
 };
-static vorbis_residue_template _res_44u_9[]={
-  {1,0,  &_residue_44_hi_un,
+static const vorbis_residue_template _res_44u_9[]={
+  {1,0,16,  &_residue_44_hi_un,
    &_huff_book__44u9__short,&_huff_book__44u9__short,
    &_resbook_44u_9,&_resbook_44u_9},
 
-  {1,0,  &_residue_44_hi_un,
+  {1,0,32,  &_residue_44_hi_un,
    &_huff_book__44u9__long,&_huff_book__44u9__long,
    &_resbook_44u_9,&_resbook_44u_9}
 };
 
-static vorbis_mapping_template _mapres_template_44_uncoupled[]={
+static const vorbis_mapping_template _mapres_template_44_uncoupled[]={
+  { _map_nominal_u, _res_44u_n1 }, /* -1 */
   { _map_nominal_u, _res_44u_0 }, /* 0 */
   { _map_nominal_u, _res_44u_1 }, /* 1 */
   { _map_nominal_u, _res_44u_2 }, /* 2 */
--- a/sys/src/cmd/audio/libvorbis/modes/residue_8.h
+++ b/sys/src/cmd/audio/libvorbis/modes/residue_8.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel residue templates 8/11kHz
- last mod: $Id: residue_8.h,v 1.2 2002/07/11 06:41:04 xiphmont Exp $
+ last mod: $Id: residue_8.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -20,40 +20,52 @@
 
 /***** residue backends *********************************************/
 
-static static_bookblock _resbook_8s_0={
+static const static_bookblock _resbook_8s_0={
   {
-    {0},{0,0,&_8c0_s_p1_0},{0,0,&_8c0_s_p2_0},{0,0,&_8c0_s_p3_0},
-    {0,0,&_8c0_s_p4_0},{0,0,&_8c0_s_p5_0},{0,0,&_8c0_s_p6_0},
-    {&_8c0_s_p7_0,&_8c0_s_p7_1},{&_8c0_s_p8_0,&_8c0_s_p8_1},
+    {0},
+    {0,0,&_8c0_s_p1_0},
+    {0},
+    {0,0,&_8c0_s_p3_0},
+    {0,0,&_8c0_s_p4_0},
+    {0,0,&_8c0_s_p5_0},
+    {0,0,&_8c0_s_p6_0},
+    {&_8c0_s_p7_0,&_8c0_s_p7_1},
+    {&_8c0_s_p8_0,&_8c0_s_p8_1},
     {&_8c0_s_p9_0,&_8c0_s_p9_1,&_8c0_s_p9_2}
    }
 };
-static static_bookblock _resbook_8s_1={
+static const static_bookblock _resbook_8s_1={
   {
-    {0},{0,0,&_8c1_s_p1_0},{0,0,&_8c1_s_p2_0},{0,0,&_8c1_s_p3_0},
-    {0,0,&_8c1_s_p4_0},{0,0,&_8c1_s_p5_0},{0,0,&_8c1_s_p6_0},
-    {&_8c1_s_p7_0,&_8c1_s_p7_1},{&_8c1_s_p8_0,&_8c1_s_p8_1},
+    {0},
+    {0,0,&_8c1_s_p1_0},
+    {0},
+    {0,0,&_8c1_s_p3_0},
+    {0,0,&_8c1_s_p4_0},
+    {0,0,&_8c1_s_p5_0},
+    {0,0,&_8c1_s_p6_0},
+    {&_8c1_s_p7_0,&_8c1_s_p7_1},
+    {&_8c1_s_p8_0,&_8c1_s_p8_1},
     {&_8c1_s_p9_0,&_8c1_s_p9_1,&_8c1_s_p9_2}
    }
 };
 
-static vorbis_residue_template _res_8s_0[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_8s_0[]={
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__8c0_s_single,&_huff_book__8c0_s_single,
    &_resbook_8s_0,&_resbook_8s_0},
 };
-static vorbis_residue_template _res_8s_1[]={
-  {2,0,  &_residue_44_mid,
+static const vorbis_residue_template _res_8s_1[]={
+  {2,0,32,  &_residue_44_mid,
    &_huff_book__8c1_s_single,&_huff_book__8c1_s_single,
    &_resbook_8s_1,&_resbook_8s_1},
 };
 
-static vorbis_mapping_template _mapres_template_8_stereo[2]={
+static const vorbis_mapping_template _mapres_template_8_stereo[2]={
   { _map_nominal, _res_8s_0 }, /* 0 */
   { _map_nominal, _res_8s_1 }, /* 1 */
 };
 
-static static_bookblock _resbook_8u_0={
+static const static_bookblock _resbook_8u_0={
   {
     {0},
     {0,0,&_8u0__p1_0},
@@ -65,7 +77,7 @@
     {&_8u0__p7_0,&_8u0__p7_1,&_8u0__p7_2}
    }
 };
-static static_bookblock _resbook_8u_1={
+static const static_bookblock _resbook_8u_1={
   {
     {0},
     {0,0,&_8u1__p1_0},
@@ -80,18 +92,18 @@
    }
 };
 
-static vorbis_residue_template _res_8u_0[]={
-  {1,0,  &_residue_44_low_un,
+static const vorbis_residue_template _res_8u_0[]={
+  {1,0,32,  &_residue_44_low_un,
    &_huff_book__8u0__single,&_huff_book__8u0__single,
    &_resbook_8u_0,&_resbook_8u_0},
 };
-static vorbis_residue_template _res_8u_1[]={
-  {1,0,  &_residue_44_mid_un,
+static const vorbis_residue_template _res_8u_1[]={
+  {1,0,32,  &_residue_44_mid_un,
    &_huff_book__8u1__single,&_huff_book__8u1__single,
    &_resbook_8u_1,&_resbook_8u_1},
 };
 
-static vorbis_mapping_template _mapres_template_8_uncoupled[2]={
+static const vorbis_mapping_template _mapres_template_8_uncoupled[2]={
   { _map_nominal_u, _res_8u_0 }, /* 0 */
   { _map_nominal_u, _res_8u_1 }, /* 1 */
 };
--- a/sys/src/cmd/audio/libvorbis/modes/setup_11.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_11.h
@@ -5,39 +5,42 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 11kHz settings 
- last mod: $Id: setup_11.h,v 1.2 2002/07/11 06:41:04 xiphmont Exp $
+ function: 11kHz settings
+ last mod: $Id: setup_11.h 16894 2010-02-12 20:32:12Z xiphmont $
 
  ********************************************************************/
 
 #include "psych_11.h"
 
-static int blocksize_11[2]={
+static const int blocksize_11[2]={
   512,512
 };
 
-static int _floor_mapping_11[2]={
-  1,1,
+static const int _floor_mapping_11a[]={
+  6,6
 };
+static const int *_floor_mapping_11[]={
+  _floor_mapping_11a
+};
 
-static double rate_mapping_11[3]={
+static const double rate_mapping_11[3]={
   8000.,13000.,44000.,
 };
 
-static double rate_mapping_11_uncoupled[3]={
+static const double rate_mapping_11_uncoupled[3]={
   12000.,20000.,50000.,
 };
 
-static double quality_mapping_11[3]={
+static const double quality_mapping_11[3]={
   -.1,.0,1.
 };
 
-ve_setup_data_template ve_setup_11_stereo={
+static const ve_setup_data_template ve_setup_11_stereo={
   2,
   rate_mapping_11,
   quality_mapping_11,
@@ -44,7 +47,7 @@
   2,
   9000,
   15000,
-  
+
   blocksize_11,
   blocksize_11,
 
@@ -62,7 +65,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -73,7 +76,7 @@
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_11,
 
   _psy_global_44,
@@ -82,13 +85,13 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_11,
-  NULL,
 
   _mapres_template_8_stereo
 };
 
-ve_setup_data_template ve_setup_11_uncoupled={
+static const ve_setup_data_template ve_setup_11_uncoupled={
   2,
   rate_mapping_11_uncoupled,
   quality_mapping_11,
@@ -95,7 +98,7 @@
   -1,
   9000,
   15000,
-  
+
   blocksize_11,
   blocksize_11,
 
@@ -113,7 +116,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -124,7 +127,7 @@
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_11,
 
   _psy_global_44,
@@ -133,9 +136,8 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_11,
-  NULL,
 
   _mapres_template_8_uncoupled
 };
-
--- a/sys/src/cmd/audio/libvorbis/modes/setup_16.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_16.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 16kHz settings 
- last mod: $Id: setup_16.h,v 1.4 2002/07/11 10:02:29 xiphmont Exp $
+ function: 16kHz settings
+ last mod: $Id: setup_16.h 16894 2010-02-12 20:32:12Z xiphmont $
 
  ********************************************************************/
 
@@ -18,35 +18,39 @@
 #include "psych_16.h"
 #include "residue_16.h"
 
-static int blocksize_16_short[3]={
+static const int blocksize_16_short[3]={
   1024,512,512
 };
-static int blocksize_16_long[3]={
+static const int blocksize_16_long[3]={
   1024,1024,1024
 };
 
-static int _floor_mapping_16_short[3]={
+static const int _floor_mapping_16a[]={
   9,3,3
 };
-static int _floor_mapping_16[3]={
+static const int _floor_mapping_16b[]={
   9,9,9
 };
+static const int *_floor_mapping_16[]={
+  _floor_mapping_16a,
+  _floor_mapping_16b
+};
 
-static double rate_mapping_16[4]={
+static const double rate_mapping_16[4]={
   12000.,20000.,44000.,86000.
 };
 
-static double rate_mapping_16_uncoupled[4]={
+static const double rate_mapping_16_uncoupled[4]={
   16000.,28000.,64000.,100000.
 };
 
-static double _global_mapping_16[4]={ 1., 2., 3., 4. };
+static const double _global_mapping_16[4]={ 1., 2., 3., 4. };
 
-static double quality_mapping_16[4]={ -.1,.05,.5,1. };
+static const double quality_mapping_16[4]={ -.1,.05,.5,1. };
 
-static double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
+static const double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
 
-ve_setup_data_template ve_setup_16_stereo={
+static const ve_setup_data_template ve_setup_16_stereo={
   3,
   rate_mapping_16,
   quality_mapping_16,
@@ -53,7 +57,7 @@
   2,
   15000,
   19000,
-  
+
   blocksize_16_short,
   blocksize_16_long,
 
@@ -65,16 +69,16 @@
   _vp_tonemask_adj_16,
   _vp_tonemask_adj_16,
 
-  _psy_noiseguards_8,
+  _psy_noiseguards_16,
   _psy_noisebias_16_impulse,
   _psy_noisebias_16_short,
   _psy_noisebias_16_short,
   _psy_noisebias_16,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
-  _psy_compand_8_mapping,
-  _psy_compand_8_mapping,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
 
   {_noise_start_16,_noise_start_16},
   { _noise_part_16, _noise_part_16},
@@ -82,7 +86,7 @@
 
   _psy_ath_floater_16,
   _psy_ath_abs_16,
-  
+
   _psy_lowpass_16,
 
   _psy_global_44,
@@ -91,13 +95,13 @@
 
   _floor_books,
   _floor,
-  _floor_mapping_16_short,
+  2,
   _floor_mapping_16,
 
   _mapres_template_16_stereo
 };
 
-ve_setup_data_template ve_setup_16_uncoupled={
+static const ve_setup_data_template ve_setup_16_uncoupled={
   3,
   rate_mapping_16_uncoupled,
   quality_mapping_16,
@@ -104,7 +108,7 @@
   -1,
   15000,
   19000,
-  
+
   blocksize_16_short,
   blocksize_16_long,
 
@@ -116,16 +120,16 @@
   _vp_tonemask_adj_16,
   _vp_tonemask_adj_16,
 
-  _psy_noiseguards_8,
+  _psy_noiseguards_16,
   _psy_noisebias_16_impulse,
   _psy_noisebias_16_short,
   _psy_noisebias_16_short,
   _psy_noisebias_16,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
-  _psy_compand_8_mapping,
-  _psy_compand_8_mapping,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
 
   {_noise_start_16,_noise_start_16},
   { _noise_part_16, _noise_part_16},
@@ -133,7 +137,7 @@
 
   _psy_ath_floater_16,
   _psy_ath_abs_16,
-  
+
   _psy_lowpass_16,
 
   _psy_global_44,
@@ -142,7 +146,7 @@
 
   _floor_books,
   _floor,
-  _floor_mapping_16_short,
+  2,
   _floor_mapping_16,
 
   _mapres_template_16_uncoupled
--- a/sys/src/cmd/audio/libvorbis/modes/setup_22.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_22.h
@@ -5,27 +5,27 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 22kHz settings 
- last mod: $Id: setup_22.h,v 1.3 2002/07/11 10:02:29 xiphmont Exp $
+ function: 22kHz settings
+ last mod: $Id: setup_22.h 17026 2010-03-25 05:00:27Z xiphmont $
 
  ********************************************************************/
 
-static double rate_mapping_22[4]={
+static const double rate_mapping_22[4]={
   15000.,20000.,44000.,86000.
 };
 
-static double rate_mapping_22_uncoupled[4]={
+static const double rate_mapping_22_uncoupled[4]={
   16000.,28000.,50000.,90000.
 };
 
-static double _psy_lowpass_22[4]={9.5,11.,30.,99.};
+static const double _psy_lowpass_22[4]={9.5,11.,30.,99.};
 
-ve_setup_data_template ve_setup_22_stereo={
+static const ve_setup_data_template ve_setup_22_stereo={
   3,
   rate_mapping_22,
   quality_mapping_16,
@@ -32,7 +32,7 @@
   2,
   19000,
   26000,
-  
+
   blocksize_16_short,
   blocksize_16_long,
 
@@ -44,16 +44,16 @@
   _vp_tonemask_adj_16,
   _vp_tonemask_adj_16,
 
-  _psy_noiseguards_8,
+  _psy_noiseguards_16,
   _psy_noisebias_16_impulse,
   _psy_noisebias_16_short,
   _psy_noisebias_16_short,
   _psy_noisebias_16,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
-  _psy_compand_8_mapping,
-  _psy_compand_8_mapping,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
 
   {_noise_start_16,_noise_start_16},
   { _noise_part_16, _noise_part_16},
@@ -61,7 +61,7 @@
 
   _psy_ath_floater_16,
   _psy_ath_abs_16,
-  
+
   _psy_lowpass_22,
 
   _psy_global_44,
@@ -70,13 +70,13 @@
 
   _floor_books,
   _floor,
-  _floor_mapping_16_short,
+  2,
   _floor_mapping_16,
 
   _mapres_template_16_stereo
 };
 
-ve_setup_data_template ve_setup_22_uncoupled={
+static const ve_setup_data_template ve_setup_22_uncoupled={
   3,
   rate_mapping_22_uncoupled,
   quality_mapping_16,
@@ -83,7 +83,7 @@
   -1,
   19000,
   26000,
-  
+
   blocksize_16_short,
   blocksize_16_long,
 
@@ -95,16 +95,16 @@
   _vp_tonemask_adj_16,
   _vp_tonemask_adj_16,
 
-  _psy_noiseguards_8,
+  _psy_noiseguards_16,
   _psy_noisebias_16_impulse,
   _psy_noisebias_16_short,
   _psy_noisebias_16_short,
   _psy_noisebias_16,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
-  _psy_compand_8_mapping,
-  _psy_compand_8_mapping,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
 
   {_noise_start_16,_noise_start_16},
   { _noise_part_16, _noise_part_16},
@@ -112,7 +112,7 @@
 
   _psy_ath_floater_16,
   _psy_ath_abs_16,
-  
+
   _psy_lowpass_22,
 
   _psy_global_44,
@@ -121,7 +121,7 @@
 
   _floor_books,
   _floor,
-  _floor_mapping_16_short,
+  2,
   _floor_mapping_16,
 
   _mapres_template_16_uncoupled
--- a/sys/src/cmd/audio/libvorbis/modes/setup_32.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_32.h
@@ -5,49 +5,38 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel settings for 32kHz
- last mod: $Id: setup_32.h,v 1.4 2002/07/13 06:12:49 xiphmont Exp $
+ last mod: $Id: setup_32.h 16894 2010-02-12 20:32:12Z xiphmont $
 
  ********************************************************************/
 
-static double rate_mapping_32[11]={
-  28000.,35000.,45000.,56000.,60000.,
+static const double rate_mapping_32[12]={
+  18000.,28000.,35000.,45000.,56000.,60000.,
   75000.,90000.,100000.,115000.,150000.,190000.,
 };
 
-static double rate_mapping_32_un[11]={
-  42000.,52000.,64000.,72000.,78000.,
+static const double rate_mapping_32_un[12]={
+  30000.,42000.,52000.,64000.,72000.,78000.,
   86000.,92000.,110000.,120000.,140000.,190000.,
 };
 
-static double rate_mapping_32_low[2]={
-  20000.,28000.
+static const double _psy_lowpass_32[12]={
+  12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
 };
 
-static double rate_mapping_32_un_low[2]={
-  24000.,42000.,
-};
-
-static double _psy_lowpass_32_low[2]={
-  13.,13.,
-};
-static double _psy_lowpass_32[11]={
-  13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
-};
-
-ve_setup_data_template ve_setup_32_stereo={
-  10,
+static const ve_setup_data_template ve_setup_32_stereo={
+  11,
   rate_mapping_32,
   quality_mapping_44,
   2,
   26000,
   40000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -65,7 +54,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -76,7 +65,7 @@
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
+
   _psy_lowpass_32,
 
   _psy_global_44,
@@ -85,20 +74,20 @@
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
+  2,
+  _floor_mapping_44,
 
   _mapres_template_44_stereo
 };
 
-ve_setup_data_template ve_setup_32_uncoupled={
-  10,
+static const ve_setup_data_template ve_setup_32_uncoupled={
+  11,
   rate_mapping_32_un,
   quality_mapping_44,
   -1,
   26000,
   40000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -116,7 +105,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -123,116 +112,13 @@
 
   {_noise_start_short_44,_noise_start_long_44},
   {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_32,
-
-  _psy_global_44,
-  _global_mapping_44,
-  NULL,
-
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
-
-  _mapres_template_44_uncoupled
-};
-
-ve_setup_data_template ve_setup_32_stereo_low={
-  1,
-  rate_mapping_32_low,
-  quality_mapping_44_stereo_low,
-  2,
-  26000,
-  40000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
-
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
   _noise_thresh_44,
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
-  _psy_lowpass_32_low,
 
-  _psy_global_44,
-  _global_mapping_44,
-  _psy_stereo_modes_44_low,
+  _psy_lowpass_32,
 
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
-
-  _mapres_template_44_stereo
-};
-
-
-ve_setup_data_template ve_setup_32_uncoupled_low={
-  1,
-  rate_mapping_32_un_low,
-  quality_mapping_44_stereo_low,
-  -1,
-  26000,
-  40000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
-
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_32_low,
-
   _psy_global_44,
   _global_mapping_44,
   NULL,
@@ -239,8 +125,8 @@
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
+  2,
+  _floor_mapping_44,
 
   _mapres_template_44_uncoupled
 };
--- a/sys/src/cmd/audio/libvorbis/modes/setup_44.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_44.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel settings for 44.1/48kHz
- last mod: $Id: setup_44.h,v 1.9 2002/07/11 08:57:29 xiphmont Exp $
+ last mod: $Id: setup_44.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
@@ -19,67 +19,60 @@
 #include "modes/residue_44.h"
 #include "modes/psych_44.h"
 
-static double rate_mapping_44_stereo_low[2]={
-  22500.,32000.
+static const double rate_mapping_44_stereo[12]={
+  22500.,32000.,40000.,48000.,56000.,64000.,
+  80000.,96000.,112000.,128000.,160000.,250001.
 };
 
-static double rate_mapping_44_stereo[11]={
-  32000.,40000.,48000.,56000.,64000.,
-  80000.,96000.,112000.,128000.,160000.,250001.
+static const double quality_mapping_44[12]={
+  -.1,.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
 };
-static double quality_mapping_44_stereo_low[2]={
-  -.1,.0,
+
+static const int blocksize_short_44[11]={
+  512,256,256,256,256,256,256,256,256,256,256
 };
-static double quality_mapping_44[11]={
-  .0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
+static const int blocksize_long_44[11]={
+  4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
 };
 
-static int blocksize_short_44_low[1]={
-  512
+static const double _psy_compand_short_mapping[12]={
+  0.5, 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
 };
-static int blocksize_long_44_low[1]={
-  4096
+static const double _psy_compand_long_mapping[12]={
+  3.5, 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
 };
 
-static int blocksize_short_44[10]={
-  256,256,256,256,256,256,256,256,256,256
+static const double _global_mapping_44[12]={
+  /* 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4. */
+ 0., 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.7, 4., 4.
 };
-static int blocksize_long_44[10]={
-  2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
+
+static const int _floor_mapping_44a[11]={
+  1,0,0,2,2,4,5,5,5,5,5
 };
-static double _psy_compand_short_mapping[11]={
-  1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
+
+static const int _floor_mapping_44b[11]={
+  8,7,7,7,7,7,7,7,7,7,7
 };
-static double _psy_compand_long_mapping[11]={
-  4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
+
+static const int _floor_mapping_44c[11]={
+  10,10,10,10,10,10,10,10,10,10,10
 };
-static double _global_mapping_44[11]={
-  1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4.
+
+static const int *_floor_mapping_44[]={
+  _floor_mapping_44a,
+  _floor_mapping_44b,
+  _floor_mapping_44c,
 };
-static double _global_mapping_44_low[2]={
-  0., 1.,
-};
-static int _floor_short_mapping_44_low[1]={
-  1,
-};
-static int _floor_long_mapping_44_low[1]={
-  8
-};
-static int _floor_short_mapping_44[10]={
-  0,0,2,2,4,5,5,5,5,5
-};
-static int _floor_long_mapping_44[10]={
-  7,7,7,7,7,7,7,7,7,7
-};
 
-ve_setup_data_template ve_setup_44_stereo={
-  10,
+static const ve_setup_data_template ve_setup_44_stereo={
+  11,
   rate_mapping_44_stereo,
   quality_mapping_44,
   2,
   40000,
   50000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -97,7 +90,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -108,7 +101,7 @@
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
+
   _psy_lowpass_44,
 
   _psy_global_44,
@@ -117,60 +110,8 @@
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
-
-  _mapres_template_44_stereo
-};
-
-ve_setup_data_template ve_setup_44_stereo_low={
-  1,
-  rate_mapping_44_stereo_low,
-  quality_mapping_44_stereo_low,
   2,
-  40000,
-  50000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
+  _floor_mapping_44,
 
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_44_low,
-
-  _psy_global_44,
-  _global_mapping_44_low,
-  _psy_stereo_modes_44_low,
-
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
-
   _mapres_template_44_stereo
 };
-
--- /dev/null
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_44p51.h
@@ -1,0 +1,74 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel settings for 44.1/48kHz 5.1 surround modes
+ last mod: $Id: setup_44p51.h 19013 2013-11-12 04:04:50Z giles $
+
+ ********************************************************************/
+
+#include "modes/residue_44p51.h"
+
+static const double rate_mapping_44p51[12]={
+  14000.,20000.,28000.,38000.,46000.,54000.,
+  75000.,96000.,120000.,140000.,180000.,240001.
+};
+
+static const ve_setup_data_template ve_setup_44_51={
+  11,
+  rate_mapping_44p51,
+  quality_mapping_44,
+  6,
+  40000,
+  70000,
+
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+
+  _psy_lowpass_44,
+
+  _psy_global_44,
+  _global_mapping_44,
+  _psy_stereo_modes_44,
+
+  _floor_books,
+  _floor,
+  3,
+  _floor_mapping_44,
+
+  _mapres_template_44_51
+};
--- a/sys/src/cmd/audio/libvorbis/modes/setup_44u.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_44u.h
@@ -5,35 +5,31 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: toplevel settings for 44.1/48kHz uncoupled modes
- last mod: $Id: setup_44u.h,v 1.3 2002/07/11 06:41:05 xiphmont Exp $
+ last mod: $Id: setup_44u.h 16962 2010-03-11 07:30:34Z xiphmont $
 
  ********************************************************************/
 
 #include "modes/residue_44u.h"
 
-static double rate_mapping_44_un[11]={
-  48000.,60000.,70000.,80000.,86000.,
+static const double rate_mapping_44_un[12]={
+  32000.,48000.,60000.,70000.,80000.,86000.,
   96000.,110000.,120000.,140000.,160000.,240001.
 };
 
-static double rate_mapping_44_un_low[2]={
-  32000.,48000.
-};
-
-ve_setup_data_template ve_setup_44_uncoupled={
-  10,
+static const ve_setup_data_template ve_setup_44_uncoupled={
+  11,
   rate_mapping_44_un,
   quality_mapping_44,
   -1,
   40000,
   50000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -51,7 +47,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -58,72 +54,21 @@
 
   {_noise_start_short_44,_noise_start_long_44},
   {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
+  _noise_thresh_44,
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
+
   _psy_lowpass_44,
 
   _psy_global_44,
   _global_mapping_44,
-  NULL,
+  _psy_stereo_modes_44,
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
-
-  _mapres_template_44_uncoupled
-};
-
-ve_setup_data_template ve_setup_44_uncoupled_low={
-  1,
-  rate_mapping_44_un_low,
-  quality_mapping_44_stereo_low,
-  -1,
-  40000,
-  50000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
-
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_44_low,
-
-  _psy_global_44,
-  _global_mapping_44_low,
-  NULL,
-
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
+  2,
+  _floor_mapping_44,
 
   _mapres_template_44_uncoupled
 };
--- a/sys/src/cmd/audio/libvorbis/modes/setup_8.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_8.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
- function: 8kHz settings 
- last mod: $Id: setup_8.h,v 1.2 2002/07/11 06:41:05 xiphmont Exp $
+ function: 8kHz settings
+ last mod: $Id: setup_8.h 16894 2010-02-12 20:32:12Z xiphmont $
 
  ********************************************************************/
 
@@ -18,31 +18,35 @@
 #include "psych_8.h"
 #include "residue_8.h"
 
-static int blocksize_8[2]={
+static const int blocksize_8[2]={
   512,512
 };
 
-static int _floor_mapping_8[2]={
-  1,1,
+static const int _floor_mapping_8a[]={
+  6,6
 };
 
-static double rate_mapping_8[3]={
+static const int *_floor_mapping_8[]={
+  _floor_mapping_8a
+};
+
+static const double rate_mapping_8[3]={
   6000.,9000.,32000.,
 };
 
-static double rate_mapping_8_uncoupled[3]={
+static const double rate_mapping_8_uncoupled[3]={
   8000.,14000.,42000.,
 };
 
-static double quality_mapping_8[3]={
+static const double quality_mapping_8[3]={
   -.1,.0,1.
 };
 
-static double _psy_compand_8_mapping[3]={ 0., 1., 1.};
+static const double _psy_compand_8_mapping[3]={ 0., 1., 1.};
 
-static double _global_mapping_8[3]={ 1., 2., 3. };
+static const double _global_mapping_8[3]={ 1., 2., 3. };
 
-ve_setup_data_template ve_setup_8_stereo={
+static const ve_setup_data_template ve_setup_8_stereo={
   2,
   rate_mapping_8,
   quality_mapping_8,
@@ -49,7 +53,7 @@
   2,
   8000,
   9000,
-  
+
   blocksize_8,
   blocksize_8,
 
@@ -67,7 +71,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -74,11 +78,11 @@
 
   {_noise_start_8,_noise_start_8},
   {_noise_part_8,_noise_part_8},
-  _noise_thresh_44_2,
+  _noise_thresh_5only,
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_8,
 
   _psy_global_44,
@@ -87,13 +91,13 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_8,
-  NULL,
 
   _mapres_template_8_stereo
 };
 
-ve_setup_data_template ve_setup_8_uncoupled={
+static const ve_setup_data_template ve_setup_8_uncoupled={
   2,
   rate_mapping_8_uncoupled,
   quality_mapping_8,
@@ -100,7 +104,7 @@
   -1,
   8000,
   9000,
-  
+
   blocksize_8,
   blocksize_8,
 
@@ -118,7 +122,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -125,11 +129,11 @@
 
   {_noise_start_8,_noise_start_8},
   {_noise_part_8,_noise_part_8},
-  _noise_thresh_44_2,
+  _noise_thresh_5only,
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_8,
 
   _psy_global_44,
@@ -138,9 +142,8 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_8,
-  NULL,
 
   _mapres_template_8_uncoupled
 };
-
--- a/sys/src/cmd/audio/libvorbis/modes/setup_X.h
+++ b/sys/src/cmd/audio/libvorbis/modes/setup_X.h
@@ -5,29 +5,29 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: catch-all toplevel settings for q modes only
- last mod: $Id: setup_X.h,v 1.3 2002/07/11 06:41:05 xiphmont Exp $
+ last mod: $Id: setup_X.h 16894 2010-02-12 20:32:12Z xiphmont $
 
  ********************************************************************/
 
-static double rate_mapping_X[11]={
-  -1.,-1.,-1.,-1.,-1.,
+static const double rate_mapping_X[12]={
+  -1.,-1.,-1.,-1.,-1.,-1.,
   -1.,-1.,-1.,-1.,-1.,-1.
 };
 
-ve_setup_data_template ve_setup_X_stereo={
-  10,
+static const ve_setup_data_template ve_setup_X_stereo={
+  11,
   rate_mapping_X,
   quality_mapping_44,
   2,
   50000,
   200000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -45,7 +45,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -56,7 +56,7 @@
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
+
   _psy_lowpass_44,
 
   _psy_global_44,
@@ -65,20 +65,20 @@
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
+  2,
+  _floor_mapping_44,
 
   _mapres_template_44_stereo
 };
 
-ve_setup_data_template ve_setup_X_uncoupled={
-  10,
+static const ve_setup_data_template ve_setup_X_uncoupled={
+  11,
   rate_mapping_X,
   quality_mapping_44,
   -1,
   50000,
   200000,
-  
+
   blocksize_short_44,
   blocksize_long_44,
 
@@ -96,7 +96,7 @@
   _psy_noisebias_trans,
   _psy_noisebias_long,
   _psy_noise_suppress,
-  
+
   _psy_compand_44,
   _psy_compand_short_mapping,
   _psy_compand_long_mapping,
@@ -103,11 +103,11 @@
 
   {_noise_start_short_44,_noise_start_long_44},
   {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
+  _noise_thresh_44,
 
   _psy_ath_floater,
   _psy_ath_abs,
-  
+
   _psy_lowpass_44,
 
   _psy_global_44,
@@ -116,116 +116,13 @@
 
   _floor_books,
   _floor,
-  _floor_short_mapping_44,
-  _floor_long_mapping_44,
-
-  _mapres_template_44_uncoupled
-};
-
-ve_setup_data_template ve_setup_X_stereo_low={
-  1,
-  rate_mapping_X,
-  quality_mapping_44_stereo_low,
   2,
-  50000,
-  200000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
+  _floor_mapping_44,
 
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_44_low,
-
-  _psy_global_44,
-  _global_mapping_44,
-  _psy_stereo_modes_44_low,
-
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
-
-  _mapres_template_44_stereo
-};
-
-
-ve_setup_data_template ve_setup_X_uncoupled_low={
-  1,
-  rate_mapping_X,
-  quality_mapping_44_stereo_low,
-  -1,
-  50000,
-  200000,
-  
-  blocksize_short_44_low,
-  blocksize_long_44_low,
-
-  _psy_tone_masteratt_44_low,
-  _psy_tone_0dB,
-  _psy_tone_suppress,
-
-  _vp_tonemask_adj_otherblock,
-  _vp_tonemask_adj_longblock,
-  _vp_tonemask_adj_otherblock,
-
-  _psy_noiseguards_44,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_trans_low,
-  _psy_noisebias_long_low,
-  _psy_noise_suppress,
-  
-  _psy_compand_44,
-  _psy_compand_short_mapping,
-  _psy_compand_long_mapping,
-
-  {_noise_start_short_44_low,_noise_start_long_44_low},
-  {_noise_part_short_44,_noise_part_long_44},
-  _noise_thresh_44_2,
-
-  _psy_ath_floater,
-  _psy_ath_abs,
-  
-  _psy_lowpass_44_low,
-
-  _psy_global_44,
-  _global_mapping_44,
-  NULL,
-
-  _floor_books,
-  _floor,
-  _floor_short_mapping_44_low,
-  _floor_long_mapping_44_low,
-
   _mapres_template_44_uncoupled
 };
 
-ve_setup_data_template ve_setup_XX_stereo={
+static const ve_setup_data_template ve_setup_XX_stereo={
   2,
   rate_mapping_X,
   quality_mapping_8,
@@ -232,7 +129,7 @@
   2,
   0,
   8000,
-  
+
   blocksize_8,
   blocksize_8,
 
@@ -250,7 +147,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -257,11 +154,11 @@
 
   {_noise_start_8,_noise_start_8},
   {_noise_part_8,_noise_part_8},
-  _noise_thresh_44_2,
+  _noise_thresh_5only,
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_8,
 
   _psy_global_44,
@@ -270,13 +167,13 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_8,
-  NULL,
 
   _mapres_template_8_stereo
 };
 
-ve_setup_data_template ve_setup_XX_uncoupled={
+static const ve_setup_data_template ve_setup_XX_uncoupled={
   2,
   rate_mapping_X,
   quality_mapping_8,
@@ -283,7 +180,7 @@
   -1,
   0,
   8000,
-  
+
   blocksize_8,
   blocksize_8,
 
@@ -301,7 +198,7 @@
   NULL,
   NULL,
   _psy_noise_suppress,
-  
+
   _psy_compand_8,
   _psy_compand_8_mapping,
   NULL,
@@ -308,11 +205,11 @@
 
   {_noise_start_8,_noise_start_8},
   {_noise_part_8,_noise_part_8},
-  _noise_thresh_44_2,
+  _noise_thresh_5only,
 
   _psy_ath_floater_8,
   _psy_ath_abs_8,
-  
+
   _psy_lowpass_8,
 
   _psy_global_44,
@@ -321,9 +218,8 @@
 
   _floor_books,
   _floor,
+  1,
   _floor_mapping_8,
-  NULL,
 
   _mapres_template_8_uncoupled
 };
-
--- a/sys/src/cmd/audio/libvorbis/os.h
+++ b/sys/src/cmd/audio/libvorbis/os.h
@@ -7,16 +7,20 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os.h,v 1.32 2002/07/11 06:40:49 xiphmont Exp $
+ last mod: $Id: os.h 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <math.h>
 #include <ogg/os_types.h>
 
@@ -29,8 +33,12 @@
 #    define STIN static __inline__
 #  elif _WIN32
 #    define STIN static __inline
-#else
-#  define STIN static
+#  else
+#    define STIN static
+#  endif
+
+#ifdef DJGPP
+#  define rint(x)   (floor((x)+0.5f))
 #endif
 
 #ifndef M_PI
@@ -37,15 +45,20 @@
 #  define M_PI (3.1415926536f)
 #endif
 
+#if defined(_WIN32) && !defined(__SYMBIAN32__)
+#  include <malloc.h>
+#  define rint(x)   (floor((x)+0.5f))
+#  define NO_FLOAT_MATH_LIB
+#  define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
+#endif
+
 #ifndef rint
 #define rint(x)   (floor((x)+0.5f))
 #endif
 
-#ifdef _WIN32
-#  include <malloc.h>
-#  define rint(x)   (floor((x)+0.5f)) 
-#  define NO_FLOAT_MATH_LIB
-#  define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
+#if defined(__SYMBIAN32__) && defined(__WINS__)
+void *_alloca(size_t size);
+#  define alloca _alloca
 #endif
 
 #ifndef FAST_HYPOT
@@ -70,6 +83,8 @@
 #  define max(x,y)  ((x)<(y)?(y):(x))
 #endif
 
+
+/* Special i386 GCC implementation */
 #if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__)
 #  define VORBIS_FPU_CONTROL
 /* both GCC and MSVC are kinda stupid about rounding/casting to int.
@@ -85,10 +100,10 @@
   ogg_int16_t ret;
   ogg_int16_t temp;
   __asm__ __volatile__("fnstcw %0\n\t"
-	  "movw %0,%%dx\n\t"
-	  "orw $62463,%%dx\n\t"
-	  "movw %%dx,%1\n\t"
-	  "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");
+          "movw %0,%%dx\n\t"
+          "andw $62463,%%dx\n\t"
+          "movw %%dx,%1\n\t"
+          "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");
   *fpu=ret;
 }
 
@@ -104,38 +119,71 @@
   __asm__("fistl %0": "=m"(i) : "t"(f));
   return(i);
 }
-#endif
+#endif /* Special i386 GCC implementation */
 
 
-#if defined(_WIN32) && !defined(__GNUC__) && !defined(__BORLANDC__)
+/* MSVC inline assembly. 32 bit only; inline ASM isn't implemented in the
+ * 64 bit compiler and doesn't work on arm. */
+#if defined(_MSC_VER) && !defined(_WIN64) && \
+      !defined(_WIN32_WCE) && !defined(_M_ARM)
 #  define VORBIS_FPU_CONTROL
 
 typedef ogg_int16_t vorbis_fpu_control;
 
 static __inline int vorbis_ftoi(double f){
-	int i;
-	__asm{
-		fld f
-		fistp i
-	}
-	return i;
+        int i;
+        __asm{
+                fld f
+                fistp i
+        }
+        return i;
 }
 
 static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
+  (void)fpu;
 }
 
 static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
+  (void)fpu;
 }
 
-#endif
+#endif /* Special MSVC 32 bit implementation */
 
 
+/* Optimized code path for x86_64 builds. Uses SSE2 intrinsics. This can be
+   done safely because all x86_64 CPUs supports SSE2. */
+#if (defined(_MSC_VER) && defined(_WIN64)) || (defined(__GNUC__) && defined (__x86_64__))
+#  define VORBIS_FPU_CONTROL
+
+typedef ogg_int16_t vorbis_fpu_control;
+
+#include <emmintrin.h>
+static __inline int vorbis_ftoi(double f){
+        return _mm_cvtsd_si32(_mm_load_sd(&f));
+}
+
+static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
+  (void)fpu;
+}
+
+static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
+  (void)fpu;
+}
+
+#endif /* Special MSVC x64 implementation */
+
+
+/* If no special implementation was found for the current compiler / platform,
+   use the default implementation here: */
 #ifndef VORBIS_FPU_CONTROL
 
 typedef int vorbis_fpu_control;
 
 static int vorbis_ftoi(double f){
-  return (int)(f+.5);
+        /* Note: MSVC and GCC (at least on some systems) round towards zero, thus,
+           the floor() call is required to ensure correct roudning of
+           negative numbers */
+        return (int)floor(f+.5);
 }
 
 /* We don't have special code for this compiler/arch, so do it the slow way */
@@ -142,6 +190,6 @@
 #  define vorbis_fpu_setround(vorbis_fpu_control) {}
 #  define vorbis_fpu_restore(vorbis_fpu_control) {}
 
-#endif
+#endif /* default implementation */
 
 #endif /* _OS_H */
--- a/sys/src/cmd/audio/libvorbis/psy.c
+++ b/sys/src/cmd/audio/libvorbis/psy.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.74 2002/07/13 10:18:33 giles Exp $
+ last mod: $Id: psy.c 18077 2011-09-02 02:49:00Z giles $
 
  ********************************************************************/
 
@@ -30,7 +30,8 @@
 #include "misc.h"
 
 #define NEGINF -9999.f
-static double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
+static const double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
+static const double stereo_threshholds_limited[]={0.0, .5, 1.0, 1.5, 2.0, 2.5, 4.5, 8.5, 9e10};
 
 vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
   codec_setup_info *ci=vi->codec_setup;
@@ -66,13 +67,13 @@
 }
 
 static void min_curve(float *c,
-		       float *c2){
-  int i;  
+                       float *c2){
+  int i;
   for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
 }
 static void max_curve(float *c,
-		       float *c2){
-  int i;  
+                       float *c2){
+  int i;
   for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
 }
 
@@ -83,7 +84,7 @@
 }
 
 static float ***setup_tone_curves(float curveatt_dB[P_BANDS],float binHz,int n,
-				  float center_boost, float center_decay_rate){
+                                  float center_boost, float center_decay_rate){
   int i,j,k,m;
   float ath[EHMER_MAX];
   float workc[P_BANDS][P_LEVELS][EHMER_MAX];
@@ -100,16 +101,16 @@
        curve limiting (last step). */
 
     /* A half-band's settings must be valid over the whole band, and
-       it's better to mask too little than too much */  
+       it's better to mask too little than too much */
     int ath_offset=i*4;
     for(j=0;j<EHMER_MAX;j++){
       float min=999.;
       for(k=0;k<4;k++)
-	if(j+k+ath_offset<MAX_ATH){
-	  if(min>ATH[j+k+ath_offset])min=ATH[j+k+ath_offset];
-	}else{
-	  if(min>ATH[MAX_ATH-1])min=ATH[MAX_ATH-1];
-	}
+        if(j+k+ath_offset<MAX_ATH){
+          if(min>ATH[j+k+ath_offset])min=ATH[j+k+ath_offset];
+        }else{
+          if(min>ATH[MAX_ATH-1])min=ATH[MAX_ATH-1];
+        }
       ath[j]=min;
     }
 
@@ -119,14 +120,14 @@
       memcpy(workc[i][j+2],tonemasks[i][j],EHMER_MAX*sizeof(*tonemasks[i][j]));
     memcpy(workc[i][0],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
     memcpy(workc[i][1],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
-    
+
     /* apply centered curve boost/decay */
     for(j=0;j<P_LEVELS;j++){
       for(k=0;k<EHMER_MAX;k++){
-	float adj=center_boost+abs(EHMER_OFFSET-k)*center_decay_rate;
-	if(adj<0. && center_boost>0)adj=0.;
-	if(adj>0. && center_boost<0)adj=0.;
-	workc[i][j][k]+=adj;
+        float adj=center_boost+abs(EHMER_OFFSET-k)*center_decay_rate;
+        if(adj<0. && center_boost>0)adj=0.;
+        if(adj>0. && center_boost<0)adj=0.;
+        workc[i][j][k]+=adj;
       }
     }
 
@@ -140,7 +141,7 @@
     }
 
     /* Now limit the louder curves.
-       
+
        the idea is this: We don't know what the playback attenuation
        will be; 0dB SL moves every time the user twiddles the volume
        knob. So that means we have to use a single 'most pessimal' curve
@@ -148,7 +149,7 @@
        can be in (we assume) a range of ...+100dB] SL.  However, sounds
        20dB down will be in a range ...+80], 40dB down is from ...+60],
        etc... */
-    
+
     for(j=1;j<P_LEVELS;j++){
       min_curve(athc[j],athc[j-1]);
       min_curve(workc[i][j],athc[j]);
@@ -167,7 +168,7 @@
        composite of multiple octaves.  It also may mean that a single
        bin may span > an eighth of an octave and that the eighth
        octave values may also be composited. */
-    
+
     /* which octave curves will we be compositing? */
     bin=floor(fromOC(i*.5)/binHz);
     lo_curve=  ceil(toOC(bin*binHz+1)*2);
@@ -178,94 +179,95 @@
 
     for(m=0;m<P_LEVELS;m++){
       ret[i][m]=_ogg_malloc(sizeof(***ret)*(EHMER_MAX+2));
-      
+
       for(j=0;j<n;j++)brute_buffer[j]=999.;
-      
+
       /* render the curve into bins, then pull values back into curve.
-	 The point is that any inherent subsampling aliasing results in
-	 a safe minimum */
+         The point is that any inherent subsampling aliasing results in
+         a safe minimum */
       for(k=lo_curve;k<=hi_curve;k++){
-	int l=0;
+        int l=0;
 
-	for(j=0;j<EHMER_MAX;j++){
-	  int lo_bin= fromOC(j*.125+k*.5-2.0625)/binHz;
-	  int hi_bin= fromOC(j*.125+k*.5-1.9375)/binHz+1;
-	  
-	  if(lo_bin<0)lo_bin=0;
-	  if(lo_bin>n)lo_bin=n;
-	  if(lo_bin<l)l=lo_bin;
-	  if(hi_bin<0)hi_bin=0;
-	  if(hi_bin>n)hi_bin=n;
+        for(j=0;j<EHMER_MAX;j++){
+          int lo_bin= fromOC(j*.125+k*.5-2.0625)/binHz;
+          int hi_bin= fromOC(j*.125+k*.5-1.9375)/binHz+1;
 
-	  for(;l<hi_bin && l<n;l++)
-	    if(brute_buffer[l]>workc[k][m][j])
-	      brute_buffer[l]=workc[k][m][j];
-	}
+          if(lo_bin<0)lo_bin=0;
+          if(lo_bin>n)lo_bin=n;
+          if(lo_bin<l)l=lo_bin;
+          if(hi_bin<0)hi_bin=0;
+          if(hi_bin>n)hi_bin=n;
 
-	for(;l<n;l++)
-	  if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
-	    brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+          for(;l<hi_bin && l<n;l++)
+            if(brute_buffer[l]>workc[k][m][j])
+              brute_buffer[l]=workc[k][m][j];
+        }
 
+        for(;l<n;l++)
+          if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
+            brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+
       }
 
       /* be equally paranoid about being valid up to next half ocatve */
       if(i+1<P_BANDS){
-	int l=0;
-	k=i+1;
-	for(j=0;j<EHMER_MAX;j++){
-	  int lo_bin= fromOC(j*.125+i*.5-2.0625)/binHz;
-	  int hi_bin= fromOC(j*.125+i*.5-1.9375)/binHz+1;
-	  
-	  if(lo_bin<0)lo_bin=0;
-	  if(lo_bin>n)lo_bin=n;
-	  if(lo_bin<l)l=lo_bin;
-	  if(hi_bin<0)hi_bin=0;
-	  if(hi_bin>n)hi_bin=n;
+        int l=0;
+        k=i+1;
+        for(j=0;j<EHMER_MAX;j++){
+          int lo_bin= fromOC(j*.125+i*.5-2.0625)/binHz;
+          int hi_bin= fromOC(j*.125+i*.5-1.9375)/binHz+1;
 
-	  for(;l<hi_bin && l<n;l++)
-	    if(brute_buffer[l]>workc[k][m][j])
-	      brute_buffer[l]=workc[k][m][j];
-	}
+          if(lo_bin<0)lo_bin=0;
+          if(lo_bin>n)lo_bin=n;
+          if(lo_bin<l)l=lo_bin;
+          if(hi_bin<0)hi_bin=0;
+          if(hi_bin>n)hi_bin=n;
 
-	for(;l<n;l++)
-	  if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
-	    brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+          for(;l<hi_bin && l<n;l++)
+            if(brute_buffer[l]>workc[k][m][j])
+              brute_buffer[l]=workc[k][m][j];
+        }
 
+        for(;l<n;l++)
+          if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
+            brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+
       }
 
 
       for(j=0;j<EHMER_MAX;j++){
-	int bin=fromOC(j*.125+i*.5-2.)/binHz;
-	if(bin<0){
-	  ret[i][m][j+2]=-999.;
-	}else{
-	  if(bin>=n){
-	    ret[i][m][j+2]=-999.;
-	  }else{
-	    ret[i][m][j+2]=brute_buffer[bin];
-	  }
-	}
+        int bin=fromOC(j*.125+i*.5-2.)/binHz;
+        if(bin<0){
+          ret[i][m][j+2]=-999.;
+        }else{
+          if(bin>=n){
+            ret[i][m][j+2]=-999.;
+          }else{
+            ret[i][m][j+2]=brute_buffer[bin];
+          }
+        }
       }
 
       /* add fenceposts */
       for(j=0;j<EHMER_OFFSET;j++)
-	if(ret[i][m][j+2]>-200.f)break;  
+        if(ret[i][m][j+2]>-200.f)break;
       ret[i][m][0]=j;
-      
+
       for(j=EHMER_MAX-1;j>EHMER_OFFSET+1;j--)
-	if(ret[i][m][j+2]>-200.f)
-	  break;
+        if(ret[i][m][j+2]>-200.f)
+          break;
       ret[i][m][1]=j;
 
     }
   }
+
   free(brute_buffer);
   return(ret);
 }
 
 void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
-		  vorbis_info_psy_global *gi,int n,long rate){
-  long i,j,lo=-99,hi=0;
+                  vorbis_info_psy_global *gi,int n,long rate){
+  long i,j,lo=-99,hi=1;
   long maxoc;
   memset(p,0,sizeof(*p));
 
@@ -283,6 +285,12 @@
   p->n=n;
   p->rate=rate;
 
+  /* AoTuV HF weighting */
+  p->m_val = 1.;
+  if(rate < 26000) p->m_val = 0;
+  else if(rate < 38000) p->m_val = .94;   /* 32kHz */
+  else if(rate > 46000) p->m_val = 1.275; /* 48kHz */
+
   /* set up the lookups for a given blocksize and sample rate */
 
   for(i=0,j=0;i<MAX_ATH-1;i++){
@@ -297,17 +305,21 @@
     }
   }
 
+  for(;j<n;j++){
+    p->ath[j]=p->ath[j-1];
+  }
+
   for(i=0;i<n;i++){
-    float bark=toBARK(rate/(2*n)*i); 
+    float bark=toBARK(rate/(2*n)*i);
 
-    for(;lo+vi->noisewindowlomin<i && 
-	  toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++);
-    
-    for(;hi<n && (hi<i+vi->noisewindowhimin ||
-	  toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
-    
-    p->bark[i]=(lo<<16)+hi;
+    for(;lo+vi->noisewindowlomin<i &&
+          toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++);
 
+    for(;hi<=n && (hi<i+vi->noisewindowhimin ||
+          toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
+
+    p->bark[i]=((lo-1)<<16)+(hi-1);
+
   }
 
   for(i=0;i<n;i++)
@@ -314,28 +326,28 @@
     p->octave[i]=toOC((i+.25f)*.5*rate/n)*(1<<(p->shiftoc+1))+.5f;
 
   p->tonecurves=setup_tone_curves(vi->toneatt,rate*.5/n,n,
-				  vi->tone_centerboost,vi->tone_decay);
-  
+                                  vi->tone_centerboost,vi->tone_decay);
+
   /* set up rolling noise median */
   p->noiseoffset=_ogg_malloc(P_NOISECURVES*sizeof(*p->noiseoffset));
   for(i=0;i<P_NOISECURVES;i++)
     p->noiseoffset[i]=_ogg_malloc(n*sizeof(**p->noiseoffset));
-  
+
   for(i=0;i<n;i++){
     float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
     int inthalfoc;
     float del;
-    
+
     if(halfoc<0)halfoc=0;
     if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
     inthalfoc=(int)halfoc;
     del=halfoc-inthalfoc;
-    
+
     for(j=0;j<P_NOISECURVES;j++)
       p->noiseoffset[j][i]=
-	p->vi->noiseoff[j][inthalfoc]*(1.-del) + 
-	p->vi->noiseoff[j][inthalfoc+1]*del;
-    
+        p->vi->noiseoff[j][inthalfoc]*(1.-del) +
+        p->vi->noiseoff[j][inthalfoc+1]*del;
+
   }
 #if 0
   {
@@ -355,10 +367,10 @@
     if(p->bark)_ogg_free(p->bark);
     if(p->tonecurves){
       for(i=0;i<P_BANDS;i++){
-	for(j=0;j<P_LEVELS;j++){
-	  _ogg_free(p->tonecurves[i][j]);
-	}
-	_ogg_free(p->tonecurves[i]);
+        for(j=0;j<P_LEVELS;j++){
+          _ogg_free(p->tonecurves[i][j]);
+        }
+        _ogg_free(p->tonecurves[i]);
       }
       _ogg_free(p->tonecurves);
     }
@@ -374,10 +386,10 @@
 
 /* octave/(8*eighth_octave_lines) x scale and dB y scale */
 static void seed_curve(float *seed,
-		       const float **curves,
-		       float amp,
-		       int oc, int n,
-		       int linesper,float dBoffset){
+                       const float **curves,
+                       float amp,
+                       int oc, int n,
+                       int linesper,float dBoffset){
   int i,post1;
   int seedptr;
   const float *posts,*curve;
@@ -401,11 +413,11 @@
 }
 
 static void seed_loop(vorbis_look_psy *p,
-		      const float ***curves,
-		      const float *f, 
-		      const float *flr,
-		      float *seed,
-		      float specmax){
+                      const float ***curves,
+                      const float *f,
+                      const float *flr,
+                      float *seed,
+                      float specmax){
   vorbis_info_psy *vi=p->vi;
   long n=p->n,i;
   float dBoffset=vi->max_curve_dB-specmax;
@@ -419,7 +431,7 @@
       i++;
       if(f[i]>max)max=f[i];
     }
-    
+
     if(max+6.f>flr[i]){
       oc=oc>>p->shiftoc;
 
@@ -427,12 +439,12 @@
       if(oc<0)oc=0;
 
       seed_curve(seed,
-		 curves[oc],
-		 max,
-		 p->octave[i]-p->firstoc,
-		 p->total_octave_lines,
-		 p->eighth_octave_lines,
-		 dBoffset);
+                 curves[oc],
+                 max,
+                 p->octave[i]-p->firstoc,
+                 p->total_octave_lines,
+                 p->eighth_octave_lines,
+                 dBoffset);
     }
   }
 }
@@ -450,24 +462,24 @@
       ampstack[stack++]=seeds[i];
     }else{
       while(1){
-	if(seeds[i]<ampstack[stack-1]){
-	  posstack[stack]=i;
-	  ampstack[stack++]=seeds[i];
-	  break;
-	}else{
-	  if(i<posstack[stack-1]+linesper){
-	    if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] &&
-	       i<posstack[stack-2]+linesper){
-	      /* we completely overlap, making stack-1 irrelevant.  pop it */
-	      stack--;
-	      continue;
-	    }
-	  }
-	  posstack[stack]=i;
-	  ampstack[stack++]=seeds[i];
-	  break;
+        if(seeds[i]<ampstack[stack-1]){
+          posstack[stack]=i;
+          ampstack[stack++]=seeds[i];
+          break;
+        }else{
+          if(i<posstack[stack-1]+linesper){
+            if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] &&
+               i<posstack[stack-2]+linesper){
+              /* we completely overlap, making stack-1 irrelevant.  pop it */
+              stack--;
+              continue;
+            }
+          }
+          posstack[stack]=i;
+          ampstack[stack++]=seeds[i];
+          break;
 
-	}
+        }
       }
     }
   }
@@ -481,25 +493,24 @@
       endpos=posstack[i+1];
     }else{
       endpos=posstack[i]+linesper+1; /* +1 is important, else bin 0 is
-					discarded in short frames */
+                                        discarded in short frames */
     }
     if(endpos>n)endpos=n;
     for(;pos<endpos;pos++)
       seeds[pos]=ampstack[i];
   }
-  
+
   /* there.  Linear time.  I now remember this was on a problem set I
      had in Grad Skool... I didn't solve it at the time ;-) */
-  free(ampstack);
   free(posstack);
-  return;
+  free(ampstack);
 }
 
 /* bleaugh, this is more complicated than it needs to be */
 #include<stdio.h>
 static void max_seeds(vorbis_look_psy *p,
-		      float *seed,
-		      float *flr){
+                      float *seed,
+                      float *flr){
   long   n=p->total_octave_lines;
   int    linesper=p->eighth_octave_lines;
   long   linpos=0;
@@ -506,7 +517,7 @@
   long   pos;
 
   seed_chase(seed,linesper,n); /* for masking */
- 
+
   pos=p->octave[0]-p->firstoc-(linesper>>1);
 
   while(linpos+1<p->n){
@@ -516,20 +527,20 @@
     while(pos+1<=end){
       pos++;
       if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF)
-	minV=seed[pos];
+        minV=seed[pos];
     }
-    
+
     end=pos+p->firstoc;
     for(;linpos<p->n && p->octave[linpos]<=end;linpos++)
       if(flr[linpos]<minV)flr[linpos]=minV;
   }
-  
+
   {
     float minV=seed[p->total_octave_lines-1];
     for(;linpos<p->n;linpos++)
       if(flr[linpos]<minV)flr[linpos]=minV;
   }
-  
+
 }
 
 static void bark_noise_hybridmp(int n,const long *b,
@@ -537,245 +548,177 @@
                                 float *noise,
                                 const float offset,
                                 const int fixed){
-  
-  float *N=malloc((n+1)*sizeof(*N));
-  float *X=malloc((n+1)*sizeof(*N));
-  float *XX=malloc((n+1)*sizeof(*N));
-  float *Y=malloc((n+1)*sizeof(*N));
-  float *XY=malloc((n+1)*sizeof(*N));
 
+  float *N=malloc(5*n*sizeof(*N));
+  float *X=&N[n];
+  float *XX=&N[2*n];
+  float *Y=&N[3*n];
+  float *XY=&N[4*n];
+
   float tN, tX, tXX, tY, tXY;
-  float fi;
   int i;
 
   int lo, hi;
-  float R, A, B, D;
-  
+  float R=0.f;
+  float A=0.f;
+  float B=0.f;
+  float D=1.f;
+  float w, x, y;
+
   tN = tX = tXX = tY = tXY = 0.f;
-  for (i = 0, fi = 0.f; i < n; i++, fi += 1.f) {
-    float w, x, y;
-    
-    x = fi;
+
+  y = f[0] + offset;
+  if (y < 1.f) y = 1.f;
+
+  w = y * y * .5;
+
+  tN += w;
+  tX += w;
+  tY += w * y;
+
+  N[0] = tN;
+  X[0] = tX;
+  XX[0] = tXX;
+  Y[0] = tY;
+  XY[0] = tXY;
+
+  for (i = 1, x = 1.f; i < n; i++, x += 1.f) {
+
     y = f[i] + offset;
     if (y < 1.f) y = 1.f;
+
     w = y * y;
-    N[i] = tN;
-    X[i] = tX;
-    XX[i] = tXX;
-    Y[i] = tY;
-    XY[i] = tXY;
+
     tN += w;
     tX += w * x;
     tXX += w * x * x;
     tY += w * y;
     tXY += w * x * y;
+
+    N[i] = tN;
+    X[i] = tX;
+    XX[i] = tXX;
+    Y[i] = tY;
+    XY[i] = tXY;
   }
-  N[i] = tN;
-  X[i] = tX;
-  XX[i] = tXX;
-  Y[i] = tY;
-  XY[i] = tXY;
-  
-  for (i = 0, fi = 0.f;; i++, fi += 1.f) {
-    
+
+  for (i = 0, x = 0.f;; i++, x += 1.f) {
+
     lo = b[i] >> 16;
     if( lo>=0 ) break;
     hi = b[i] & 0xffff;
-    
+
     tN = N[hi] + N[-lo];
     tX = X[hi] - X[-lo];
     tXX = XX[hi] + XX[-lo];
-    tY = Y[hi] + Y[-lo];    
+    tY = Y[hi] + Y[-lo];
     tXY = XY[hi] - XY[-lo];
-    
+
     A = tY * tXX - tX * tXY;
     B = tN * tXY - tX * tY;
     D = tN * tXX - tX * tX;
-    R = (A + fi * B) / D;
+    R = (A + x * B) / D;
     if (R < 0.f)
       R = 0.f;
-    
+
     noise[i] = R - offset;
   }
-  
-  for ( ; hi < n; i++, fi += 1.f) {
-    
+
+  for ( ;; i++, x += 1.f) {
+
     lo = b[i] >> 16;
     hi = b[i] & 0xffff;
-    
+    if(hi>=n)break;
+
     tN = N[hi] - N[lo];
     tX = X[hi] - X[lo];
     tXX = XX[hi] - XX[lo];
     tY = Y[hi] - Y[lo];
     tXY = XY[hi] - XY[lo];
-    
+
     A = tY * tXX - tX * tXY;
     B = tN * tXY - tX * tY;
     D = tN * tXX - tX * tX;
-    R = (A + fi * B) / D;
+    R = (A + x * B) / D;
     if (R < 0.f) R = 0.f;
-    
+
     noise[i] = R - offset;
   }
-  for ( ; i < n; i++, fi += 1.f) {
-    
-    R = (A + fi * B) / D;
+  for ( ; i < n; i++, x += 1.f) {
+
+    R = (A + x * B) / D;
     if (R < 0.f) R = 0.f;
-    
+
     noise[i] = R - offset;
   }
-  
+
   if (fixed <= 0) {
-    free(N); free(X); free(XX); free(Y); free(XY);
+    free(N);
     return;
   }
-  for (i = 0, fi = 0.f; i < (fixed + 1) / 2; i++, fi += 1.f) {
+
+  for (i = 0, x = 0.f;; i++, x += 1.f) {
     hi = i + fixed / 2;
     lo = hi - fixed;
-    
+    if(lo>=0)break;
+
     tN = N[hi] + N[-lo];
     tX = X[hi] - X[-lo];
     tXX = XX[hi] + XX[-lo];
     tY = Y[hi] + Y[-lo];
     tXY = XY[hi] - XY[-lo];
-    
-    
+
+
     A = tY * tXX - tX * tXY;
     B = tN * tXY - tX * tY;
     D = tN * tXX - tX * tX;
-    R = (A + fi * B) / D;
+    R = (A + x * B) / D;
 
-    if (R > 0.f && R - offset < noise[i]) noise[i] = R - offset;
+    if (R - offset < noise[i]) noise[i] = R - offset;
   }
-  for ( ; hi < n; i++, fi += 1.f) {
-    
+  for ( ;; i++, x += 1.f) {
+
     hi = i + fixed / 2;
     lo = hi - fixed;
-    
+    if(hi>=n)break;
+
     tN = N[hi] - N[lo];
     tX = X[hi] - X[lo];
     tXX = XX[hi] - XX[lo];
     tY = Y[hi] - Y[lo];
     tXY = XY[hi] - XY[lo];
-    
+
     A = tY * tXX - tX * tXY;
     B = tN * tXY - tX * tY;
     D = tN * tXX - tX * tX;
-    R = (A + fi * B) / D;
-    
-    if (R > 0.f && R - offset < noise[i]) noise[i] = R - offset;
+    R = (A + x * B) / D;
+
+    if (R - offset < noise[i]) noise[i] = R - offset;
   }
-  for ( ; i < n; i++, fi += 1.f) {
-    R = (A + fi * B) / D;
-    if (R > 0.f && R - offset < noise[i]) noise[i] = R - offset;
+  for ( ; i < n; i++, x += 1.f) {
+    R = (A + x * B) / D;
+    if (R - offset < noise[i]) noise[i] = R - offset;
   }
-  free(N); free(X); free(XX); free(Y); free(XY);
-  return;
+  free(N);
 }
 
-static float FLOOR1_fromdB_INV_LOOKUP[256]={
-  0.F, 8.81683e+06F, 8.27882e+06F, 7.77365e+06F, 
-  7.29930e+06F, 6.85389e+06F, 6.43567e+06F, 6.04296e+06F, 
-  5.67422e+06F, 5.32798e+06F, 5.00286e+06F, 4.69759e+06F, 
-  4.41094e+06F, 4.14178e+06F, 3.88905e+06F, 3.65174e+06F, 
-  3.42891e+06F, 3.21968e+06F, 3.02321e+06F, 2.83873e+06F, 
-  2.66551e+06F, 2.50286e+06F, 2.35014e+06F, 2.20673e+06F, 
-  2.07208e+06F, 1.94564e+06F, 1.82692e+06F, 1.71544e+06F, 
-  1.61076e+06F, 1.51247e+06F, 1.42018e+06F, 1.33352e+06F, 
-  1.25215e+06F, 1.17574e+06F, 1.10400e+06F, 1.03663e+06F, 
-  973377.F, 913981.F, 858210.F, 805842.F, 
-  756669.F, 710497.F, 667142.F, 626433.F, 
-  588208.F, 552316.F, 518613.F, 486967.F, 
-  457252.F, 429351.F, 403152.F, 378551.F, 
-  355452.F, 333762.F, 313396.F, 294273.F, 
-  276316.F, 259455.F, 243623.F, 228757.F, 
-  214798.F, 201691.F, 189384.F, 177828.F, 
-  166977.F, 156788.F, 147221.F, 138237.F, 
-  129802.F, 121881.F, 114444.F, 107461.F, 
-  100903.F, 94746.3F, 88964.9F, 83536.2F, 
-  78438.8F, 73652.5F, 69158.2F, 64938.1F, 
-  60975.6F, 57254.9F, 53761.2F, 50480.6F, 
-  47400.3F, 44507.9F, 41792.0F, 39241.9F, 
-  36847.3F, 34598.9F, 32487.7F, 30505.3F, 
-  28643.8F, 26896.0F, 25254.8F, 23713.7F, 
-  22266.7F, 20908.0F, 19632.2F, 18434.2F, 
-  17309.4F, 16253.1F, 15261.4F, 14330.1F, 
-  13455.7F, 12634.6F, 11863.7F, 11139.7F, 
-  10460.0F, 9821.72F, 9222.39F, 8659.64F, 
-  8131.23F, 7635.06F, 7169.17F, 6731.70F, 
-  6320.93F, 5935.23F, 5573.06F, 5232.99F, 
-  4913.67F, 4613.84F, 4332.30F, 4067.94F, 
-  3819.72F, 3586.64F, 3367.78F, 3162.28F, 
-  2969.31F, 2788.13F, 2617.99F, 2458.24F, 
-  2308.24F, 2167.39F, 2035.14F, 1910.95F, 
-  1794.35F, 1684.85F, 1582.04F, 1485.51F, 
-  1394.86F, 1309.75F, 1229.83F, 1154.78F, 
-  1084.32F, 1018.15F, 956.024F, 897.687F, 
-  842.910F, 791.475F, 743.179F, 697.830F, 
-  655.249F, 615.265F, 577.722F, 542.469F, 
-  509.367F, 478.286F, 449.101F, 421.696F, 
-  395.964F, 371.803F, 349.115F, 327.812F, 
-  307.809F, 289.026F, 271.390F, 254.830F, 
-  239.280F, 224.679F, 210.969F, 198.096F, 
-  186.008F, 174.658F, 164.000F, 153.993F, 
-  144.596F, 135.773F, 127.488F, 119.708F, 
-  112.404F, 105.545F, 99.1046F, 93.0572F, 
-  87.3788F, 82.0469F, 77.0404F, 72.3394F, 
-  67.9252F, 63.7804F, 59.8885F, 56.2341F, 
-  52.8027F, 49.5807F, 46.5553F, 43.7144F, 
-  41.0470F, 38.5423F, 36.1904F, 33.9821F, 
-  31.9085F, 29.9614F, 28.1332F, 26.4165F, 
-  24.8045F, 23.2910F, 21.8697F, 20.5352F, 
-  19.2822F, 18.1056F, 17.0008F, 15.9634F, 
-  14.9893F, 14.0746F, 13.2158F, 12.4094F, 
-  11.6522F, 10.9411F, 10.2735F, 9.64662F, 
-  9.05798F, 8.50526F, 7.98626F, 7.49894F, 
-  7.04135F, 6.61169F, 6.20824F, 5.82941F, 
-  5.47370F, 5.13970F, 4.82607F, 4.53158F, 
-  4.25507F, 3.99542F, 3.75162F, 3.52269F, 
-  3.30774F, 3.10590F, 2.91638F, 2.73842F, 
-  2.57132F, 2.41442F, 2.26709F, 2.12875F, 
-  1.99885F, 1.87688F, 1.76236F, 1.65482F, 
-  1.55384F, 1.45902F, 1.36999F, 1.28640F, 
-  1.20790F, 1.13419F, 1.06499F, 1.F
-};
-
-void _vp_remove_floor(vorbis_look_psy *p,
-		      float *mdct,
-		      int *codedflr,
-		      float *residue,
-		      int sliding_lowpass){ 
-
-  int i,n=p->n;
- 
-  if(sliding_lowpass>n)sliding_lowpass=n;
-  
-  for(i=0;i<sliding_lowpass;i++){
-    residue[i]=
-      mdct[i]*FLOOR1_fromdB_INV_LOOKUP[codedflr[i]];
-  }
-
-  for(;i<n;i++)
-    residue[i]=0.;
-}
-
 void _vp_noisemask(vorbis_look_psy *p,
-		   float *logmdct, 
-		   float *logmask){
+                   float *logmdct,
+                   float *logmask){
 
   int i,n=p->n;
   float *work=malloc(n*sizeof(*work));
 
   bark_noise_hybridmp(n,p->bark,logmdct,logmask,
-		      140.,-1);
+                      140.,-1);
 
   for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
 
   bark_noise_hybridmp(n,p->bark,work,logmask,0.,
-		      p->vi->noisewindowfixed);
+                      p->vi->noisewindowfixed);
 
   for(i=0;i<n;i++)work[i]=logmdct[i]-work[i];
-  
+
 #if 0
   {
     static int seq=0;
@@ -784,16 +727,16 @@
     for(i=0;i<n;i++){
       work2[i]=logmask[i]+work[i];
     }
-    
+
     if(seq&1)
-      _analysis_output("medianR",seq/2,work,n,1,0,0);
+      _analysis_output("median2R",seq/2,work,n,1,0,0);
     else
-      _analysis_output("medianL",seq/2,work,n,1,0,0);
-    
+      _analysis_output("median2L",seq/2,work,n,1,0,0);
+
     if(seq&1)
-      _analysis_output("envelopeR",seq/2,work2,n,1,0,0);
+      _analysis_output("envelope2R",seq/2,work2,n,1,0,0);
     else
-      _analysis_output("enveloperL",seq/2,work2,n,1,0,0);
+      _analysis_output("envelope2L",seq/2,work2,n,1,0,0);
     seq++;
   }
 #endif
@@ -801,17 +744,17 @@
   for(i=0;i<n;i++){
     int dB=logmask[i]+.5;
     if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
+    if(dB<0)dB=0;
     logmask[i]= work[i]+p->vi->noisecompand[dB];
   }
   free(work);
-  return;
 }
 
 void _vp_tonemask(vorbis_look_psy *p,
-		  float *logfft,
-		  float *logmask,
-		  float global_specmax,
-		  float local_specmax){
+                  float *logfft,
+                  float *logmask,
+                  float global_specmax,
+                  float local_specmax){
 
   int i,n=p->n;
 
@@ -818,11 +761,11 @@
   float *seed=malloc(sizeof(*seed)*p->total_octave_lines);
   float att=local_specmax+p->vi->ath_adjatt;
   for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF;
-  
+
   /* set the ATH (floating below localmax, not global max by a
      specified att) */
   if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
-  
+
   for(i=0;i<n;i++)
     logmask[i]=p->ath[i]+att;
 
@@ -829,23 +772,64 @@
   /* tone masking */
   seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
   max_seeds(p,seed,logmask);
-
   free(seed);
-  return;
 }
 
 void _vp_offset_and_mix(vorbis_look_psy *p,
-			float *noise,
-			float *tone,
-			int offset_select,
-			float *logmask){
+                        float *noise,
+                        float *tone,
+                        int offset_select,
+                        float *logmask,
+                        float *mdct,
+                        float *logmdct){
   int i,n=p->n;
+  float de, coeffi, cx;/* AoTuV */
   float toneatt=p->vi->tone_masteratt[offset_select];
-  
+
+  cx = p->m_val;
+
   for(i=0;i<n;i++){
     float val= noise[i]+p->noiseoffset[offset_select][i];
     if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
     logmask[i]=max(val,tone[i]+toneatt);
+
+
+    /* AoTuV */
+    /** @ M1 **
+        The following codes improve a noise problem.
+        A fundamental idea uses the value of masking and carries out
+        the relative compensation of the MDCT.
+        However, this code is not perfect and all noise problems cannot be solved.
+        by Aoyumi @ 2004/04/18
+    */
+
+    if(offset_select == 1) {
+      coeffi = -17.2;       /* coeffi is a -17.2dB threshold */
+      val = val - logmdct[i];  /* val == mdct line value relative to floor in dB */
+
+      if(val > coeffi){
+        /* mdct value is > -17.2 dB below floor */
+
+        de = 1.0-((val-coeffi)*0.005*cx);
+        /* pro-rated attenuation:
+           -0.00 dB boost if mdct value is -17.2dB (relative to floor)
+           -0.77 dB boost if mdct value is 0dB (relative to floor)
+           -1.64 dB boost if mdct value is +17.2dB (relative to floor)
+           etc... */
+
+        if(de < 0) de = 0.0001;
+      }else
+        /* mdct value is <= -17.2 dB below floor */
+
+        de = 1.0-((val-coeffi)*0.0003*cx);
+      /* pro-rated attenuation:
+         +0.00 dB atten if mdct value is -17.2dB (relative to floor)
+         +0.45 dB atten if mdct value is -34.4dB (relative to floor)
+         etc... */
+
+      mdct[i] *= de;
+
+    }
   }
 }
 
@@ -862,283 +846,378 @@
   return(amp);
 }
 
-static void couple_lossless(float A, float B, 
-			    float *qA, float *qB){
-  int test1=fabs(*qA)>fabs(*qB);
-  test1-= fabs(*qA)<fabs(*qB);
-  
-  if(!test1)test1=((fabs(A)>fabs(B))<<1)-1;
-  if(test1==1){
-    *qB=(*qA>0.f?*qA-*qB:*qB-*qA);
-  }else{
-    float temp=*qB;  
-    *qB=(*qB>0.f?*qA-*qB:*qB-*qA);
-    *qA=temp;
-  }
+static float FLOOR1_fromdB_LOOKUP[256]={
+  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
+  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
+  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
+  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
+  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
+  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
+  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
+  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
+  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
+  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
+  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
+  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
+  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
+  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
+  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
+  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
+  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
+  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
+  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
+  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
+  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
+  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
+  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
+  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
+  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
+  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
+  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
+  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
+  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
+  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
+  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
+  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
+  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
+  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
+  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
+  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
+  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
+  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
+  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
+  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
+  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
+  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
+  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
+  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
+  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
+  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
+  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
+  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
+  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
+  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
+  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
+  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
+  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
+  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
+  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
+  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
+  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
+  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
+  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
+  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
+  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
+  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
+  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
+  0.82788260F, 0.88168307F, 0.9389798F, 1.F,
+};
 
-  if(*qB>fabs(*qA)*1.9999f){
-    *qB= -fabs(*qA)*2.f;
-    *qA= -*qA;
+/* this is for per-channel noise normalization */
+static int apsort(const void *a, const void *b){
+  float f1=**(float**)a;
+  float f2=**(float**)b;
+  return (f1<f2)-(f1>f2);
+}
+
+static void flag_lossless(int limit, float prepoint, float postpoint, float *mdct,
+                         float *floor, int *flag, int i, int jn){
+  int j;
+  for(j=0;j<jn;j++){
+    float point = j>=limit-i ? postpoint : prepoint;
+    float r = fabs(mdct[j])/floor[j];
+    if(r<point)
+      flag[j]=0;
+    else
+      flag[j]=1;
   }
 }
 
-static float hypot_lookup[32]={
-  -0.009935, -0.011245, -0.012726, -0.014397, 
-  -0.016282, -0.018407, -0.020800, -0.023494, 
-  -0.026522, -0.029923, -0.033737, -0.038010, 
-  -0.042787, -0.048121, -0.054064, -0.060671, 
-  -0.068000, -0.076109, -0.085054, -0.094892, 
-  -0.105675, -0.117451, -0.130260, -0.144134, 
-  -0.159093, -0.175146, -0.192286, -0.210490, 
-  -0.229718, -0.249913, -0.271001, -0.292893};
+/* Overload/Side effect: On input, the *q vector holds either the
+   quantized energy (for elements with the flag set) or the absolute
+   values of the *r vector (for elements with flag unset).  On output,
+   *q holds the quantized energy for all elements */
+static float noise_normalize(vorbis_look_psy *p, int limit, float *r, float *q, float *f, int *flags, float acc, int i, int n, int *out){
 
-static void precomputed_couple_point(float premag,
-				     int floorA,int floorB,
-				     float *mag, float *ang){
-  
-  int test=(floorA>floorB)-1;
-  int offset=31-abs(floorA-floorB);
-  float floormag=hypot_lookup[((offset<0)-1)&offset]+1.f;
+  vorbis_info_psy *vi=p->vi;
+  float **sort = malloc(n*sizeof(*sort));
+  int j,count=0;
+  int start = (vi->normal_p ? vi->normal_start-i : n);
+  if(start>n)start=n;
 
-  floormag*=FLOOR1_fromdB_INV_LOOKUP[(floorB&test)|(floorA&(~test))];
+  /* force classic behavior where only energy in the current band is considered */
+  acc=0.f;
 
-  *mag=premag*floormag;
-  *ang=0.f;
-}
+  /* still responsible for populating *out where noise norm not in
+     effect.  There's no need to [re]populate *q in these areas */
+  for(j=0;j<start;j++){
+    if(!flags || !flags[j]){ /* lossless coupling already quantized.
+                                Don't touch; requantizing based on
+                                energy would be incorrect. */
+      float ve = q[j]/f[j];
+      if(r[j]<0)
+        out[j] = -rint(sqrt(ve));
+      else
+        out[j] = rint(sqrt(ve));
+    }
+  }
 
-/* just like below, this is currently set up to only do
-   single-step-depth coupling.  Otherwise, we'd have to do more
-   copying (which will be inevitable later) */
-
-/* doing the real circular magnitude calculation is audibly superior
-   to (A+B)/sqrt(2) */
-static float dipole_hypot(float a, float b){
-  if(a>0.){
-    if(b>0.)return sqrt(a*a+b*b);
-    if(a>-b)return sqrt(a*a-b*b);
-    return -sqrt(b*b-a*a);
+  /* sort magnitudes for noise norm portion of partition */
+  for(;j<n;j++){
+    if(!flags || !flags[j]){ /* can't noise norm elements that have
+                                already been loslessly coupled; we can
+                                only account for their energy error */
+      float ve = q[j]/f[j];
+      /* Despite all the new, more capable coupling code, for now we
+         implement noise norm as it has been up to this point. Only
+         consider promotions to unit magnitude from 0.  In addition
+         the only energy error counted is quantizations to zero. */
+      /* also-- the original point code only applied noise norm at > pointlimit */
+      if(ve<.25f && (!flags || j>=limit-i)){
+        acc += ve;
+        sort[count++]=q+j; /* q is fabs(r) for unflagged element */
+      }else{
+        /* For now: no acc adjustment for nonzero quantization.  populate *out and q as this value is final. */
+        if(r[j]<0)
+          out[j] = -rint(sqrt(ve));
+        else
+          out[j] = rint(sqrt(ve));
+        q[j] = out[j]*out[j]*f[j];
+      }
+    }/* else{
+        again, no energy adjustment for error in nonzero quant-- for now
+        }*/
   }
-  if(b<0.)return -sqrt(a*a+b*b);
-  if(-a>b)return -sqrt(a*a-b*b);
-  return sqrt(b*b-a*a);
-}
-static float round_hypot(float a, float b){
-  if(a>0.){
-    if(b>0.)return sqrt(a*a+b*b);
-    if(a>-b)return sqrt(a*a+b*b);
-    return -sqrt(b*b+a*a);
-  }
-  if(b<0.)return -sqrt(a*a+b*b);
-  if(-a>b)return -sqrt(a*a+b*b);
-  return sqrt(b*b+a*a);
-}
 
-/* revert to round hypot for now */
-float **_vp_quantize_couple_memo(vorbis_block *vb,
-				 vorbis_info_psy_global *g,
-				 vorbis_look_psy *p,
-				 vorbis_info_mapping0 *vi,
-				 float **mdct){
-  
-  int i,j,n=p->n;
-  float **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
-  int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
-  
-  for(i=0;i<vi->coupling_steps;i++){
-    float *mdctM=mdct[vi->coupling_mag[i]];
-    float *mdctA=mdct[vi->coupling_ang[i]];
-    ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
-    for(j=0;j<limit;j++)
-      ret[i][j]=dipole_hypot(mdctM[j],mdctA[j]);
-    for(;j<n;j++)
-      ret[i][j]=round_hypot(mdctM[j],mdctA[j]);
+  if(count){
+    /* noise norm to do */
+    qsort(sort,count,sizeof(*sort),apsort);
+    for(j=0;j<count;j++){
+      int k=sort[j]-q;
+      if(acc>=vi->normal_thresh){
+        out[k]=unitnorm(r[k]);
+        acc-=1.f;
+        q[k]=f[k];
+      }else{
+        out[k]=0;
+        q[k]=0.f;
+      }
+    }
   }
 
-  return(ret);
+  free(sort);
+  return acc;
 }
 
-/* this is for per-channel noise normalization */
-static int apsort(const void *a, const void *b){
-  if(fabs(**(float **)a)>fabs(**(float **)b))return -1;
-  return 1;
-}
+/* Noise normalization, quantization and coupling are not wholly
+   seperable processes in depth>1 coupling. */
+void _vp_couple_quantize_normalize(int blobno,
+                                   vorbis_info_psy_global *g,
+                                   vorbis_look_psy *p,
+                                   vorbis_info_mapping0 *vi,
+                                   float **mdct,
+                                   int   **iwork,
+                                   int    *nonzero,
+                                   int     sliding_lowpass,
+                                   int     ch){
 
-int **_vp_quantize_couple_sort(vorbis_block *vb,
-			       vorbis_look_psy *p,
-			       vorbis_info_mapping0 *vi,
-			       float **mags){
+  int i;
+  int n = p->n;
+  int partition=(p->vi->normal_p ? p->vi->normal_partition : 16);
+  int limit = g->coupling_pointlimit[p->vi->blockflag][blobno];
+  float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
+  float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
+#if 0
+  float de=0.1*p->m_val; /* a blend of the AoTuV M2 and M3 code here and below */
+#endif
 
+  /* mdct is our raw mdct output, floor not removed. */
+  /* inout passes in the ifloor, passes back quantized result */
 
-  if(p->vi->normal_point_p){
-    int i,j,k,n=p->n;
-    int **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
-    int partition=p->vi->normal_partition;
-    float **work=malloc(sizeof(*work)*partition);
-    
-    for(i=0;i<vi->coupling_steps;i++){
-      ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
-      
-      for(j=0;j<n;j+=partition){
-	for(k=0;k<partition;k++)work[k]=mags[i]+k+j;
-	qsort(work,partition,sizeof(*work),apsort);
-	for(k=0;k<partition;k++)ret[i][k+j]=work[k]-mags[i];
-      }
-    }
-    free(work);
-    return(ret);
-  }
-  return(NULL);
-}
+  /* unquantized energy (negative indicates amplitude has negative sign) */
+  float **raw = malloc(ch*sizeof(*raw));
 
-void _vp_noise_normalize_sort(vorbis_look_psy *p,
-			      float *magnitudes,int *sortedindex){
-  int i,j,n=p->n;
-  vorbis_info_psy *vi=p->vi;
-  int partition=vi->normal_partition;
-  float **work=malloc(sizeof(*work)*partition);
-  int start=vi->normal_start;
+  /* dual pupose; quantized energy (if flag set), othersize fabs(raw) */
+  float **quant = malloc(ch*sizeof(*quant));
 
-  for(j=start;j<n;j+=partition){
-    if(j+partition>n)partition=n-j;
-    for(i=0;i<partition;i++)work[i]=magnitudes+i+j;
-    qsort(work,partition,sizeof(*work),apsort);
-    for(i=0;i<partition;i++){
-      sortedindex[i+j-start]=work[i]-magnitudes;
-    }
-  }
+  /* floor energy */
+  float **floor = malloc(ch*sizeof(*floor));
 
-  free(work);
-  return;
-}
+  /* flags indicating raw/quantized status of elements in raw vector */
+  int   **flag  = malloc(ch*sizeof(*flag));
 
-void _vp_noise_normalize(vorbis_look_psy *p,
-			 float *in,float *out,int *sortedindex){
-  int flag=0,i,j=0,n=p->n;
-  vorbis_info_psy *vi=p->vi;
-  int partition=vi->normal_partition;
-  int start=vi->normal_start;
+  /* non-zero flag working vector */
+  int    *nz    = malloc(ch*sizeof(*nz));
 
-  if(start>n)start=n;
+  /* energy surplus/defecit tracking */
+  float  *acc   = malloc((ch+vi->coupling_steps)*sizeof(*acc));
 
-  if(vi->normal_channel_p){
-    for(;j<start;j++)
-      out[j]=rint(in[j]);
-    
-    for(;j+partition<=n;j+=partition){
-      float acc=0.;
-      int k;
-      
-      for(i=j;i<j+partition;i++)
-	acc+=in[i]*in[i];
-      
-      for(i=0;i<partition;i++){
-	k=sortedindex[i+j-start];
-	
-	if(in[k]*in[k]>=.25f){
-	  out[k]=rint(in[k]);
-	  acc-=in[k]*in[k];
-	  flag=1;
-	}else{
-	  if(acc<vi->normal_thresh)break;
-	  out[k]=unitnorm(in[k]);
-	  acc-=1.;
-	}
-      }
-      
-      for(;i<partition;i++){
-	k=sortedindex[i+j-start];
-	out[k]=0.;
-      }
-    }
+  /* The threshold of a stereo is changed with the size of n */
+  if(n > 1000)
+    postpoint=stereo_threshholds_limited[g->coupling_postpointamp[blobno]];
+
+  raw[0]   = malloc(ch*partition*sizeof(**raw));
+  quant[0] = malloc(ch*partition*sizeof(**quant));
+  floor[0] = malloc(ch*partition*sizeof(**floor));
+  flag[0]  = malloc(ch*partition*sizeof(**flag));
+
+  for(i=1;i<ch;i++){
+    raw[i]   = &raw[0][partition*i];
+    quant[i] = &quant[0][partition*i];
+    floor[i] = &floor[0][partition*i];
+    flag[i]  = &flag[0][partition*i];
   }
-  
-  for(;j<n;j++)
-    out[j]=rint(in[j]);
-  
-}
+  for(i=0;i<ch+vi->coupling_steps;i++)
+    acc[i]=0.f;
 
-void _vp_couple(int blobno,
-		vorbis_info_psy_global *g,
-		vorbis_look_psy *p,
-		vorbis_info_mapping0 *vi,
-		float **res,
-		float **mag_memo,
-		int   **mag_sort,
-		int   **ifloor,
-		int   *nonzero,
-		int  sliding_lowpass){
+  for(i=0;i<n;i+=partition){
+    int k,j,jn = partition > n-i ? n-i : partition;
+    int step,track = 0;
 
-  int i,j,k,n=p->n;
+    memcpy(nz,nonzero,sizeof(*nz)*ch);
 
-  /* perform any requested channel coupling */
-  /* point stereo can only be used in a first stage (in this encoder)
-     because of the dependency on floor lookups */
-  for(i=0;i<vi->coupling_steps;i++){
+    /* prefill */
+    memset(flag[0],0,ch*partition*sizeof(**flag));
+    for(k=0;k<ch;k++){
+      int *iout = &iwork[k][i];
+      if(nz[k]){
 
-    /* once we're doing multistage coupling in which a channel goes
-       through more than one coupling step, the floor vector
-       magnitudes will also have to be recalculated an propogated
-       along with PCM.  Right now, we're not (that will wait until 5.1
-       most likely), so the code isn't here yet. The memory management
-       here is all assuming single depth couplings anyway. */
+        for(j=0;j<jn;j++)
+          floor[k][j] = FLOOR1_fromdB_LOOKUP[iout[j]];
 
-    /* make sure coupling a zero and a nonzero channel results in two
-       nonzero channels. */
-    if(nonzero[vi->coupling_mag[i]] ||
-       nonzero[vi->coupling_ang[i]]){
-     
+        flag_lossless(limit,prepoint,postpoint,&mdct[k][i],floor[k],flag[k],i,jn);
 
-      float *rM=res[vi->coupling_mag[i]];
-      float *rA=res[vi->coupling_ang[i]];
-      float *qM=rM+n;
-      float *qA=rA+n;
-      int *floorM=ifloor[vi->coupling_mag[i]];
-      int *floorA=ifloor[vi->coupling_ang[i]];
-      float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
-      float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
-      int partition=(p->vi->normal_point_p?p->vi->normal_partition:p->n);
-      int limit=g->coupling_pointlimit[p->vi->blockflag][blobno];
-      int pointlimit=limit;
+        for(j=0;j<jn;j++){
+          quant[k][j] = raw[k][j] = mdct[k][i+j]*mdct[k][i+j];
+          if(mdct[k][i+j]<0.f) raw[k][j]*=-1.f;
+          floor[k][j]*=floor[k][j];
+        }
 
-      nonzero[vi->coupling_mag[i]]=1; 
-      nonzero[vi->coupling_ang[i]]=1; 
+        acc[track]=noise_normalize(p,limit,raw[k],quant[k],floor[k],NULL,acc[track],i,jn,iout);
 
-      for(j=0;j<p->n;j+=partition){
-	float acc=0.f;
+      }else{
+        for(j=0;j<jn;j++){
+          floor[k][j] = 1e-10f;
+          raw[k][j] = 0.f;
+          quant[k][j] = 0.f;
+          flag[k][j] = 0;
+          iout[j]=0;
+        }
+        acc[track]=0.f;
+      }
+      track++;
+    }
 
-	for(k=0;k<partition;k++){
-	  int l=k+j;
+    /* coupling */
+    for(step=0;step<vi->coupling_steps;step++){
+      int Mi = vi->coupling_mag[step];
+      int Ai = vi->coupling_ang[step];
+      int *iM = &iwork[Mi][i];
+      int *iA = &iwork[Ai][i];
+      float *reM = raw[Mi];
+      float *reA = raw[Ai];
+      float *qeM = quant[Mi];
+      float *qeA = quant[Ai];
+      float *floorM = floor[Mi];
+      float *floorA = floor[Ai];
+      int *fM = flag[Mi];
+      int *fA = flag[Ai];
 
-	  if(l<sliding_lowpass){
-	    if((l>=limit && fabs(rM[l])<postpoint && fabs(rA[l])<postpoint) ||
-	       (fabs(rM[l])<prepoint && fabs(rA[l])<prepoint)){
+      if(nz[Mi] || nz[Ai]){
+        nz[Mi] = nz[Ai] = 1;
 
+        for(j=0;j<jn;j++){
 
-	      precomputed_couple_point(mag_memo[i][l],
-				       floorM[l],floorA[l],
-				       qM+l,qA+l);
+          if(j<sliding_lowpass-i){
+            if(fM[j] || fA[j]){
+              /* lossless coupling */
 
-	      if(rint(qM[l])==0.f)acc+=qM[l]*qM[l];
-	    }else{
-	      couple_lossless(rM[l],rA[l],qM+l,qA+l);
-	    }
-	  }else{
-	    qM[l]=0.;
-	    qA[l]=0.;
-	  }
-	}
-	
-	if(p->vi->normal_point_p){
-	  for(k=0;k<partition && acc>=p->vi->normal_thresh;k++){
-	    int l=mag_sort[i][j+k];
-	    if(l<sliding_lowpass && l>=pointlimit && rint(qM[l])==0.f){
-	      qM[l]=unitnorm(qM[l]);
-	      acc-=1.f;
-	    }
-	  } 
-	}
+              reM[j] = fabs(reM[j])+fabs(reA[j]);
+              qeM[j] = qeM[j]+qeA[j];
+              fM[j]=fA[j]=1;
+
+              /* couple iM/iA */
+              {
+                int A = iM[j];
+                int B = iA[j];
+
+                if(abs(A)>abs(B)){
+                  iA[j]=(A>0?A-B:B-A);
+                }else{
+                  iA[j]=(B>0?A-B:B-A);
+                  iM[j]=B;
+                }
+
+                /* collapse two equivalent tuples to one */
+                if(iA[j]>=abs(iM[j])*2){
+                  iA[j]= -iA[j];
+                  iM[j]= -iM[j];
+                }
+
+              }
+
+            }else{
+              /* lossy (point) coupling */
+              if(j<limit-i){
+                /* dipole */
+                reM[j] += reA[j];
+                qeM[j] = fabs(reM[j]);
+              }else{
+#if 0
+                /* AoTuV */
+                /** @ M2 **
+                    The boost problem by the combination of noise normalization and point stereo is eased.
+                    However, this is a temporary patch.
+                    by Aoyumi @ 2004/04/18
+                */
+                float derate = (1.0 - de*((float)(j-limit+i) / (float)(n-limit)));
+                /* elliptical */
+                if(reM[j]+reA[j]<0){
+                  reM[j] = - (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate);
+                }else{
+                  reM[j] =   (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate);
+                }
+#else
+                /* elliptical */
+                if(reM[j]+reA[j]<0){
+                  reM[j] = - (qeM[j] = fabs(reM[j])+fabs(reA[j]));
+                }else{
+                  reM[j] =   (qeM[j] = fabs(reM[j])+fabs(reA[j]));
+                }
+#endif
+
+              }
+              reA[j]=qeA[j]=0.f;
+              fA[j]=1;
+              iA[j]=0;
+            }
+          }
+          floorM[j]=floorA[j]=floorM[j]+floorA[j];
+        }
+        /* normalize the resulting mag vector */
+        acc[track]=noise_normalize(p,limit,raw[Mi],quant[Mi],floor[Mi],flag[Mi],acc[track],i,jn,iM);
+        track++;
       }
     }
   }
-}
 
+  for(i=0;i<vi->coupling_steps;i++){
+    /* make sure coupling a zero and a nonzero channel results in two
+       nonzero channels. */
+    if(nonzero[vi->coupling_mag[i]] ||
+       nonzero[vi->coupling_ang[i]]){
+      nonzero[vi->coupling_mag[i]]=1;
+      nonzero[vi->coupling_ang[i]]=1;
+    }
+  }
+  free(raw[0]);
+  free(quant[0]);
+  free(floor[0]);
+  free(flag[0]);
+  free(raw);
+  free(quant);
+  free(floor);
+  free(flag);
+  free(nz);
+  free(acc);
+}
--- a/sys/src/cmd/audio/libvorbis/psy.h
+++ b/sys/src/cmd/audio/libvorbis/psy.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: random psychoacoustics (not including preecho)
- last mod: $Id: psy.h,v 1.32 2002/07/13 06:12:47 xiphmont Exp $
+ last mod: $Id: psy.h 16946 2010-03-03 16:12:40Z xiphmont $
 
  ********************************************************************/
 
@@ -57,8 +57,7 @@
 
   float max_curve_dB;
 
-  int normal_channel_p;
-  int normal_point_p;
+  int normal_p;
   int normal_start;
   int normal_partition;
   double normal_thresh;
@@ -76,11 +75,11 @@
   float ampmax_att_per_sec;
 
   /* channel coupling config */
-  int   coupling_pkHz[PACKETBLOBS];  
-  int   coupling_pointlimit[2][PACKETBLOBS];  
-  int   coupling_prepointamp[PACKETBLOBS];  
-  int   coupling_postpointamp[PACKETBLOBS];  
-  int   sliding_lowpass[2][PACKETBLOBS];  
+  int   coupling_pkHz[PACKETBLOBS];
+  int   coupling_pointlimit[2][PACKETBLOBS];
+  int   coupling_prepointamp[PACKETBLOBS];
+  int   coupling_postpointamp[PACKETBLOBS];
+  int   sliding_lowpass[2][PACKETBLOBS];
 
 } vorbis_info_psy_global;
 
@@ -89,7 +88,7 @@
   int   channels;
 
   vorbis_info_psy_global *gi;
-  int   coupling_pointlimit[2][P_NOISECURVES];  
+  int   coupling_pointlimit[2][P_NOISECURVES];
 } vorbis_look_psy_global;
 
 
@@ -107,12 +106,15 @@
   long  firstoc;
   long  shiftoc;
   int   eighth_octave_lines; /* power of two, please */
-  int   total_octave_lines;  
+  int   total_octave_lines;
   long  rate; /* cache it */
+
+  float m_val; /* Masking compensation value */
+
 } vorbis_look_psy;
 
 extern void   _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
-			   vorbis_info_psy_global *gi,int n,long rate);
+                           vorbis_info_psy_global *gi,int n,long rate);
 extern void   _vp_psy_clear(vorbis_look_psy *p);
 extern void  *_vi_psy_dup(void *source);
 
@@ -119,57 +121,34 @@
 extern void   _vi_psy_free(vorbis_info_psy *i);
 extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i);
 
-extern void _vp_remove_floor(vorbis_look_psy *p,
-			     float *mdct,
-			     int *icodedflr,
-			     float *residue,
-			     int sliding_lowpass);
-
 extern void _vp_noisemask(vorbis_look_psy *p,
-			  float *logmdct, 
-			  float *logmask);
+                          float *logmdct,
+                          float *logmask);
 
 extern void _vp_tonemask(vorbis_look_psy *p,
-			 float *logfft,
-			 float *logmask,
-			 float global_specmax,
-			 float local_specmax);
+                         float *logfft,
+                         float *logmask,
+                         float global_specmax,
+                         float local_specmax);
 
 extern void _vp_offset_and_mix(vorbis_look_psy *p,
-			       float *noise,
-			       float *tone,
-			       int offset_select,
-			       float *logmask);
+                               float *noise,
+                               float *tone,
+                               int offset_select,
+                               float *logmask,
+                               float *mdct,
+                               float *logmdct);
 
 extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
 
-extern float **_vp_quantize_couple_memo(vorbis_block *vb,
-					vorbis_info_psy_global *g,
-					vorbis_look_psy *p,
-					vorbis_info_mapping0 *vi,
-					float **mdct);
+extern void _vp_couple_quantize_normalize(int blobno,
+                                          vorbis_info_psy_global *g,
+                                          vorbis_look_psy *p,
+                                          vorbis_info_mapping0 *vi,
+                                          float **mdct,
+                                          int   **iwork,
+                                          int    *nonzero,
+                                          int     sliding_lowpass,
+                                          int     ch);
 
-extern void _vp_couple(int blobno,
-		       vorbis_info_psy_global *g,
-		       vorbis_look_psy *p,
-		       vorbis_info_mapping0 *vi,
-		       float **res,
-		       float **mag_memo,
-		       int   **mag_sort,
-		       int   **ifloor,
-		       int   *nonzero,
-		       int   sliding_lowpass);
-
-extern void _vp_noise_normalize(vorbis_look_psy *p,
-				float *in,float *out,int *sortedindex);
-
-extern void _vp_noise_normalize_sort(vorbis_look_psy *p,
-				     float *magnitudes,int *sortedindex);
-
-extern int **_vp_quantize_couple_sort(vorbis_block *vb,
-				      vorbis_look_psy *p,
-				      vorbis_info_mapping0 *vi,
-				      float **mags);
-
 #endif
-
--- a/sys/src/cmd/audio/libvorbis/psytune.c
+++ b/sys/src/cmd/audio/libvorbis/psytune.c
@@ -5,17 +5,20 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: simple utility that runs audio through the psychoacoustics
            without encoding
- last mod: $Id: psytune.c,v 1.19 2002/01/22 08:06:07 xiphmont Exp $
+ last mod: $Id: psytune.c 16037 2009-05-26 21:10:58Z xiphmont $
 
  ********************************************************************/
 
+/* NB: this is dead code, retained purely for doc and reference value
+       don't try to compile it */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -155,43 +158,43 @@
 };
 
 static vorbis_info_floor1 _floor_set0={1,
-					{0},
-					
-					{32},
-					{0},
-					{0},
-					{{-1}},
+                                        {0},
+                                        
+                                        {32},
+                                        {0},
+                                        {0},
+                                        {{-1}},
 
-					2,
-					{0,1024,
+                                        2,
+                                        {0,1024,
 
-					 88,31,243,
+                                         88,31,243,
 
-					 14,54,143,460,
-					 
-					 6,3,10, 22,18,26, 41,36,47, 
-					 69,61,78, 112,99,126, 185,162,211,  
-					 329,282,387, 672,553,825
-					 },
-					
-					60,30,400,
-					20,8,1,18.,
-					20,600,
-					960};
+                                         14,54,143,460,
+                                         
+                                         6,3,10, 22,18,26, 41,36,47, 
+                                         69,61,78, 112,99,126, 185,162,211,  
+                                         329,282,387, 672,553,825
+                                         },
+                                        
+                                        60,30,400,
+                                        20,8,1,18.,
+                                        20,600,
+                                        960};
 
 
 static vorbis_info_mapping0 mapping_info={1,{0,1},{0},{0},{0},0, 1, {0},{1}};
 static codec_setup_info codec_setup0={ {0,0}, 
-				       1,1,1,1,1,0,1,	
-				       {NULL},
-				       {0},{&mapping_info},
-				       {0},{NULL},
-				       {1},{&_floor_set0},
-				       {2},{NULL},
-				       {NULL},
-				       {&_psy_set0},
-				       &_psy_set0G};
-				       
+                                       1,1,1,1,1,0,1,        
+                                       {NULL},
+                                       {0},{&mapping_info},
+                                       {0},{NULL},
+                                       {1},{&_floor_set0},
+                                       {2},{NULL},
+                                       {NULL},
+                                       {&_psy_set0},
+                                       &_psy_set0G};
+                                       
 static int noisy=0;
 void analysis(char *base,int i,float *v,int n,int bark,int dB){
   if(noisy){
@@ -203,18 +206,18 @@
 
     for(j=0;j<n;j++){
       if(dB && v[j]==0)
-	  fprintf(of,"\n\n");
+          fprintf(of,"\n\n");
       else{
-	if(bark)
-	  fprintf(of,"%g ",toBARK(22050.f*j/n));
-	else
-	  fprintf(of,"%g ",(float)j);
+        if(bark)
+          fprintf(of,"%g ",toBARK(22050.f*j/n));
+        else
+          fprintf(of,"%g ",(float)j);
       
-	if(dB){
-	  fprintf(of,"%g\n",todB(v+j));
-	}else{
-	  fprintf(of,"%g\n",v[j]);
-	}
+        if(dB){
+          fprintf(of,"%g\n",todB(v+j));
+        }else{
+          fprintf(of,"%g\n",v[j]);
+        }
       }
     }
     fclose(of);
@@ -254,16 +257,16 @@
     if(*argv[0]=='-'){
       /* option */
       if(argv[0][1]=='v'){
-	noisy=0;
+        noisy=0;
       }
     }else
       if(*argv[0]=='+'){
-	/* option */
-	if(argv[0][1]=='v'){
-	  noisy=1;
-	}
+        /* option */
+        if(argv[0][1]=='v'){
+          noisy=1;
+        }
       }else
-	framesize=atoi(argv[0]);
+        framesize=atoi(argv[0]);
     argv++;
   }
   
@@ -280,7 +283,7 @@
   flr[1]=_ogg_calloc(framesize/2,sizeof(float));
   buffer=_ogg_malloc(framesize*4);
   buffer2=buffer+framesize*2;
-  window=_vorbis_window(0,framesize,framesize/2,framesize/2);
+  window=_vorbis_window_create(0,framesize,framesize/2,framesize/2);
   mdct_init(&m_look,framesize);
   drft_init(&f_look,framesize);
   _vp_psy_init(&p_look,&_psy_set0,&_psy_set0G,framesize/2,44100);
@@ -311,168 +314,168 @@
         pcm[0][i]=((buffer[i*4+1]<<8)|
                       (0x00ff&(int)buffer[i*4]))/32768.f;
         pcm[1][i]=((buffer[i*4+3]<<8)|
-		   (0x00ff&(int)buffer[i*4+2]))/32768.f;
+                   (0x00ff&(int)buffer[i*4+2]))/32768.f;
       }
       
       {
-	float secs=framesize/44100.;
-	
-	ampmax+=secs*ampmax_att_per_sec;
-	if(ampmax<-9999)ampmax=-9999;
+        float secs=framesize/44100.;
+        
+        ampmax+=secs*ampmax_att_per_sec;
+        if(ampmax<-9999)ampmax=-9999;
       }
 
       for(i=0;i<2;i++){
-	float scale=4.f/framesize;
-	float *fft=work[i];
-	float *mdct=pcm[i];
-	float *logmdct=mdct+framesize/2;
+        float scale=4.f/framesize;
+        float *fft=work[i];
+        float *mdct=pcm[i];
+        float *logmdct=mdct+framesize/2;
 
-	analysis("pre",frameno+i,pcm[i],framesize,0,0);
-	
-	/* fft and mdct transforms  */
-	for(j=0;j<framesize;j++)
-	  fft[j]=pcm[i][j]*=window[j];
-	
-	drft_forward(&f_look,fft);
+        analysis("pre",frameno+i,pcm[i],framesize,0,0);
+        
+        /* fft and mdct transforms  */
+        for(j=0;j<framesize;j++)
+          fft[j]=pcm[i][j]*=window[j];
+        
+        drft_forward(&f_look,fft);
 
-	local_ampmax[i]=-9999.f;
-	fft[0]*=scale;
-	fft[0]=todB(fft);
-	for(j=1;j<framesize-1;j+=2){
-	  float temp=scale*FAST_HYPOT(fft[j],fft[j+1]);
-	  temp=fft[(j+1)>>1]=todB(&temp);
-	  if(temp>local_ampmax[i])local_ampmax[i]=temp;
-	}
-	if(local_ampmax[i]>ampmax)ampmax=local_ampmax[i];
-	
-	mdct_forward(&m_look,pcm[i],mdct);
-	for(j=0;j<framesize/2;j++)
-	  logmdct[j]=todB(mdct+j);
+        local_ampmax[i]=-9999.f;
+        fft[0]*=scale;
+        fft[0]=todB(fft);
+        for(j=1;j<framesize-1;j+=2){
+          float temp=scale*FAST_HYPOT(fft[j],fft[j+1]);
+          temp=fft[(j+1)>>1]=todB(&temp);
+          if(temp>local_ampmax[i])local_ampmax[i]=temp;
+        }
+        if(local_ampmax[i]>ampmax)ampmax=local_ampmax[i];
+        
+        mdct_forward(&m_look,pcm[i],mdct);
+        for(j=0;j<framesize/2;j++)
+          logmdct[j]=todB(mdct+j);
 
-	analysis("mdct",frameno+i,logmdct,framesize/2,1,0);
-	analysis("fft",frameno+i,fft,framesize/2,1,0);
+        analysis("mdct",frameno+i,logmdct,framesize/2,1,0);
+        analysis("fft",frameno+i,fft,framesize/2,1,0);
       }
 
       for(i=0;i<2;i++){
-	float amp;
-	float *fft=work[i];
-	float *logmax=fft;
-	float *mdct=pcm[i];
-	float *logmdct=mdct+framesize/2;
-	float *mask=fft+framesize/2;
+        float amp;
+        float *fft=work[i];
+        float *logmax=fft;
+        float *mdct=pcm[i];
+        float *logmdct=mdct+framesize/2;
+        float *mask=fft+framesize/2;
 
-	/* floor psychoacoustics */
-	_vp_compute_mask(&p_look,
-			 pg_look,
-			 i,
-			 fft,
-			 logmdct,
-			 mask,
-			 ampmax,
-			 local_ampmax[i],
-			 framesize/2);
+        /* floor psychoacoustics */
+        _vp_compute_mask(&p_look,
+                         pg_look,
+                         i,
+                         fft,
+                         logmdct,
+                         mask,
+                         ampmax,
+                         local_ampmax[i],
+                         framesize/2);
 
-	analysis("mask",frameno+i,mask,framesize/2,1,0);
+        analysis("mask",frameno+i,mask,framesize/2,1,0);
 
-	{
-	  vorbis_block vb;
-	  vorbis_dsp_state vd;
-	  memset(&vd,0,sizeof(vd));
-	  vd.vi=&vi;
-	  vb.vd=&vd;
-	  vb.pcmend=framesize;
+        {
+          vorbis_block vb;
+          vorbis_dsp_state vd;
+          memset(&vd,0,sizeof(vd));
+          vd.vi=&vi;
+          vb.vd=&vd;
+          vb.pcmend=framesize;
 
-	  /* floor quantization/application */
-	  nonzero[i]=_floor_P[1]->forward(&vb,floor_look,
-					  mdct,
-					  logmdct,
-					  mask,
-					  logmax,
-					  
-					  flr[i]);
-	}
+          /* floor quantization/application */
+          nonzero[i]=_floor_P[1]->forward(&vb,floor_look,
+                                          mdct,
+                                          logmdct,
+                                          mask,
+                                          logmax,
+                                          
+                                          flr[i]);
+        }
 
-	_vp_remove_floor(&p_look,
-			 pg_look,
-			 logmdct,
-			 mdct,
-			 flr[i],
-			 pcm[i],
-			 local_ampmax[i]);
+        _vp_remove_floor(&p_look,
+                         pg_look,
+                         logmdct,
+                         mdct,
+                         flr[i],
+                         pcm[i],
+                         local_ampmax[i]);
 
-	for(j=0;j<framesize/2;j++)
-	  if(fabs(pcm[i][j])>1500)
-	    fprintf(stderr,"%ld ",frameno+i);
-	
-	analysis("res",frameno+i,pcm[i],framesize/2,1,0);
-	analysis("codedflr",frameno+i,flr[i],framesize/2,1,1);
+        for(j=0;j<framesize/2;j++)
+          if(fabs(pcm[i][j])>1500)
+            fprintf(stderr,"%ld ",frameno+i);
+        
+        analysis("res",frameno+i,pcm[i],framesize/2,1,0);
+        analysis("codedflr",frameno+i,flr[i],framesize/2,1,1);
       }
 
       /* residue prequantization */
       _vp_partition_prequant(&p_look,
-			     &vi,
-			     pcm,
-			     nonzero);
-	
+                             &vi,
+                             pcm,
+                             nonzero);
+        
       for(i=0;i<2;i++)
-	analysis("quant",frameno+i,pcm[i],framesize/2,1,0);
+        analysis("quant",frameno+i,pcm[i],framesize/2,1,0);
 
       /* channel coupling / stereo quantization */
 
       _vp_couple(&p_look,
-		 &mapping_info,
-		 pcm,
-		 nonzero);
+                 &mapping_info,
+                 pcm,
+                 nonzero);
   
       for(i=0;i<2;i++)
-	analysis("coupled",frameno+i,pcm[i],framesize/2,1,0);
+        analysis("coupled",frameno+i,pcm[i],framesize/2,1,0);
 
       /* decoupling */
       for(i=mapping_info.coupling_steps-1;i>=0;i--){
-	float *pcmM=pcm[mapping_info.coupling_mag[i]];
-	float *pcmA=pcm[mapping_info.coupling_ang[i]];
-	
-	for(j=0;j<framesize/2;j++){
-	  float mag=pcmM[j];
-	  float ang=pcmA[j];
-	  
-	  if(mag>0)
-	    if(ang>0){
-	      pcmM[j]=mag;
-	      pcmA[j]=mag-ang;
-	    }else{
-	      pcmA[j]=mag;
-	      pcmM[j]=mag+ang;
-	    }
-	  else
-	    if(ang>0){
-	      pcmM[j]=mag;
-	      pcmA[j]=mag+ang;
-	    }else{
-	      pcmA[j]=mag;
-	      pcmM[j]=mag-ang;
-	    }
-	}
+        float *pcmM=pcm[mapping_info.coupling_mag[i]];
+        float *pcmA=pcm[mapping_info.coupling_ang[i]];
+        
+        for(j=0;j<framesize/2;j++){
+          float mag=pcmM[j];
+          float ang=pcmA[j];
+          
+          if(mag>0)
+            if(ang>0){
+              pcmM[j]=mag;
+              pcmA[j]=mag-ang;
+            }else{
+              pcmA[j]=mag;
+              pcmM[j]=mag+ang;
+            }
+          else
+            if(ang>0){
+              pcmM[j]=mag;
+              pcmA[j]=mag+ang;
+            }else{
+              pcmA[j]=mag;
+              pcmM[j]=mag-ang;
+            }
+        }
       }
     
       for(i=0;i<2;i++)
-	analysis("decoupled",frameno+i,pcm[i],framesize/2,1,0);
+        analysis("decoupled",frameno+i,pcm[i],framesize/2,1,0);
 
       for(i=0;i<2;i++){
-	float amp;
+        float amp;
 
-	for(j=0;j<framesize/2;j++)
-	  pcm[i][j]*=flr[i][j];
+        for(j=0;j<framesize/2;j++)
+          pcm[i][j]*=flr[i][j];
 
-	analysis("final",frameno+i,pcm[i],framesize/2,1,1);
+        analysis("final",frameno+i,pcm[i],framesize/2,1,1);
 
-	/* take it back to time */
-	mdct_backward(&m_look,pcm[i],pcm[i]);
+        /* take it back to time */
+        mdct_backward(&m_look,pcm[i],pcm[i]);
 
-	for(j=0;j<framesize/2;j++)
-	  out[i][j]+=pcm[i][j]*window[j];
+        for(j=0;j<framesize/2;j++)
+          out[i][j]+=pcm[i][j]*window[j];
 
-	analysis("out",frameno+i,out[i],framesize/2,0,0);
+        analysis("out",frameno+i,out[i],framesize/2,0,0);
 
 
       }
@@ -479,26 +482,26 @@
            
       /* write data.  Use the part of buffer we're about to shift out */
       for(i=0;i<2;i++){
-	char  *ptr=buffer+i*2;
-	float *mono=out[i];
-	int flag=0;
-	for(j=0;j<framesize/2;j++){
-	  int val=mono[j]*32767.;
-	  /* might as well guard against clipping */
-	  if(val>32767){
-	    if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
-	    flag=1;
-	    val=32767;
-	  }
-	  if(val<-32768){
-	    if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
-	    flag=1;
-	    val=-32768;
-	  }
-	  ptr[0]=val&0xff;
-	  ptr[1]=(val>>8)&0xff;
-	  ptr+=4;
-	}
+        char  *ptr=buffer+i*2;
+        float *mono=out[i];
+        int flag=0;
+        for(j=0;j<framesize/2;j++){
+          int val=mono[j]*32767.;
+          /* might as well guard against clipping */
+          if(val>32767){
+            if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
+            flag=1;
+            val=32767;
+          }
+          if(val<-32768){
+            if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
+            flag=1;
+            val=-32768;
+          }
+          ptr[0]=val&0xff;
+          ptr[1]=(val>>8)&0xff;
+          ptr+=4;
+        }
       }
  
       fprintf(stderr,"*");
@@ -506,8 +509,8 @@
       memmove(buffer,buffer2,framesize*2);
 
       for(i=0;i<2;i++){
-	for(j=0,k=framesize/2;j<framesize/2;j++,k++)
-	  out[i][j]=pcm[i][k]*window[k];
+        for(j=0,k=framesize/2;j<framesize/2;j++,k++)
+          out[i][j]=pcm[i][k]*window[k];
       }
       frameno+=2;
     }else
@@ -515,7 +518,7 @@
   }
   fprintf(stderr,"average raw bits of entropy: %.03g/sample\n",acc/tot);
   fprintf(stderr,"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2,
-	  framesize/2);
+          framesize/2);
   fprintf(stderr,"Done\n\n");
   return 0;
 }
--- a/sys/src/cmd/audio/libvorbis/registry.c
+++ b/sys/src/cmd/audio/libvorbis/registry.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: registry for time, floor, res backends and channel mappings
- last mod: $Id: registry.c,v 1.15 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: registry.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -22,25 +22,24 @@
 /* seems like major overkill now; the backend numbers will grow into
    the infrastructure soon enough */
 
-extern vorbis_func_floor     floor0_exportbundle;
-extern vorbis_func_floor     floor1_exportbundle;
-extern vorbis_func_residue   residue0_exportbundle;
-extern vorbis_func_residue   residue1_exportbundle;
-extern vorbis_func_residue   residue2_exportbundle;
-extern vorbis_func_mapping   mapping0_exportbundle;
+extern const vorbis_func_floor     floor0_exportbundle;
+extern const vorbis_func_floor     floor1_exportbundle;
+extern const vorbis_func_residue   residue0_exportbundle;
+extern const vorbis_func_residue   residue1_exportbundle;
+extern const vorbis_func_residue   residue2_exportbundle;
+extern const vorbis_func_mapping   mapping0_exportbundle;
 
-vorbis_func_floor     *_floor_P[]={
+const vorbis_func_floor     *const _floor_P[]={
   &floor0_exportbundle,
   &floor1_exportbundle,
 };
 
-vorbis_func_residue   *_residue_P[]={
+const vorbis_func_residue   *const _residue_P[]={
   &residue0_exportbundle,
   &residue1_exportbundle,
   &residue2_exportbundle,
 };
 
-vorbis_func_mapping   *_mapping_P[]={
+const vorbis_func_mapping   *const _mapping_P[]={
   &mapping0_exportbundle,
 };
-
--- a/sys/src/cmd/audio/libvorbis/registry.h
+++ b/sys/src/cmd/audio/libvorbis/registry.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: registry for time, floor, res backends and channel mappings
- last mod: $Id: registry.h,v 1.13 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: registry.h 15531 2008-11-24 23:50:06Z xiphmont $
 
  ********************************************************************/
 
@@ -25,8 +25,8 @@
 #define VI_RESB 3
 #define VI_MAPB 1
 
-extern vorbis_func_floor     *_floor_P[];
-extern vorbis_func_residue   *_residue_P[];
-extern vorbis_func_mapping   *_mapping_P[];
+extern const vorbis_func_floor     *const _floor_P[];
+extern const vorbis_func_residue   *const _residue_P[];
+extern const vorbis_func_mapping   *const _mapping_P[];
 
 #endif
--- a/sys/src/cmd/audio/libvorbis/res0.c
+++ b/sys/src/cmd/audio/libvorbis/res0.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: residue backend 0, 1 and 2 implementation
- last mod: $Id: res0.c,v 1.48 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: res0.c 19441 2015-01-21 01:17:41Z xiphmont $
 
  ********************************************************************/
 
@@ -31,13 +31,16 @@
 #include "misc.h"
 #include "os.h"
 
-#ifdef TRAIN_RES
+//#define TRAIN_RES 1
+//#define TRAIN_RESAUX 1
+
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
 #include <stdio.h>
-#endif 
+#endif
 
 typedef struct {
   vorbis_info_residue0 *info;
-  
+
   int         parts;
   int         stages;
   codebook   *fullbooks;
@@ -51,7 +54,7 @@
   long      phrasebits;
   long      frames;
 
-#ifdef TRAIN_RES
+#if defined(TRAIN_RES) || defined(TRAIN_RESAUX)
   int        train_seq;
   long      *training_data[8][64];
   float      training_max[8][64];
@@ -58,6 +61,7 @@
   float      training_min[8][64];
   float     tmin;
   float     tmax;
+  int       submap;
 #endif
 
 } vorbis_look_residue0;
@@ -80,36 +84,37 @@
     {
       int j,k,l;
       for(j=0;j<look->parts;j++){
-	/*fprintf(stderr,"partition %d: ",j);*/
-	for(k=0;k<8;k++)
-	  if(look->training_data[k][j]){
-	    char buffer[80];
-	    FILE *of;
-	    codebook *statebook=look->partbooks[j][k];
-	    
-	    /* long and short into the same bucket by current convention */
-	    sprintf(buffer,"res_part%d_pass%d.vqd",j,k);
-	    of=fopen(buffer,"a");
+        /*fprintf(stderr,"partition %d: ",j);*/
+        for(k=0;k<8;k++)
+          if(look->training_data[k][j]){
+            char buffer[80];
+            FILE *of;
+            codebook *statebook=look->partbooks[j][k];
 
-	    for(l=0;l<statebook->entries;l++)
-	      fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]);
-	    
-	    fclose(of);
-	    
-	    /*fprintf(stderr,"%d(%.2f|%.2f) ",k,
-	      look->training_min[k][j],look->training_max[k][j]);*/
+            /* long and short into the same bucket by current convention */
+            sprintf(buffer,"res_sub%d_part%d_pass%d.vqd",look->submap,j,k);
+            of=fopen(buffer,"a");
 
-	    _ogg_free(look->training_data[k][j]);
-	  }
-	/*fprintf(stderr,"\n");*/
+            for(l=0;l<statebook->entries;l++)
+              fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]);
+
+            fclose(of);
+
+            /*fprintf(stderr,"%d(%.2f|%.2f) ",k,
+              look->training_min[k][j],look->training_max[k][j]);*/
+
+            _ogg_free(look->training_data[k][j]);
+            look->training_data[k][j]=NULL;
+          }
+        /*fprintf(stderr,"\n");*/
       }
     }
     fprintf(stderr,"min/max residue: %g::%g\n",look->tmin,look->tmax);
 
     /*fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
-	    (float)look->phrasebits/look->frames,
-	    (float)look->postbits/look->frames,
-	    (float)(look->postbits+look->phrasebits)/look->frames);*/
+            (float)look->phrasebits/look->frames,
+            (float)look->postbits/look->frames,
+            (float)(look->postbits+look->phrasebits)/look->frames);*/
 #endif
 
 
@@ -116,22 +121,22 @@
     /*vorbis_info_residue0 *info=look->info;
 
     fprintf(stderr,
-	    "%ld frames encoded in %ld phrasebits and %ld residue bits "
-	    "(%g/frame) \n",look->frames,look->phrasebits,
-	    look->resbitsflat,
-	    (look->phrasebits+look->resbitsflat)/(float)look->frames);
-    
+            "%ld frames encoded in %ld phrasebits and %ld residue bits "
+            "(%g/frame) \n",look->frames,look->phrasebits,
+            look->resbitsflat,
+            (look->phrasebits+look->resbitsflat)/(float)look->frames);
+
     for(j=0;j<look->parts;j++){
       long acc=0;
       fprintf(stderr,"\t[%d] == ",j);
       for(k=0;k<look->stages;k++)
-	if((info->secondstages[j]>>k)&1){
-	  fprintf(stderr,"%ld,",look->resbits[j][k]);
-	  acc+=look->resbits[j][k];
-	}
+        if((info->secondstages[j]>>k)&1){
+          fprintf(stderr,"%ld,",look->resbits[j][k]);
+          acc+=look->resbits[j][k];
+        }
 
       fprintf(stderr,":: (%ld vals) %1.2fbits/sample\n",look->resvals[j],
-	      acc?(float)acc/(look->resvals[j]*info->grouping):0);
+              acc?(float)acc/(look->resvals[j]*info->grouping):0);
     }
     fprintf(stderr,"\n");*/
 
@@ -147,15 +152,6 @@
   }
 }
 
-static int ilog(unsigned int v){
-  int ret=0;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
-}
-
 static int icount(unsigned int v){
   int ret=0;
   while(v){
@@ -172,8 +168,8 @@
   oggpack_write(opb,info->begin,24);
   oggpack_write(opb,info->end,24);
 
-  oggpack_write(opb,info->grouping-1,24);  /* residue vectors to group and 
-					     code with a partitioned book */
+  oggpack_write(opb,info->grouping-1,24);  /* residue vectors to group and
+                                             code with a partitioned book */
   oggpack_write(opb,info->partitions-1,6); /* possible partition choices */
   oggpack_write(opb,info->groupbook,8);  /* group huffman book */
 
@@ -181,11 +177,11 @@
      bitmask of one indicates this partition class has bits to write
      this pass */
   for(j=0;j<info->partitions;j++){
-    if(ilog(info->secondstages[j])>3){
+    if(ov_ilog(info->secondstages[j])>3){
       /* yes, this is a minor hack due to not thinking ahead */
-      oggpack_write(opb,info->secondstages[j],3); 
+      oggpack_write(opb,info->secondstages[j],3);
       oggpack_write(opb,1,1);
-      oggpack_write(opb,info->secondstages[j]>>3,5); 
+      oggpack_write(opb,info->secondstages[j]>>3,5);
     }else
       oggpack_write(opb,info->secondstages[j],4); /* trailing zero */
     acc+=icount(info->secondstages[j]);
@@ -207,21 +203,53 @@
   info->partitions=oggpack_read(opb,6)+1;
   info->groupbook=oggpack_read(opb,8);
 
+  /* check for premature EOP */
+  if(info->groupbook<0)goto errout;
+
   for(j=0;j<info->partitions;j++){
     int cascade=oggpack_read(opb,3);
-    if(oggpack_read(opb,1))
-      cascade|=(oggpack_read(opb,5)<<3);
+    int cflag=oggpack_read(opb,1);
+    if(cflag<0) goto errout;
+    if(cflag){
+      int c=oggpack_read(opb,5);
+      if(c<0) goto errout;
+      cascade|=(c<<3);
+    }
     info->secondstages[j]=cascade;
 
     acc+=icount(cascade);
   }
-  for(j=0;j<acc;j++)
-    info->booklist[j]=oggpack_read(opb,8);
+  for(j=0;j<acc;j++){
+    int book=oggpack_read(opb,8);
+    if(book<0) goto errout;
+    info->booklist[j]=book;
+  }
 
   if(info->groupbook>=ci->books)goto errout;
-  for(j=0;j<acc;j++)
+  for(j=0;j<acc;j++){
     if(info->booklist[j]>=ci->books)goto errout;
+    if(ci->book_param[info->booklist[j]]->maptype==0)goto errout;
+  }
 
+  /* verify the phrasebook is not specifying an impossible or
+     inconsistent partitioning scheme. */
+  /* modify the phrasebook ranging check from r16327; an early beta
+     encoder had a bug where it used an oversized phrasebook by
+     accident.  These files should continue to be playable, but don't
+     allow an exploit */
+  {
+    int entries = ci->book_param[info->groupbook]->entries;
+    int dim = ci->book_param[info->groupbook]->dim;
+    int partvals = 1;
+    if (dim<1) goto errout;
+    while(dim>0){
+      partvals *= info->partitions;
+      if(partvals > entries) goto errout;
+      dim--;
+    }
+    info->partvals = partvals;
+  }
+
   return(info);
  errout:
   res0_free_info(info);
@@ -229,7 +257,7 @@
 }
 
 vorbis_look_residue *res0_look(vorbis_dsp_state *vd,
-			       vorbis_info_residue *vr){
+                               vorbis_info_residue *vr){
   vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
   vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(*look));
   codec_setup_info     *ci=vd->vi->codec_setup;
@@ -247,22 +275,25 @@
   look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks));
 
   for(j=0;j<look->parts;j++){
-    int stages=ilog(info->secondstages[j]);
+    int stages=ov_ilog(info->secondstages[j]);
     if(stages){
       if(stages>maxstage)maxstage=stages;
       look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j]));
       for(k=0;k<stages;k++)
-	if(info->secondstages[j]&(1<<k)){
-	  look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++];
+        if(info->secondstages[j]&(1<<k)){
+          look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++];
 #ifdef TRAIN_RES
-	  look->training_data[k][j]=calloc(look->partbooks[j][k]->entries,
-					   sizeof(***look->training_data));
+          look->training_data[k][j]=_ogg_calloc(look->partbooks[j][k]->entries,
+                                           sizeof(***look->training_data));
 #endif
-	}
+        }
     }
   }
 
-  look->partvals=rint(pow((float)look->parts,(float)dim));
+  look->partvals=1;
+  for(j=0;j<dim;j++)
+      look->partvals*=look->parts;
+
   look->stages=maxstage;
   look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap));
   for(j=0;j<look->partvals;j++){
@@ -276,7 +307,7 @@
       look->decodemap[j][k]=deco;
     }
   }
-#ifdef TRAIN_RES
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
   {
     static int train_seq=0;
     look->train_seq=train_seq++;
@@ -286,66 +317,77 @@
 }
 
 /* break an abstraction and copy some code for performance purposes */
-static int local_book_besterror(codebook *book,float *a){
-  int dim=book->dim,i,k,o;
-  int best=0;
-  encode_aux_threshmatch *tt=book->c->thresh_tree;
+static int local_book_besterror(codebook *book,int *a){
+  int dim=book->dim;
+  int i,j,o;
+  int minval=book->minval;
+  int del=book->delta;
+  int qv=book->quantvals;
+  int ze=(qv>>1);
+  int index=0;
+  /* assumes integer/centered encoder codebook maptype 1 no more than dim 8 */
+  int p[8]={0,0,0,0,0,0,0,0};
 
-  /* find the quant val of each scalar */
-  for(k=0,o=dim;k<dim;++k){
-    float val=a[--o];
-    i=tt->threshvals>>1;
-
-    if(val<tt->quantthresh[i]){      
-      if(val<tt->quantthresh[i-1]){
-	for(--i;i>0;--i)
-	  if(val>=tt->quantthresh[i-1])
-	    break;
-      }
-    }else{
-      
-      for(++i;i<tt->threshvals-1;++i)
-	if(val<tt->quantthresh[i])break;
-      
+  if(del!=1){
+    for(i=0,o=dim;i<dim;i++){
+      int v = (a[--o]-minval+(del>>1))/del;
+      int m = (v<ze ? ((ze-v)<<1)-1 : ((v-ze)<<1));
+      index = index*qv+ (m<0?0:(m>=qv?qv-1:m));
+      p[o]=v*del+minval;
     }
-    
-    best=(best*tt->quantvals)+tt->quantmap[i];
+  }else{
+    for(i=0,o=dim;i<dim;i++){
+      int v = a[--o]-minval;
+      int m = (v<ze ? ((ze-v)<<1)-1 : ((v-ze)<<1));
+      index = index*qv+ (m<0?0:(m>=qv?qv-1:m));
+      p[o]=v*del+minval;
+    }
   }
-  /* regular lattices are easy :-) */
-  
-  if(book->c->lengthlist[best]<=0){
+
+  if(book->c->lengthlist[index]<=0){
     const static_codebook *c=book->c;
-    int i,j;
-    float bestf=0.f;
-    float *e=book->valuelist;
-    best=-1;
+    int best=-1;
+    /* assumes integer/centered encoder codebook maptype 1 no more than dim 8 */
+    int e[8]={0,0,0,0,0,0,0,0};
+    int maxval = book->minval + book->delta*(book->quantvals-1);
     for(i=0;i<book->entries;i++){
       if(c->lengthlist[i]>0){
-	float this=0.f;
-	for(j=0;j<dim;j++){
-	  float val=(e[j]-a[j]);
-	  this+=val*val;
-	}
-	if(best==-1 || this<bestf){
-	  bestf=this;
-	  best=i;
-	}
+        int this=0;
+        for(j=0;j<dim;j++){
+          int val=(e[j]-a[j]);
+          this+=val*val;
+        }
+        if(best==-1 || this<best){
+          memcpy(p,e,sizeof(p));
+          best=this;
+          index=i;
+        }
       }
-      e++;
+      /* assumes the value patterning created by the tools in vq/ */
+      j=0;
+      while(e[j]>=maxval)
+        e[j++]=0;
+      if(e[j]>=0)
+        e[j]+=book->delta;
+      e[j]= -e[j];
     }
   }
 
-  {
-    float *ptr=book->valuelist+best*dim;
+  if(index>-1){
     for(i=0;i<dim;i++)
-      *a++ -= *ptr++;
+      *a++ -= p[i];
   }
 
-  return(best);
+  return(index);
 }
 
-static int _encodepart(oggpack_buffer *opb,float *vec, int n,
-		       codebook *book,long *acc){
+#ifdef TRAIN_RES
+static int _encodepart(oggpack_buffer *opb,int *vec, int n,
+                       codebook *book,long *acc){
+#else
+static int _encodepart(oggpack_buffer *opb,int *vec, int n,
+                       codebook *book){
+#endif
   int i,bits=0;
   int dim=book->dim;
   int step=n/dim;
@@ -354,10 +396,12 @@
     int entry=local_book_besterror(book,vec+i*dim);
 
 #ifdef TRAIN_RES
-    acc[entry]++;
+    if(entry>=0)
+      acc[entry]++;
 #endif
 
     bits+=vorbis_book_encode(book,entry,opb);
+
   }
 
   return(bits);
@@ -364,18 +408,16 @@
 }
 
 static long **_01class(vorbis_block *vb,vorbis_look_residue *vl,
-		       float **in,int ch){
+                       int **in,int ch){
   long i,j,k;
   vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
   vorbis_info_residue0 *info=look->info;
-  vorbis_info           *vi=vb->vd->vi;
-  codec_setup_info      *ci=vi->codec_setup;
 
   /* move all this setup out later */
   int samples_per_partition=info->grouping;
   int possible_partitions=info->partitions;
   int n=info->end-info->begin;
-  
+
   int partvals=n/samples_per_partition;
   long **partword=_vorbis_block_alloc(vb,ch*sizeof(*partword));
   float scale=100./samples_per_partition;
@@ -383,29 +425,29 @@
   /* we find the partition type for each partition of each
      channel.  We'll go back and do the interleaved encoding in a
      bit.  For now, clarity */
- 
+
   for(i=0;i<ch;i++){
     partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(*partword[i]));
     memset(partword[i],0,n/samples_per_partition*sizeof(*partword[i]));
   }
-  
+
   for(i=0;i<partvals;i++){
     int offset=i*samples_per_partition+info->begin;
     for(j=0;j<ch;j++){
-      float max=0.;
-      float ent=0.;
+      int max=0;
+      int ent=0;
       for(k=0;k<samples_per_partition;k++){
-	if(fabs(in[j][offset+k])>max)max=fabs(in[j][offset+k]);
-	ent+=fabs(rint(in[j][offset+k]));
+        if(abs(in[j][offset+k])>max)max=abs(in[j][offset+k]);
+        ent+=abs(in[j][offset+k]);
       }
       ent*=scale;
-      
+
       for(k=0;k<possible_partitions-1;k++)
-	if(max<=info->classmetric1[k] &&
-	   (info->classmetric2[k]<0 || (int)ent<info->classmetric2[k]))
-	  break;
-      
-      partword[j][i]=k;  
+        if(max<=info->classmetric1[k] &&
+           (info->classmetric2[k]<0 || ent<info->classmetric2[k]))
+          break;
+
+      partword[j][i]=k;
     }
   }
 
@@ -413,12 +455,12 @@
   {
     FILE *of;
     char buffer[80];
-  
+
     for(i=0;i<ch;i++){
       sprintf(buffer,"resaux_%d.vqd",look->train_seq);
       of=fopen(buffer,"a");
       for(j=0;j<partvals;j++)
-	fprintf(of,"%ld, ",partword[i][j]);
+        fprintf(of,"%ld, ",partword[i][j]);
       fprintf(of,"\n");
       fclose(of);
     }
@@ -432,8 +474,8 @@
 /* designed for stereo or other modes where the partition size is an
    integer multiple of the number of channels encoded in the current
    submap */
-static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,float **in,
-		      int ch){
+static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,int **in,
+                      int ch){
   long i,j,k,l;
   vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
   vorbis_info_residue0 *info=look->info;
@@ -446,33 +488,33 @@
   int partvals=n/samples_per_partition;
   long **partword=_vorbis_block_alloc(vb,sizeof(*partword));
 
-#ifdef TRAIN_RES
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
   FILE *of;
   char buffer[80];
 #endif
-  
-  partword[0]=_vorbis_block_alloc(vb,n*ch/samples_per_partition*sizeof(*partword[0]));
-  memset(partword[0],0,n*ch/samples_per_partition*sizeof(*partword[0]));
 
+  partword[0]=_vorbis_block_alloc(vb,partvals*sizeof(*partword[0]));
+  memset(partword[0],0,partvals*sizeof(*partword[0]));
+
   for(i=0,l=info->begin/ch;i<partvals;i++){
-    float magmax=0.f;
-    float angmax=0.f;
+    int magmax=0;
+    int angmax=0;
     for(j=0;j<samples_per_partition;j+=ch){
-      if(fabs(in[0][l])>magmax)magmax=fabs(in[0][l]);
+      if(abs(in[0][l])>magmax)magmax=abs(in[0][l]);
       for(k=1;k<ch;k++)
-	if(fabs(in[k][l])>angmax)angmax=fabs(in[k][l]);
+        if(abs(in[k][l])>angmax)angmax=abs(in[k][l]);
       l++;
     }
 
     for(j=0;j<possible_partitions-1;j++)
       if(magmax<=info->classmetric1[j] &&
-	 angmax<=info->classmetric2[j])
-	break;
+         angmax<=info->classmetric2[j])
+        break;
 
     partword[0][i]=j;
 
-  }  
-  
+  }
+
 #ifdef TRAIN_RESAUX
   sprintf(buffer,"resaux_%d.vqd",look->train_seq);
   of=fopen(buffer,"a");
@@ -487,16 +529,26 @@
   return(partword);
 }
 
-static int _01forward(vorbis_block *vb,vorbis_look_residue *vl,
-		      float **in,int ch,
-		      long **partword,
-		      int (*encode)(oggpack_buffer *,float *,int,
-				    codebook *,long *)){
+static int _01forward(oggpack_buffer *opb,
+                      vorbis_look_residue *vl,
+                      int **in,int ch,
+                      long **partword,
+#ifdef TRAIN_RES
+                      int (*encode)(oggpack_buffer *,int *,int,
+                                    codebook *,long *),
+                      int submap
+#else
+                      int (*encode)(oggpack_buffer *,int *,int,
+                                    codebook *)
+#endif
+){
   long i,j,k,s;
   vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
   vorbis_info_residue0 *info=look->info;
 
-  vorbis_dsp_state      *vd=vb->vd;
+#ifdef TRAIN_RES
+  look->submap=submap;
+#endif
 
   /* move all this setup out later */
   int samples_per_partition=info->grouping;
@@ -518,7 +570,7 @@
 
   memset(resbits,0,sizeof(resbits));
   memset(resvals,0,sizeof(resvals));
-  
+
   /* we code the partition words for each channel, then the residual
      words for a partition per channel until we've written all the
      residual words for that partition word.  Then write the next
@@ -530,83 +582,72 @@
 
       /* first we encode a partition codeword for each channel */
       if(s==0){
-	for(j=0;j<ch;j++){
-	  long val=partword[j][i];
-	  for(k=1;k<partitions_per_word;k++){
-	    val*=possible_partitions;
-	    if(i+k<partvals)
-	      val+=partword[j][i+k];
-	  }	
+        for(j=0;j<ch;j++){
+          long val=partword[j][i];
+          for(k=1;k<partitions_per_word;k++){
+            val*=possible_partitions;
+            if(i+k<partvals)
+              val+=partword[j][i+k];
+          }
 
-	  /* training hack */
-	  if(val<look->phrasebook->entries)
-	    look->phrasebits+=vorbis_book_encode(look->phrasebook,val,&vb->opb);
+          /* training hack */
+          if(val<look->phrasebook->entries)
+            look->phrasebits+=vorbis_book_encode(look->phrasebook,val,opb);
 #if 0 /*def TRAIN_RES*/
-	  else
-	    fprintf(stderr,"!");
+          else
+            fprintf(stderr,"!");
 #endif
-	
-	}
+
+        }
       }
-      
+
       /* now we encode interleaved residual values for the partitions */
       for(k=0;k<partitions_per_word && i<partvals;k++,i++){
-	long offset=i*samples_per_partition+info->begin;
-	
-	for(j=0;j<ch;j++){
-	  if(s==0)resvals[partword[j][i]]+=samples_per_partition;
-	  if(info->secondstages[partword[j][i]]&(1<<s)){
-	    codebook *statebook=look->partbooks[partword[j][i]][s];
-	    if(statebook){
-	      int ret;
-	      long *accumulator=NULL;
+        long offset=i*samples_per_partition+info->begin;
 
+        for(j=0;j<ch;j++){
+          if(s==0)resvals[partword[j][i]]+=samples_per_partition;
+          if(info->secondstages[partword[j][i]]&(1<<s)){
+            codebook *statebook=look->partbooks[partword[j][i]][s];
+            if(statebook){
+              int ret;
 #ifdef TRAIN_RES
-	      accumulator=look->training_data[s][partword[j][i]];
-	      {
-		int l;
-		float *samples=in[j]+offset;
-		for(l=0;l<samples_per_partition;l++){
-		  if(samples[l]<look->training_min[s][partword[j][i]])
-		    look->training_min[s][partword[j][i]]=samples[l];
-		  if(samples[l]>look->training_max[s][partword[j][i]])
-		    look->training_max[s][partword[j][i]]=samples[l];
-		}
-	      }
+              long *accumulator=NULL;
+              accumulator=look->training_data[s][partword[j][i]];
+              {
+                int l;
+                int *samples=in[j]+offset;
+                for(l=0;l<samples_per_partition;l++){
+                  if(samples[l]<look->training_min[s][partword[j][i]])
+                    look->training_min[s][partword[j][i]]=samples[l];
+                  if(samples[l]>look->training_max[s][partword[j][i]])
+                    look->training_max[s][partword[j][i]]=samples[l];
+                }
+              }
+              ret=encode(opb,in[j]+offset,samples_per_partition,
+                         statebook,accumulator);
+#else
+              ret=encode(opb,in[j]+offset,samples_per_partition,
+                         statebook);
 #endif
-	      
-	      ret=encode(&vb->opb,in[j]+offset,samples_per_partition,
-			 statebook,accumulator);
 
-	      look->postbits+=ret;
-	      resbits[partword[j][i]]+=ret;
-	    }
-	  }
-	}
+              look->postbits+=ret;
+              resbits[partword[j][i]]+=ret;
+            }
+          }
+        }
       }
     }
   }
 
-  /*{
-    long total=0;
-    long totalbits=0;
-    fprintf(stderr,"%d :: ",vb->mode);
-    for(k=0;k<possible_partitions;k++){
-      fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]);
-      total+=resvals[k];
-      totalbits+=resbits[k];
-      }
-    
-    fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total);
-    }*/
   return(0);
 }
 
 /* a truncated packet here just means 'stop working'; it's not an error */
 static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
-		      float **in,int ch,
-		      long (*decodepart)(codebook *, float *, 
-					 oggpack_buffer *,int)){
+                      float **in,int ch,
+                      long (*decodepart)(codebook *, float *,
+                                         oggpack_buffer *,int)){
 
   long i,j,k,l,s;
   vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
@@ -615,135 +656,82 @@
   /* move all this setup out later */
   int samples_per_partition=info->grouping;
   int partitions_per_word=look->phrasebook->dim;
-  int n=info->end-info->begin;
-  
-  int partvals=n/samples_per_partition;
-  int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
-  int ***partword=malloc(ch*sizeof(*partword));
+  int max=vb->pcmend>>1;
+  int end=(info->end<max?info->end:max);
+  int n=end-info->begin;
 
-  for(j=0;j<ch;j++)
-    partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
+  if(n>0){
+    int partvals=n/samples_per_partition;
+    int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+    int ***partword=malloc(ch*sizeof(*partword));
 
-  for(s=0;s<look->stages;s++){
+    for(j=0;j<ch;j++)
+      partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
 
-    /* each loop decodes on partition codeword containing 
-       partitions_pre_word partitions */
-    for(i=0,l=0;i<partvals;l++){
-      if(s==0){
-	/* fetch the partition word for each channel */
-	for(j=0;j<ch;j++){
-	  int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
-	  if(temp==-1)goto eopbreak;
-	  partword[j][l]=look->decodemap[temp];
-	  if(partword[j][l]==NULL)goto errout;
-	}
+    for(s=0;s<look->stages;s++){
+
+      /* each loop decodes on partition codeword containing
+         partitions_per_word partitions */
+      for(i=0,l=0;i<partvals;l++){
+        if(s==0){
+          /* fetch the partition word for each channel */
+          for(j=0;j<ch;j++){
+            int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
+
+            if(temp==-1 || temp>=info->partvals)goto eopbreak;
+            partword[j][l]=look->decodemap[temp];
+            if(partword[j][l]==NULL)goto errout;
+          }
+        }
+
+        /* now we decode residual values for the partitions */
+        for(k=0;k<partitions_per_word && i<partvals;k++,i++)
+          for(j=0;j<ch;j++){
+            long offset=info->begin+i*samples_per_partition;
+            if(info->secondstages[partword[j][l][k]]&(1<<s)){
+              codebook *stagebook=look->partbooks[partword[j][l][k]][s];
+              if(stagebook){
+                if(decodepart(stagebook,in[j]+offset,&vb->opb,
+                              samples_per_partition)==-1)goto eopbreak;
+              }
+            }
+          }
       }
-      
-      /* now we decode residual values for the partitions */
-      for(k=0;k<partitions_per_word && i<partvals;k++,i++)
-	for(j=0;j<ch;j++){
-	  long offset=info->begin+i*samples_per_partition;
-	  if(info->secondstages[partword[j][l][k]]&(1<<s)){
-	    codebook *stagebook=look->partbooks[partword[j][l][k]][s];
-	    if(stagebook){
-	      if(decodepart(stagebook,in[j]+offset,&vb->opb,
-			    samples_per_partition)==-1)goto eopbreak;
-	    }
-	  }
-	}
-    } 
+    }
+    free(partword);
   }
-  
  errout:
  eopbreak:
-  free(partword);
   return(0);
 }
 
-#if 0
-/* residue 0 and 1 are just slight variants of one another. 0 is
-   interleaved, 1 is not */
-long **res0_class(vorbis_block *vb,vorbis_look_residue *vl,
-		  float **in,int *nonzero,int ch){
-  /* we encode only the nonzero parts of a bundle */
+int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
+                 float **in,int *nonzero,int ch){
   int i,used=0;
   for(i=0;i<ch;i++)
     if(nonzero[i])
       in[used++]=in[i];
   if(used)
-    /*return(_01class(vb,vl,in,used,_interleaved_testhack));*/
-    return(_01class(vb,vl,in,used));
+    return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add));
   else
     return(0);
 }
 
-int res0_forward(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,float **out,int *nonzero,int ch,
-		 long **partword){
-  /* we encode only the nonzero parts of a bundle */
-  int i,j,used=0,n=vb->pcmend/2;
-  for(i=0;i<ch;i++)
-    if(nonzero[i]){
-      if(out)
-	for(j=0;j<n;j++)
-	  out[i][j]+=in[i][j];
-      in[used++]=in[i];
-    }
-  if(used){
-    int ret=_01forward(vb,vl,in,used,partword,
-		      _interleaved_encodepart);
-    if(out){
-      used=0;
-      for(i=0;i<ch;i++)
-	if(nonzero[i]){
-	  for(j=0;j<n;j++)
-	    out[i][j]-=in[used][j];
-	  used++;
-	}
-    }
-    return(ret);
-  }else{
-    return(0);
-  }
-}
-#endif
-
-int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,int *nonzero,int ch){
+int res1_forward(oggpack_buffer *opb,vorbis_block *vb,vorbis_look_residue *vl,
+                 int **in,int *nonzero,int ch, long **partword, int submap){
   int i,used=0;
+  (void)vb;
   for(i=0;i<ch;i++)
     if(nonzero[i])
       in[used++]=in[i];
-  if(used)
-    return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add));
-  else
-    return(0);
-}
 
-int res1_forward(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,float **out,int *nonzero,int ch,
-		 long **partword){
-  int i,j,used=0,n=vb->pcmend/2;
-  for(i=0;i<ch;i++)
-    if(nonzero[i]){
-      if(out)
-	for(j=0;j<n;j++)
-	  out[i][j]+=in[i][j];
-      in[used++]=in[i];
-    }
-
   if(used){
-    int ret=_01forward(vb,vl,in,used,partword,_encodepart);
-    if(out){
-      used=0;
-      for(i=0;i<ch;i++)
-	if(nonzero[i]){
-	  for(j=0;j<n;j++)
-	    out[i][j]-=in[used][j];
-	  used++;
-	}
-    }
-    return(ret);
+#ifdef TRAIN_RES
+    return _01forward(opb,vl,in,used,partword,_encodepart,submap);
+#else
+    (void)submap;
+    return _01forward(opb,vl,in,used,partword,_encodepart);
+#endif
   }else{
     return(0);
   }
@@ -750,7 +738,7 @@
 }
 
 long **res1_class(vorbis_block *vb,vorbis_look_residue *vl,
-		  float **in,int *nonzero,int ch){
+                  int **in,int *nonzero,int ch){
   int i,used=0;
   for(i=0;i<ch;i++)
     if(nonzero[i])
@@ -762,7 +750,7 @@
 }
 
 int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,int *nonzero,int ch){
+                 float **in,int *nonzero,int ch){
   int i,used=0;
   for(i=0;i<ch;i++)
     if(nonzero[i])
@@ -774,7 +762,7 @@
 }
 
 long **res2_class(vorbis_block *vb,vorbis_look_residue *vl,
-		  float **in,int *nonzero,int ch){
+                  int **in,int *nonzero,int ch){
   int i,used=0;
   for(i=0;i<ch;i++)
     if(nonzero[i])used++;
@@ -787,35 +775,29 @@
 /* res2 is slightly more different; all the channels are interleaved
    into a single vector and encoded. */
 
-int res2_forward(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,float **out,int *nonzero,int ch,
-		 long **partword){
+int res2_forward(oggpack_buffer *opb,
+                 vorbis_block *vb,vorbis_look_residue *vl,
+                 int **in,int *nonzero,int ch, long **partword,int submap){
   long i,j,k,n=vb->pcmend/2,used=0;
 
   /* don't duplicate the code; use a working vector hack for now and
      reshape ourselves into a single channel res1 */
   /* ugly; reallocs for each coupling pass :-( */
-  float *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work));
+  int *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work));
   for(i=0;i<ch;i++){
-    float *pcm=in[i];
+    int *pcm=in[i];
     if(nonzero[i])used++;
     for(j=0,k=i;j<n;j++,k+=ch)
       work[k]=pcm[j];
   }
-  
+
   if(used){
-    int ret=_01forward(vb,vl,&work,1,partword,_encodepart);
-    /* update the sofar vector */
-    if(out){
-      for(i=0;i<ch;i++){
-	float *pcm=in[i];
-	float *sofar=out[i];
-	for(j=0,k=i;j<n;j++,k+=ch)
-	  sofar[j]+=pcm[j]-work[k];
-	
-      }
-    }
-    return(ret);
+#ifdef TRAIN_RES
+    return _01forward(opb,vl,&work,1,partword,_encodepart,submap);
+#else
+    (void)submap;
+    return _01forward(opb,vl,&work,1,partword,_encodepart);
+#endif
   }else{
     return(0);
   }
@@ -823,7 +805,7 @@
 
 /* duplicate code here as speed is somewhat more important */
 int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
-		 float **in,int *nonzero,int ch){
+                 float **in,int *nonzero,int ch){
   long i,k,l,s;
   vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
   vorbis_info_residue0 *info=look->info;
@@ -831,41 +813,44 @@
   /* move all this setup out later */
   int samples_per_partition=info->grouping;
   int partitions_per_word=look->phrasebook->dim;
-  int n=info->end-info->begin;
+  int max=(vb->pcmend*ch)>>1;
+  int end=(info->end<max?info->end:max);
+  int n=end-info->begin;
 
-  int partvals=n/samples_per_partition;
-  int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
-  int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword));
+  if(n>0){
+    int partvals=n/samples_per_partition;
+    int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+    int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword));
 
-  for(i=0;i<ch;i++)if(nonzero[i])break;
-  if(i==ch)return(0); /* no nonzero vectors */
+    for(i=0;i<ch;i++)if(nonzero[i])break;
+    if(i==ch)return(0); /* no nonzero vectors */
 
-  for(s=0;s<look->stages;s++){
-    for(i=0,l=0;i<partvals;l++){
+    for(s=0;s<look->stages;s++){
+      for(i=0,l=0;i<partvals;l++){
 
-      if(s==0){
-	/* fetch the partition word */
-	int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
-	if(temp==-1)goto eopbreak;
-	partword[l]=look->decodemap[temp];
-	if(partword[l]==NULL)goto errout;
-      }
+        if(s==0){
+          /* fetch the partition word */
+          int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
+          if(temp==-1 || temp>=info->partvals)goto eopbreak;
+          partword[l]=look->decodemap[temp];
+          if(partword[l]==NULL)goto errout;
+        }
 
-      /* now we decode residual values for the partitions */
-      for(k=0;k<partitions_per_word && i<partvals;k++,i++)
-	if(info->secondstages[partword[l][k]]&(1<<s)){
-	  codebook *stagebook=look->partbooks[partword[l][k]][s];
-	  
-	  if(stagebook){
-	    if(vorbis_book_decodevv_add(stagebook,in,
-					i*samples_per_partition+info->begin,ch,
-					&vb->opb,samples_per_partition)==-1)
-	      goto eopbreak;
-	  }
-	}
-    } 
+        /* now we decode residual values for the partitions */
+        for(k=0;k<partitions_per_word && i<partvals;k++,i++)
+          if(info->secondstages[partword[l][k]]&(1<<s)){
+            codebook *stagebook=look->partbooks[partword[l][k]][s];
+
+            if(stagebook){
+              if(vorbis_book_decodevv_add(stagebook,in,
+                                          i*samples_per_partition+info->begin,ch,
+                                          &vb->opb,samples_per_partition)==-1)
+                goto eopbreak;
+            }
+          }
+      }
+    }
   }
-  
  errout:
  eopbreak:
   return(0);
@@ -872,7 +857,7 @@
 }
 
 
-vorbis_func_residue residue0_exportbundle={
+const vorbis_func_residue residue0_exportbundle={
   NULL,
   &res0_unpack,
   &res0_look,
@@ -883,7 +868,7 @@
   &res0_inverse
 };
 
-vorbis_func_residue residue1_exportbundle={
+const vorbis_func_residue residue1_exportbundle={
   &res0_pack,
   &res0_unpack,
   &res0_look,
@@ -894,7 +879,7 @@
   &res1_inverse
 };
 
-vorbis_func_residue residue2_exportbundle={
+const vorbis_func_residue residue2_exportbundle={
   &res0_pack,
   &res0_unpack,
   &res0_look,
@@ -904,4 +889,3 @@
   &res2_forward,
   &res2_inverse
 };
-
--- a/sys/src/cmd/audio/libvorbis/scales.h
+++ b/sys/src/cmd/audio/libvorbis/scales.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: linear scale -> dB, Bark and Mel scales
- last mod: $Id: scales.h,v 1.26 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: scales.h 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -21,31 +21,36 @@
 #include <math.h>
 #include "os.h"
 
+#ifdef _MSC_VER
+/* MS Visual Studio doesn't have C99 inline keyword. */
+#define inline __inline
+#endif
+
 /* 20log10(x) */
 #define VORBIS_IEEE_FLOAT32 1
 #ifdef VORBIS_IEEE_FLOAT32
 
-static float unitnorm(float x){
-  ogg_uint32_t *ix=(ogg_uint32_t *)&x;
-  *ix=(*ix&0x80000000UL)|(0x3f800000UL);
-  return(x);
+static inline float unitnorm(float x){
+  union {
+    ogg_uint32_t i;
+    float f;
+  } ix;
+  ix.f = x;
+  ix.i = (ix.i & 0x80000000U) | (0x3f800000U);
+  return ix.f;
 }
 
-static float FABS(float *x){
-  ogg_uint32_t *ix=(ogg_uint32_t *)x;
-  *ix&=0x7fffffffUL;
-  return(*x);
+/* Segher was off (too high) by ~ .3 decibel.  Center the conversion correctly. */
+static inline float todB(const float *x){
+  union {
+    ogg_uint32_t i;
+    float f;
+  } ix;
+  ix.f = *x;
+  ix.i = ix.i&0x7fffffff;
+  return (float)(ix.i * 7.17711438e-7f -764.6161886f);
 }
 
-static float todB(const float *x){
-  float calc;
-  ogg_int32_t *i=(ogg_int32_t *)x;
-  calc = ((*i) & 0x7fffffff);
-  calc *= 7.1771144e-7f;
-  calc += -764.27118f;
-  return calc;
-}
-
 #define todB_nn(x) todB(x)
 
 #else
@@ -55,14 +60,12 @@
   return(1.f);
 }
 
-#define FABS(x) fabs(*(x))
-
 #define todB(x)   (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f)
 #define todB_nn(x)   (*(x)==0.f?-400.f:log(*(x))*8.6858896f)
 
-#endif 
+#endif
 
-#define fromdB(x) (exp((x)*.11512925f))  
+#define fromdB(x) (exp((x)*.11512925f))
 
 /* The bark scale equations are approximations, since the original
    table was somewhat hand rolled.  The below are chosen to have the
@@ -85,4 +88,3 @@
 #define fromOC(o)   (exp(((o)+5.965784f)*.693147f))
 
 #endif
-
--- a/sys/src/cmd/audio/libvorbis/sharedbook.c
+++ b/sys/src/cmd/audio/libvorbis/sharedbook.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: basic shared codebook operations
- last mod: $Id: sharedbook.c,v 1.28 2002/06/28 22:19:37 xiphmont Exp $
+ last mod: $Id: sharedbook.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -26,17 +26,15 @@
 #include "scales.h"
 
 /**** pack/unpack helpers ******************************************/
-int _ilog(unsigned int v){
-  int ret=0;
-  while(v){
-    ret++;
-    v>>=1;
-  }
-  return(ret);
+
+int ov_ilog(ogg_uint32_t v){
+  int ret;
+  for(ret=0;v;ret++)v>>=1;
+  return ret;
 }
 
 /* 32 bit float (not IEEE; nonnormalized mantissa +
-   biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm 
+   biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm
    Why not IEEE?  It's just not that important here. */
 
 #define VQ_FEXP 10
@@ -52,7 +50,7 @@
     sign=0x80000000;
     val= -val;
   }
-  exp= floor(log(val)/log(2.f));
+  exp= floor(log(val)/log(2.f)+.001); //+epsilon
   mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
   exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
 
@@ -70,7 +68,7 @@
 /* given a list of word lengths, generate a list of codewords.  Works
    for length ordered or unordered, always assigns the lowest valued
    codewords first.  Extended to handle unused entries (length 0) */
-ogg_uint32_t *_make_words(long *l,long n,long sparsecount){
+ogg_uint32_t *_make_words(char *l,long n,long sparsecount){
   long i,j,count=0;
   ogg_uint32_t marker[33];
   ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r));
@@ -80,51 +78,63 @@
     long length=l[i];
     if(length>0){
       ogg_uint32_t entry=marker[length];
-      
+
       /* when we claim a node for an entry, we also claim the nodes
-	 below it (pruning off the imagined tree that may have dangled
-	 from it) as well as blocking the use of any nodes directly
-	 above for leaves */
-      
+         below it (pruning off the imagined tree that may have dangled
+         from it) as well as blocking the use of any nodes directly
+         above for leaves */
+
       /* update ourself */
       if(length<32 && (entry>>length)){
-	/* error condition; the lengths must specify an overpopulated tree */
-	_ogg_free(r);
-	return(NULL);
+        /* error condition; the lengths must specify an overpopulated tree */
+        _ogg_free(r);
+        return(NULL);
       }
       r[count++]=entry;
-    
+
       /* Look to see if the next shorter marker points to the node
-	 above. if so, update it and repeat.  */
+         above. if so, update it and repeat.  */
       {
-	for(j=length;j>0;j--){
-	  
-	  if(marker[j]&1){
-	    /* have to jump branches */
-	    if(j==1)
-	      marker[1]++;
-	    else
-	      marker[j]=marker[j-1]<<1;
-	    break; /* invariant says next upper marker would already
-		      have been moved if it was on the same path */
-	  }
-	  marker[j]++;
-	}
+        for(j=length;j>0;j--){
+
+          if(marker[j]&1){
+            /* have to jump branches */
+            if(j==1)
+              marker[1]++;
+            else
+              marker[j]=marker[j-1]<<1;
+            break; /* invariant says next upper marker would already
+                      have been moved if it was on the same path */
+          }
+          marker[j]++;
+        }
       }
-      
+
       /* prune the tree; the implicit invariant says all the longer
-	 markers were dangling from our just-taken node.  Dangle them
-	 from our *new* node. */
+         markers were dangling from our just-taken node.  Dangle them
+         from our *new* node. */
       for(j=length+1;j<33;j++)
-	if((marker[j]>>1) == entry){
-	  entry=marker[j];
-	  marker[j]=marker[j-1]<<1;
-	}else
-	  break;
+        if((marker[j]>>1) == entry){
+          entry=marker[j];
+          marker[j]=marker[j-1]<<1;
+        }else
+          break;
     }else
       if(sparsecount==0)count++;
   }
-    
+
+  /* any underpopulated tree must be rejected. */
+  /* Single-entry codebooks are a retconned extension to the spec.
+     They have a single codeword '0' of length 1 that results in an
+     underpopulated tree.  Shield that case from the underformed tree check. */
+  if(!(count==1 && marker[2]==2)){
+    for(i=1;i<33;i++)
+      if(marker[i] & (0xffffffffUL>>(32-i))){
+        _ogg_free(r);
+        return(NULL);
+      }
+  }
+
   /* bitreverse the words because our bitwise packer/unpacker is LSb
      endian */
   for(i=0,count=0;i<n;i++){
@@ -136,7 +146,7 @@
 
     if(sparsecount){
       if(l[i])
-	r[count++]=temp;
+        r[count++]=temp;
     }else
       r[count++]=temp;
   }
@@ -167,9 +177,9 @@
       return(vals);
     }else{
       if(acc>b->entries){
-	vals--;
+        vals--;
       }else{
-	vals++;
+        vals++;
       }
     }
   }
@@ -193,49 +203,49 @@
     switch(b->maptype){
     case 1:
       /* most of the time, entries%dimensions == 0, but we need to be
-	 well defined.  We define that the possible vales at each
-	 scalar is values == entries/dim.  If entries%dim != 0, we'll
-	 have 'too few' values (values*dim<entries), which means that
-	 we'll have 'left over' entries; left over entries use zeroed
-	 values (and are wasted).  So don't generate codebooks like
-	 that */
+         well defined.  We define that the possible vales at each
+         scalar is values == entries/dim.  If entries%dim != 0, we'll
+         have 'too few' values (values*dim<entries), which means that
+         we'll have 'left over' entries; left over entries use zeroed
+         values (and are wasted).  So don't generate codebooks like
+         that */
       quantvals=_book_maptype1_quantvals(b);
       for(j=0;j<b->entries;j++){
-	if((sparsemap && b->lengthlist[j]) || !sparsemap){
-	  float last=0.f;
-	  int indexdiv=1;
-	  for(k=0;k<b->dim;k++){
-	    int index= (j/indexdiv)%quantvals;
-	    float val=b->quantlist[index];
-	    val=fabs(val)*delta+mindel+last;
-	    if(b->q_sequencep)last=val;	  
-	    if(sparsemap)
-	      r[sparsemap[count]*b->dim+k]=val;
-	    else
-	      r[count*b->dim+k]=val;
-	    indexdiv*=quantvals;
-	  }
-	  count++;
-	}
+        if((sparsemap && b->lengthlist[j]) || !sparsemap){
+          float last=0.f;
+          int indexdiv=1;
+          for(k=0;k<b->dim;k++){
+            int index= (j/indexdiv)%quantvals;
+            float val=b->quantlist[index];
+            val=fabs(val)*delta+mindel+last;
+            if(b->q_sequencep)last=val;
+            if(sparsemap)
+              r[sparsemap[count]*b->dim+k]=val;
+            else
+              r[count*b->dim+k]=val;
+            indexdiv*=quantvals;
+          }
+          count++;
+        }
 
       }
       break;
     case 2:
       for(j=0;j<b->entries;j++){
-	if((sparsemap && b->lengthlist[j]) || !sparsemap){
-	  float last=0.f;
-	  
-	  for(k=0;k<b->dim;k++){
-	    float val=b->quantlist[j*b->dim+k];
-	    val=fabs(val)*delta+mindel+last;
-	    if(b->q_sequencep)last=val;	  
-	    if(sparsemap)
-	      r[sparsemap[count]*b->dim+k]=val;
-	    else
-	      r[count*b->dim+k]=val;
-	  }
-	  count++;
-	}
+        if((sparsemap && b->lengthlist[j]) || !sparsemap){
+          float last=0.f;
+
+          for(k=0;k<b->dim;k++){
+            float val=b->quantlist[j*b->dim+k];
+            val=fabs(val)*delta+mindel+last;
+            if(b->q_sequencep)last=val;
+            if(sparsemap)
+              r[sparsemap[count]*b->dim+k]=val;
+            else
+              r[count*b->dim+k]=val;
+          }
+          count++;
+        }
       }
       break;
     }
@@ -245,34 +255,13 @@
   return(NULL);
 }
 
-void vorbis_staticbook_clear(static_codebook *b){
+void vorbis_staticbook_destroy(static_codebook *b){
   if(b->allocedp){
     if(b->quantlist)_ogg_free(b->quantlist);
     if(b->lengthlist)_ogg_free(b->lengthlist);
-    if(b->nearest_tree){
-      _ogg_free(b->nearest_tree->ptr0);
-      _ogg_free(b->nearest_tree->ptr1);
-      _ogg_free(b->nearest_tree->p);
-      _ogg_free(b->nearest_tree->q);
-      memset(b->nearest_tree,0,sizeof(*b->nearest_tree));
-      _ogg_free(b->nearest_tree);
-    }
-    if(b->thresh_tree){
-      _ogg_free(b->thresh_tree->quantthresh);
-      _ogg_free(b->thresh_tree->quantmap);
-      memset(b->thresh_tree,0,sizeof(*b->thresh_tree));
-      _ogg_free(b->thresh_tree);
-    }
-
     memset(b,0,sizeof(*b));
-  }
-}
-
-void vorbis_staticbook_destroy(static_codebook *b){
-  if(b->allocedp){
-    vorbis_staticbook_clear(b);
     _ogg_free(b);
-  }
+  } /* otherwise, it is in static memory */
 }
 
 void vorbis_book_clear(codebook *b){
@@ -296,7 +285,10 @@
   c->used_entries=s->entries;
   c->dim=s->dim;
   c->codelist=_make_words(s->lengthlist,s->entries,0);
-  c->valuelist=_book_unquantize(s,s->entries,NULL);
+  //c->valuelist=_book_unquantize(s,s->entries,NULL);
+  c->quantvals=_book_maptype1_quantvals(s);
+  c->minval=(int)rint(_float32_unpack(s->q_min));
+  c->delta=(int)rint(_float32_unpack(s->q_delta));
 
   return(0);
 }
@@ -310,7 +302,8 @@
 }
 
 static int sort32a(const void *a,const void *b){
-  return ( (**(ogg_uint32_t **)a>**(ogg_uint32_t **)b)<<1)-1;
+  return ( **(ogg_uint32_t **)a>**(ogg_uint32_t **)b)-
+    ( **(ogg_uint32_t **)a<**(ogg_uint32_t **)b);
 }
 
 /* decode codebook arrangement is more heavily optimized than encode */
@@ -317,9 +310,10 @@
 int vorbis_book_init_decode(codebook *c,const static_codebook *s){
   int i,j,n=0,tabn;
   int *sortindex;
+
   memset(c,0,sizeof(*c));
-  
-  /* count actually used entries */
+
+  /* count actually used entries and find max length */
   for(i=0;i<s->entries;i++)
     if(s->lengthlist[i]>0)
       n++;
@@ -328,23 +322,23 @@
   c->used_entries=n;
   c->dim=s->dim;
 
-  /* two different remappings go on here.  
+  if(n>0){
+    /* two different remappings go on here.
 
-     First, we collapse the likely sparse codebook down only to
-     actually represented values/words.  This collapsing needs to be
-     indexed as map-valueless books are used to encode original entry
-     positions as integers.
+    First, we collapse the likely sparse codebook down only to
+    actually represented values/words.  This collapsing needs to be
+    indexed as map-valueless books are used to encode original entry
+    positions as integers.
 
-     Second, we reorder all vectors, including the entry index above,
-     by sorted bitreversed codeword to allow treeless decode. */
+    Second, we reorder all vectors, including the entry index above,
+    by sorted bitreversed codeword to allow treeless decode. */
 
-  {
     /* perform sort */
     ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries);
     ogg_uint32_t **codep;
-    if(codes==NULL) goto err_out;
 
-    codep=malloc(sizeof(*codep)*n);
+    if(codes==NULL)goto err_out;
+    codep = malloc(sizeof(*codep)*n);
 
     for(i=0;i<n;i++){
       codes[i]=bitreverse(codes[i]);
@@ -364,225 +358,83 @@
     for(i=0;i<n;i++)
       c->codelist[sortindex[i]]=codes[i];
     _ogg_free(codes);
-    free(codep);
-  }
 
-  c->valuelist=_book_unquantize(s,n,sortindex);
-  c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index));
+    c->valuelist=_book_unquantize(s,n,sortindex);
+    c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index));
 
-  for(n=0,i=0;i<s->entries;i++)
-    if(s->lengthlist[i]>0)
-      c->dec_index[sortindex[n++]]=i;
-  
-  c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths));
-  for(n=0,i=0;i<s->entries;i++)
-    if(s->lengthlist[i]>0)
-      c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
+    for(n=0,i=0;i<s->entries;i++)
+      if(s->lengthlist[i]>0)
+        c->dec_index[sortindex[n++]]=i;
 
-  c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */
-  if(c->dec_firsttablen<5)c->dec_firsttablen=5;
-  if(c->dec_firsttablen>8)c->dec_firsttablen=8;
-
-  tabn=1<<c->dec_firsttablen;
-  c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable));
-  c->dec_maxlength=0;
-
-  for(i=0;i<n;i++){
-    if(c->dec_maxlength<c->dec_codelengths[i])
-      c->dec_maxlength=c->dec_codelengths[i];
-    if(c->dec_codelengths[i]<=c->dec_firsttablen){
-      ogg_uint32_t orig=bitreverse(c->codelist[i]);
-      for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++)
-	c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1;
-    }
-  }
-
-  /* now fill in 'unused' entries in the firsttable with hi/lo search
-     hints for the non-direct-hits */
-  {
-    ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen);
-    long lo=0,hi=0;
-
-    for(i=0;i<tabn;i++){
-      ogg_uint32_t word=i<<(32-c->dec_firsttablen);
-      if(c->dec_firsttable[bitreverse(word)]==0){
-	while((lo+1)<n && c->codelist[lo+1]<=word)lo++;
-	while(    hi<n && word>=(c->codelist[hi]&mask))hi++;
-	
-	/* we only actually have 15 bits per hint to play with here.
-           In order to overflow gracefully (nothing breaks, efficiency
-           just drops), encode as the difference from the extremes. */
-	{
-	  unsigned long loval=lo;
-	  unsigned long hival=n-hi;
-
-	  if(loval>0x7fff)loval=0x7fff;
-	  if(hival>0x7fff)hival=0x7fff;
-	  c->dec_firsttable[bitreverse(word)]=
-	    0x80000000UL | (loval<<15) | hival;
-	}
+    c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths));
+    c->dec_maxlength=0;
+    for(n=0,i=0;i<s->entries;i++)
+      if(s->lengthlist[i]>0){
+        c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
+        if(s->lengthlist[i]>c->dec_maxlength)
+          c->dec_maxlength=s->lengthlist[i];
       }
-    }
-  }
-  
 
-  free(sortindex);
-  return(0);
- err_out:
-  vorbis_book_clear(c);
-  free(sortindex);
-  return(-1);
-}
+    if(n==1 && c->dec_maxlength==1){
+      /* special case the 'single entry codebook' with a single bit
+       fastpath table (that always returns entry 0 )in order to use
+       unmodified decode paths. */
+      c->dec_firsttablen=1;
+      c->dec_firsttable=_ogg_calloc(2,sizeof(*c->dec_firsttable));
+      c->dec_firsttable[0]=c->dec_firsttable[1]=1;
 
-static float _dist(int el,float *ref, float *b,int step){
-  int i;
-  float acc=0.f;
-  for(i=0;i<el;i++){
-    float val=(ref[i]-b[i*step]);
-    acc+=val*val;
-  }
-  return(acc);
-}
+    }else{
+      c->dec_firsttablen=ov_ilog(c->used_entries)-4; /* this is magic */
+      if(c->dec_firsttablen<5)c->dec_firsttablen=5;
+      if(c->dec_firsttablen>8)c->dec_firsttablen=8;
 
-int _best(codebook *book, float *a, int step){
-  encode_aux_threshmatch *tt=book->c->thresh_tree;
+      tabn=1<<c->dec_firsttablen;
+      c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable));
 
-#if 0
-  encode_aux_nearestmatch *nt=book->c->nearest_tree;
-  encode_aux_pigeonhole *pt=book->c->pigeon_tree;
-#endif
-  int dim=book->dim;
-  int k,o;
-  /*int savebest=-1;
-    float saverr;*/
-
-  /* do we have a threshhold encode hint? */
-  if(tt){
-    int index=0,i;
-    /* find the quant val of each scalar */
-    for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
-
-      i=tt->threshvals>>1;
-      if(a[o]<tt->quantthresh[i]){
-
-	for(;i>0;i--)
-	  if(a[o]>=tt->quantthresh[i-1])
-	    break;
-	
-      }else{
-
-	for(i++;i<tt->threshvals-1;i++)
-	  if(a[o]<tt->quantthresh[i])break;
-
+      for(i=0;i<n;i++){
+        if(c->dec_codelengths[i]<=c->dec_firsttablen){
+          ogg_uint32_t orig=bitreverse(c->codelist[i]);
+          for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++)
+            c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1;
+        }
       }
 
-      index=(index*tt->quantvals)+tt->quantmap[i];
-    }
-    /* regular lattices are easy :-) */
-    if(book->c->lengthlist[index]>0) /* is this unused?  If so, we'll
-					use a decision tree after all
-					and fall through*/
-      return(index);
-  }
+      /* now fill in 'unused' entries in the firsttable with hi/lo search
+         hints for the non-direct-hits */
+      {
+        ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen);
+        long lo=0,hi=0;
 
-#if 0
-  /* do we have a pigeonhole encode hint? */
-  if(pt){
-    const static_codebook *c=book->c;
-    int i,besti=-1;
-    float best=0.f;
-    int entry=0;
+        for(i=0;i<tabn;i++){
+          ogg_uint32_t word=i<<(32-c->dec_firsttablen);
+          if(c->dec_firsttable[bitreverse(word)]==0){
+            while((lo+1)<n && c->codelist[lo+1]<=word)lo++;
+            while(    hi<n && word>=(c->codelist[hi]&mask))hi++;
 
-    /* dealing with sequentialness is a pain in the ass */
-    if(c->q_sequencep){
-      int pv;
-      long mul=1;
-      float qlast=0;
-      for(k=0,o=0;k<dim;k++,o+=step){
-	pv=(int)((a[o]-qlast-pt->min)/pt->del);
-	if(pv<0 || pv>=pt->mapentries)break;
-	entry+=pt->pigeonmap[pv]*mul;
-	mul*=pt->quantvals;
-	qlast+=pv*pt->del+pt->min;
-      }
-    }else{
-      for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
-	int pv=(int)((a[o]-pt->min)/pt->del);
-	if(pv<0 || pv>=pt->mapentries)break;
-	entry=entry*pt->quantvals+pt->pigeonmap[pv];
-      }
-    }
+            /* we only actually have 15 bits per hint to play with here.
+               In order to overflow gracefully (nothing breaks, efficiency
+               just drops), encode as the difference from the extremes. */
+            {
+              unsigned long loval=lo;
+              unsigned long hival=n-hi;
 
-    /* must be within the pigeonholable range; if we quant outside (or
-       in an entry that we define no list for), brute force it */
-    if(k==dim && pt->fitlength[entry]){
-      /* search the abbreviated list */
-      long *list=pt->fitlist+pt->fitmap[entry];
-      for(i=0;i<pt->fitlength[entry];i++){
-	float this=_dist(dim,book->valuelist+list[i]*dim,a,step);
-	if(besti==-1 || this<best){
-	  best=this;
-	  besti=list[i];
-	}
+              if(loval>0x7fff)loval=0x7fff;
+              if(hival>0x7fff)hival=0x7fff;
+              c->dec_firsttable[bitreverse(word)]=
+                0x80000000UL | (loval<<15) | hival;
+            }
+          }
+        }
       }
-
-      return(besti); 
     }
+    free(sortindex);
+    free(codep);
   }
 
-  if(nt){
-    /* optimized using the decision tree */
-    while(1){
-      float c=0.f;
-      float *p=book->valuelist+nt->p[ptr];
-      float *q=book->valuelist+nt->q[ptr];
-      
-      for(k=0,o=0;k<dim;k++,o+=step)
-	c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
-      
-      if(c>0.f) /* in A */
-	ptr= -nt->ptr0[ptr];
-      else     /* in B */
-	ptr= -nt->ptr1[ptr];
-      if(ptr<=0)break;
-    }
-    return(-ptr);
-  }
-#endif 
-
-  /* brute force it! */
-  {
-    const static_codebook *c=book->c;
-    int i,besti=-1;
-    float best=0.f;
-    float *e=book->valuelist;
-    for(i=0;i<book->entries;i++){
-      if(c->lengthlist[i]>0){
-	float this=_dist(dim,e,a,step);
-	if(besti==-1 || this<best){
-	  best=this;
-	  besti=i;
-	}
-      }
-      e+=dim;
-    }
-
-    /*if(savebest!=-1 && savebest!=besti){
-      fprintf(stderr,"brute force/pigeonhole disagreement:\n"
-	      "original:");
-      for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]);
-      fprintf(stderr,"\n"
-	      "pigeonhole (entry %d, err %g):",savebest,saverr);
-      for(i=0;i<dim;i++)fprintf(stderr,"%g,",
-				(book->valuelist+savebest*dim)[i]);
-      fprintf(stderr,"\n"
-	      "bruteforce (entry %d, err %g):",besti,best);
-      for(i=0;i<dim;i++)fprintf(stderr,"%g,",
-				(book->valuelist+besti*dim)[i]);
-      fprintf(stderr,"\n");
-      }*/
-    return(besti);
-  }
+  return(0);
+ err_out:
+  vorbis_book_clear(c);
+  return(-1);
 }
 
 long vorbis_book_codeword(codebook *book,int entry){
@@ -627,10 +479,10 @@
   0,
   0,0,0,0,
   NULL,
-  NULL,NULL
+  0
 };
 static float *test1_result=NULL;
-  
+
 /* linear, full mapping, nonsequential */
 static_codebook test2={
   4,3,
@@ -638,7 +490,7 @@
   2,
   -533200896,1611661312,4,0,
   full_quantlist1,
-  NULL,NULL
+  0
 };
 static float test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2};
 
@@ -649,7 +501,7 @@
   2,
   -533200896,1611661312,4,1,
   full_quantlist1,
-  NULL,NULL
+  0
 };
 static float test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6};
 
@@ -660,17 +512,17 @@
   1,
   -533200896,1611661312,4,0,
   partial_quantlist1,
-  NULL,NULL
+  0
 };
 static float test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3,
-			      -3, 4,-3, 4, 4,-3, -1, 4,-3,
-			      -3,-1,-3, 4,-1,-3, -1,-1,-3, 
-			      -3,-3, 4, 4,-3, 4, -1,-3, 4,
-			      -3, 4, 4, 4, 4, 4, -1, 4, 4,
-			      -3,-1, 4, 4,-1, 4, -1,-1, 4,
-			      -3,-3,-1, 4,-3,-1, -1,-3,-1,
-			      -3, 4,-1, 4, 4,-1, -1, 4,-1,
-			      -3,-1,-1, 4,-1,-1, -1,-1,-1};
+                              -3, 4,-3, 4, 4,-3, -1, 4,-3,
+                              -3,-1,-3, 4,-1,-3, -1,-1,-3,
+                              -3,-3, 4, 4,-3, 4, -1,-3, 4,
+                              -3, 4, 4, 4, 4, 4, -1, 4, 4,
+                              -3,-1, 4, 4,-1, 4, -1,-1, 4,
+                              -3,-3,-1, 4,-3,-1, -1,-3,-1,
+                              -3, 4,-1, 4, 4,-1, -1, 4,-1,
+                              -3,-1,-1, 4,-1,-1, -1,-1,-1};
 
 /* linear, algorithmic mapping, sequential */
 static_codebook test5={
@@ -679,17 +531,17 @@
   1,
   -533200896,1611661312,4,1,
   partial_quantlist1,
-  NULL,NULL
+  0
 };
 static float test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7,
-			      -3, 1,-2, 4, 8, 5, -1, 3, 0,
-			      -3,-4,-7, 4, 3, 0, -1,-2,-5, 
-			      -3,-6,-2, 4, 1, 5, -1,-4, 0,
-			      -3, 1, 5, 4, 8,12, -1, 3, 7,
-			      -3,-4, 0, 4, 3, 7, -1,-2, 2,
-			      -3,-6,-7, 4, 1, 0, -1,-4,-5,
-			      -3, 1, 0, 4, 8, 7, -1, 3, 2,
-			      -3,-4,-5, 4, 3, 2, -1,-2,-3};
+                              -3, 1,-2, 4, 8, 5, -1, 3, 0,
+                              -3,-4,-7, 4, 3, 0, -1,-2,-5,
+                              -3,-6,-2, 4, 1, 5, -1,-4, 0,
+                              -3, 1, 5, 4, 8,12, -1, 3, 7,
+                              -3,-4, 0, 4, 3, 7, -1,-2, 2,
+                              -3,-6,-7, 4, 1, 0, -1,-4,-5,
+                              -3, 1, 0, 4, 8, 7, -1, 3, 2,
+                              -3,-4,-5, 4, 3, 2, -1,-2,-3};
 
 void run_test(static_codebook *b,float *comp){
   float *out=_book_unquantize(b,b->entries,NULL);
@@ -703,15 +555,15 @@
 
     for(i=0;i<b->entries*b->dim;i++)
       if(fabs(out[i]-comp[i])>.0001){
-	fprintf(stderr,"disagreement in unquantized and reference data:\n"
-		"position %d, %g != %g\n",i,out[i],comp[i]);
-	exit(1);
+        fprintf(stderr,"disagreement in unquantized and reference data:\n"
+                "position %d, %g != %g\n",i,out[i],comp[i]);
+        exit(1);
       }
 
   }else{
     if(out){
       fprintf(stderr,"_book_unquantize returned a value array: \n"
-	      " correct result should have been NULL\n");
+              " correct result should have been NULL\n");
       exit(1);
     }
   }
@@ -730,7 +582,7 @@
   fprintf(stderr,"OK\nDequant test 5... ");
   run_test(&test5,test5_result);
   fprintf(stderr,"OK\n\n");
-  
+
   return(0);
 }
 
--- a/sys/src/cmd/audio/libvorbis/smallft.c
+++ b/sys/src/cmd/audio/libvorbis/smallft.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: *unnormalized* fft transform
- last mod: $Id: smallft.c,v 1.17 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: smallft.c 16227 2009-07-08 06:58:46Z xiphmont $
 
  ********************************************************************/
 
@@ -32,6 +32,7 @@
 #include <string.h>
 #include <math.h>
 #include "smallft.h"
+#include "os.h"
 #include "misc.h"
 
 static void drfti1(int n, float *wa, int *ifac){
@@ -93,10 +94,10 @@
       argld=(float)ld*argh;
       fi=0.f;
       for (ii=2;ii<ido;ii+=2){
-	fi+=1.f;
-	arg=fi*argld;
-	wa[i++]=cos(arg);
-	wa[i++]=sin(arg);
+        fi+=1.f;
+        arg=fi*argld;
+        wa[i++]=cos(arg);
+        wa[i++]=sin(arg);
       }
       is+=ido;
     }
@@ -124,7 +125,7 @@
     t1+=ido;
     t2+=ido;
   }
-    
+
   if(ido<2)return;
   if(ido==2)goto L105;
 
@@ -166,12 +167,12 @@
 }
 
 static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
-	    float *wa2,float *wa3){
+            float *wa2,float *wa3){
   static float hsqt2 = .70710678118654752f;
   int i,k,t0,t1,t2,t3,t4,t5,t6;
   float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
   t0=l1*ido;
-  
+
   t1=t0;
   t4=t1<<1;
   t2=t1+(t1<<1);
@@ -243,7 +244,7 @@
   if(ido&1)return;
 
  L105:
-  
+
   t2=(t1=t0+ido-1)+(t0<<1);
   t3=ido<<2;
   t4=ido;
@@ -277,7 +278,7 @@
   int nbd;
   float dcp,arg,dsp,ar1h,ar2h;
   int idp2,ipp2;
-  
+
   arg=tpi/(float)ip;
   dcp=cos(arg);
   dsp=sin(arg);
@@ -635,7 +636,7 @@
   float ti2,tr2;
 
   t0=l1*ido;
-  
+
   t1=0;
   t2=0;
   t3=(ido<<1)-1;
@@ -746,12 +747,12 @@
 }
 
 static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
-			  float *wa2,float *wa3){
+                          float *wa2,float *wa3){
   static float sqrt2=1.414213562373095f;
   int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
   float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
   t0=l1*ido;
-  
+
   t1=0;
   t2=ido<<2;
   t3=0;
@@ -760,7 +761,7 @@
     t4=t3+t6;
     t5=t1;
     tr3=cc[t4-1]+cc[t4-1];
-    tr4=cc[t4]+cc[t4]; 
+    tr4=cc[t4]+cc[t4];
     tr1=cc[t3]-cc[(t4+=t6)-1];
     tr2=cc[t3]+cc[t4-1];
     ch[t5]=tr2+tr3;
@@ -855,7 +856,7 @@
   ipp2=ip;
   ipph=(ip+1)>>1;
   if(ido<l1)goto L103;
-  
+
   t1=0;
   t2=0;
   for(k=0;k<l1;k++){
--- a/sys/src/cmd/audio/libvorbis/smallft.h
+++ b/sys/src/cmd/audio/libvorbis/smallft.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: fft transform
- last mod: $Id: smallft.h,v 1.12 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: smallft.h 13293 2007-07-24 00:09:47Z xiphmont $
 
  ********************************************************************/
 
--- a/sys/src/cmd/audio/libvorbis/synthesis.c
+++ b/sys/src/cmd/audio/libvorbis/synthesis.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: single-block PCM synthesis
- last mod: $Id: synthesis.c,v 1.28 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: synthesis.c 19441 2015-01-21 01:17:41Z xiphmont $
 
  ********************************************************************/
 
@@ -24,13 +24,17 @@
 #include "os.h"
 
 int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
-  vorbis_dsp_state     *vd=vb->vd;
-  backend_lookup_state *b=vd->backend_state;
-  vorbis_info          *vi=vd->vi;
-  codec_setup_info     *ci=vi->codec_setup;
-  oggpack_buffer       *opb=&vb->opb;
+  vorbis_dsp_state     *vd= vb ? vb->vd : 0;
+  private_state        *b= vd ? vd->backend_state : 0;
+  vorbis_info          *vi= vd ? vd->vi : 0;
+  codec_setup_info     *ci= vi ? vi->codec_setup : 0;
+  oggpack_buffer       *opb=vb ? &vb->opb : 0;
   int                   type,mode,i;
- 
+
+  if (!vd || !b || !vi || !ci || !opb) {
+    return OV_EBADPACKET;
+  }
+
   /* first things first.  Make sure decode is ready */
   _vorbis_block_ripcord(vb);
   oggpack_readinit(opb,op->packet,op->bytes);
@@ -43,9 +47,15 @@
 
   /* read our mode and pre/post windowsize */
   mode=oggpack_read(opb,b->modebits);
-  if(mode==-1)return(OV_EBADPACKET);
-  
+  if(mode==-1){
+    return(OV_EBADPACKET);
+  }
+
   vb->mode=mode;
+  if(!ci->mode_param[mode]){
+    return(OV_EBADPACKET);
+  }
+
   vb->W=ci->mode_param[mode]->blockflag;
   if(vb->W){
 
@@ -53,15 +63,17 @@
        only for window selection */
     vb->lW=oggpack_read(opb,1);
     vb->nW=oggpack_read(opb,1);
-    if(vb->nW==-1)   return(OV_EBADPACKET);
+    if(vb->nW==-1){
+      return(OV_EBADPACKET);
+    }
   }else{
     vb->lW=0;
     vb->nW=0;
   }
-  
+
   /* more setup */
   vb->granulepos=op->granulepos;
-  vb->sequence=op->packetno-3; /* first block is third packet */
+  vb->sequence=op->packetno;
   vb->eofflag=op->e_o_s;
 
   /* alloc pcm passback storage */
@@ -74,7 +86,7 @@
   type=ci->map_type[ci->mode_param[mode]->mapping];
 
   return(_mapping_P[type]->inverse(vb,ci->map_param[ci->mode_param[mode]->
-						   mapping]));
+                                                   mapping]));
 }
 
 /* used to track pcm position without actually performing decode.
@@ -81,12 +93,12 @@
    Useful for sequential 'fast forward' */
 int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op){
   vorbis_dsp_state     *vd=vb->vd;
-  backend_lookup_state *b=vd->backend_state;
+  private_state        *b=vd->backend_state;
   vorbis_info          *vi=vd->vi;
   codec_setup_info     *ci=vi->codec_setup;
   oggpack_buffer       *opb=&vb->opb;
   int                   mode;
- 
+
   /* first things first.  Make sure decode is ready */
   _vorbis_block_ripcord(vb);
   oggpack_readinit(opb,op->packet,op->bytes);
@@ -100,8 +112,12 @@
   /* read our mode and pre/post windowsize */
   mode=oggpack_read(opb,b->modebits);
   if(mode==-1)return(OV_EBADPACKET);
-  
+
   vb->mode=mode;
+  if(!ci->mode_param[mode]){
+    return(OV_EBADPACKET);
+  }
+  
   vb->W=ci->mode_param[mode]->blockflag;
   if(vb->W){
     vb->lW=oggpack_read(opb,1);
@@ -111,10 +127,10 @@
     vb->lW=0;
     vb->nW=0;
   }
-  
+
   /* more setup */
   vb->granulepos=op->granulepos;
-  vb->sequence=op->packetno-3; /* first block is third packet */
+  vb->sequence=op->packetno;
   vb->eofflag=op->e_o_s;
 
   /* no pcm */
@@ -128,7 +144,12 @@
   codec_setup_info     *ci=vi->codec_setup;
   oggpack_buffer       opb;
   int                  mode;
- 
+
+  if(ci==NULL || ci->modes<=0){
+    /* codec setup not properly intialized */
+    return(OV_EFAULT);
+  }
+
   oggpack_readinit(&opb,op->packet,op->bytes);
 
   /* Check the packet type */
@@ -137,19 +158,23 @@
     return(OV_ENOTAUDIO);
   }
 
-  {
-    int modebits=0;
-    int v=ci->modes;
-    while(v>1){
-      modebits++;
-      v>>=1;
-    }
-
-    /* read our mode and pre/post windowsize */
-    mode=oggpack_read(&opb,modebits);
-  }
-  if(mode==-1)return(OV_EBADPACKET);
+  /* read our mode and pre/post windowsize */
+  mode=oggpack_read(&opb,ov_ilog(ci->modes-1));
+  if(mode==-1 || !ci->mode_param[mode])return(OV_EBADPACKET);
   return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
 }
 
+int vorbis_synthesis_halfrate(vorbis_info *vi,int flag){
+  /* set / clear half-sample-rate mode */
+  codec_setup_info     *ci=vi->codec_setup;
 
+  /* right now, our MDCT can't handle < 64 sample windows. */
+  if(ci->blocksizes[0]<=64 && flag)return -1;
+  ci->halfrate_flag=(flag?1:0);
+  return 0;
+}
+
+int vorbis_synthesis_halfrate_p(vorbis_info *vi){
+  codec_setup_info     *ci=vi->codec_setup;
+  return ci->halfrate_flag;
+}
--- a/sys/src/cmd/audio/libvorbis/tone.c
+++ b/sys/src/cmd/audio/libvorbis/tone.c
@@ -44,10 +44,10 @@
     if(ival<-32768.f)ival=-32768.f;
 
     fprintf(stdout,"%c%c%c%c",
-	    (char)(ival&0xff),
-	    (char)((ival>>8)&0xff),
-	    (char)(ival&0xff),
-	    (char)((ival>>8)&0xff));
+            (char)(ival&0xff),
+            (char)((ival>>8)&0xff),
+            (char)(ival&0xff),
+            (char)((ival>>8)&0xff));
   }
   return(0);
 }
--- a/sys/src/cmd/audio/libvorbis/vorbis/codec.h
+++ b/sys/src/cmd/audio/libvorbis/vorbis/codec.h
@@ -6,12 +6,12 @@
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
 
  ********************************************************************
 
  function: libvorbis codec headers
- last mod: $Id: codec.h,v 1.40 2002/02/28 04:12:47 xiphmont Exp $
+ last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $
 
  ********************************************************************/
 
@@ -34,14 +34,14 @@
 
   /* The below bitrate declarations are *hints*.
      Combinations of the three values carry the following implications:
-     
-     all three set to the same value: 
+
+     all three set to the same value:
        implies a fixed rate bitstream
-     only nominal set: 
-       implies a VBR stream that averages the nominal bitrate.  No hard 
+     only nominal set:
+       implies a VBR stream that averages the nominal bitrate.  No hard
        upper/lower limit
-     upper and or lower set: 
-       implies a VBR bitstream that obeys the bitrate limits. nominal 
+     upper and or lower set:
+       implies a VBR bitstream that obeys the bitrate limits. nominal
        may also be set to give a nominal rate.
      none set:
        the coder does not care to speculate.
@@ -89,9 +89,9 @@
 
 typedef struct vorbis_block{
   /* necessary stream state for linking to the framing abstraction */
-  float  **pcm;       /* this is a pointer into local storage */ 
+  float  **pcm;       /* this is a pointer into local storage */
   oggpack_buffer opb;
-  
+
   long  lW;
   long  W;
   long  nW;
@@ -123,7 +123,7 @@
 
 /* vorbis_block is a single block of data to be processed as part of
 the analysis/synthesis stream; it belongs to a specific logical
-bitstream, but is independant from other vorbis_blocks belonging to
+bitstream, but is independent from other vorbis_blocks belonging to
 that logical bitstream. *************************************************/
 
 struct alloc_chain{
@@ -168,26 +168,30 @@
 extern void     vorbis_info_clear(vorbis_info *vi);
 extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
 extern void     vorbis_comment_init(vorbis_comment *vc);
-extern void     vorbis_comment_add(vorbis_comment *vc, char *comment); 
-extern void     vorbis_comment_add_tag(vorbis_comment *vc, 
-				       char *tag, char *contents);
-extern char    *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
-extern int      vorbis_comment_query_count(vorbis_comment *vc, char *tag);
+extern void     vorbis_comment_add(vorbis_comment *vc, const char *comment);
+extern void     vorbis_comment_add_tag(vorbis_comment *vc,
+                                       const char *tag, const char *contents);
+extern char    *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count);
+extern int      vorbis_comment_query_count(vorbis_comment *vc, const char *tag);
 extern void     vorbis_comment_clear(vorbis_comment *vc);
 
 extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
 extern int      vorbis_block_clear(vorbis_block *vb);
 extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
+extern double   vorbis_granule_time(vorbis_dsp_state *v,
+                                    ogg_int64_t granulepos);
 
+extern const char *vorbis_version_string(void);
+
 /* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
 
 extern int      vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
 extern int      vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
 extern int      vorbis_analysis_headerout(vorbis_dsp_state *v,
-					  vorbis_comment *vc,
-					  ogg_packet *op,
-					  ogg_packet *op_comm,
-					  ogg_packet *op_code);
+                                          vorbis_comment *vc,
+                                          ogg_packet *op,
+                                          ogg_packet *op_comm,
+                                          ogg_packet *op_code);
 extern float  **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
 extern int      vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
 extern int      vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
@@ -195,23 +199,29 @@
 
 extern int      vorbis_bitrate_addblock(vorbis_block *vb);
 extern int      vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
-					   ogg_packet *op);
+                                           ogg_packet *op);
 
 /* Vorbis PRIMITIVES: synthesis layer *******************************/
+extern int      vorbis_synthesis_idheader(ogg_packet *op);
 extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
-					  ogg_packet *op);
+                                          ogg_packet *op);
 
 extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
+extern int      vorbis_synthesis_restart(vorbis_dsp_state *v);
 extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
 extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
 extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
 extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
+extern int      vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
 extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
 extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
 
+extern int      vorbis_synthesis_halfrate(vorbis_info *v,int flag);
+extern int      vorbis_synthesis_halfrate_p(vorbis_info *v);
+
 /* Vorbis ERRORS and return codes ***********************************/
 
-#define OV_FALSE      -1  
+#define OV_FALSE      -1
 #define OV_EOF        -2
 #define OV_HOLE       -3
 
--- a/sys/src/cmd/audio/libvorbis/vorbis/vorbisenc.h
+++ b/sys/src/cmd/audio/libvorbis/vorbis/vorbisenc.h
@@ -6,15 +6,21 @@
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: vorbis encode-engine setup
- last mod: $Id: vorbisenc.h,v 1.10 2002/07/01 11:20:10 xiphmont Exp $
+ last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $
 
  ********************************************************************/
 
+/** \file
+ * Libvorbisenc is a convenient API for setting up an encoding
+ * environment using libvorbis. Libvorbisenc encapsulates the
+ * actions needed to set up the encoder properly.
+ */
+
 #ifndef _OV_ENC_H_
 #define _OV_ENC_H_
 
@@ -25,69 +31,406 @@
 
 #include "codec.h"
 
+/**
+ * This is the primary function within libvorbisenc for setting up managed
+ * bitrate modes.
+ *
+ * Before this function is called, the \ref vorbis_info
+ * struct should be initialized by using vorbis_info_init() from the libvorbis
+ * API.  After encoding, vorbis_info_clear() should be called.
+ *
+ * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
+ * constraints for the encoded file.  This function uses these settings to
+ * select the appropriate encoding mode and set it up.
+ *
+ * \param vi               Pointer to an initialized \ref vorbis_info struct.
+ * \param channels         The number of channels to be encoded.
+ * \param rate             The sampling rate of the source audio.
+ * \param max_bitrate      Desired maximum bitrate (limit). -1 indicates unset.
+ * \param nominal_bitrate  Desired average, or central, bitrate. -1 indicates unset.
+ * \param min_bitrate      Desired minimum bitrate. -1 indicates unset.
+ *
+ * \return Zero for success, and negative values for failure.
+ *
+ * \retval 0          Success.
+ * \retval OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
+ * \retval OV_EINVAL  Invalid setup request, eg, out of range argument.
+ * \retval OV_EIMPL   Unimplemented mode; unable to comply with bitrate request.
+ */
 extern int vorbis_encode_init(vorbis_info *vi,
-			      long channels,
-			      long rate,
-			      
-			      long max_bitrate,
-			      long nominal_bitrate,
-			      long min_bitrate);
+                              long channels,
+                              long rate,
 
+                              long max_bitrate,
+                              long nominal_bitrate,
+                              long min_bitrate);
+
+/**
+ * This function performs step-one of a three-step bitrate-managed encode
+ * setup.  It functions similarly to the one-step setup performed by \ref
+ * vorbis_encode_init but allows an application to make further encode setup
+ * tweaks using \ref vorbis_encode_ctl before finally calling \ref
+ * vorbis_encode_setup_init to complete the setup process.
+ *
+ * Before this function is called, the \ref vorbis_info struct should be
+ * initialized by using vorbis_info_init() from the libvorbis API.  After
+ * encoding, vorbis_info_clear() should be called.
+ *
+ * The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
+ * constraints for the encoded file.  This function uses these settings to
+ * select the appropriate encoding mode and set it up.
+ *
+ * \param vi                Pointer to an initialized vorbis_info struct.
+ * \param channels          The number of channels to be encoded.
+ * \param rate              The sampling rate of the source audio.
+ * \param max_bitrate       Desired maximum bitrate (limit). -1 indicates unset.
+ * \param nominal_bitrate   Desired average, or central, bitrate. -1 indicates unset.
+ * \param min_bitrate       Desired minimum bitrate. -1 indicates unset.
+ *
+ * \return Zero for success, and negative for failure.
+ *
+ * \retval 0           Success
+ * \retval OV_EFAULT   Internal logic fault; indicates a bug or heap/stack corruption.
+ * \retval OV_EINVAL   Invalid setup request, eg, out of range argument.
+ * \retval OV_EIMPL    Unimplemented mode; unable to comply with bitrate request.
+ */
 extern int vorbis_encode_setup_managed(vorbis_info *vi,
-				       long channels,
-				       long rate,
-				       
-				       long max_bitrate,
-				       long nominal_bitrate,
-				       long min_bitrate);
-  
+                                       long channels,
+                                       long rate,
+
+                                       long max_bitrate,
+                                       long nominal_bitrate,
+                                       long min_bitrate);
+
+/**
+ * This function performs step-one of a three-step variable bitrate
+ * (quality-based) encode setup.  It functions similarly to the one-step setup
+ * performed by \ref vorbis_encode_init_vbr() but allows an application to
+ * make further encode setup tweaks using \ref vorbis_encode_ctl() before
+ * finally calling \ref vorbis_encode_setup_init to complete the setup
+ * process.
+ *
+ * Before this function is called, the \ref vorbis_info struct should be
+ * initialized by using \ref vorbis_info_init() from the libvorbis API.  After
+ * encoding, vorbis_info_clear() should be called.
+ *
+ * \param vi        Pointer to an initialized vorbis_info struct.
+ * \param channels  The number of channels to be encoded.
+ * \param rate      The sampling rate of the source audio.
+ * \param quality   Desired quality level, currently from -0.1 to 1.0 (lo to hi).
+ *
+ * \return Zero for success, and negative values for failure.
+ *
+ * \retval  0          Success
+ * \retval  OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
+ * \retval  OV_EINVAL  Invalid setup request, eg, out of range argument.
+ * \retval  OV_EIMPL   Unimplemented mode; unable to comply with quality level request.
+ */
 extern int vorbis_encode_setup_vbr(vorbis_info *vi,
-				  long channels,
-				  long rate,
-				  
-				  float /* quality level from 0. (lo) to 1. (hi) */
-				  );
+                                  long channels,
+                                  long rate,
 
+                                  float quality
+                                  );
+
+/**
+ * This is the primary function within libvorbisenc for setting up variable
+ * bitrate ("quality" based) modes.
+ *
+ *
+ * Before this function is called, the vorbis_info struct should be
+ * initialized by using vorbis_info_init() from the libvorbis API. After
+ * encoding, vorbis_info_clear() should be called.
+ *
+ * \param vi           Pointer to an initialized vorbis_info struct.
+ * \param channels     The number of channels to be encoded.
+ * \param rate         The sampling rate of the source audio.
+ * \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
+ *
+ *
+ * \return Zero for success, or a negative number for failure.
+ *
+ * \retval 0           Success
+ * \retval OV_EFAULT   Internal logic fault; indicates a bug or heap/stack corruption.
+ * \retval OV_EINVAL   Invalid setup request, eg, out of range argument.
+ * \retval OV_EIMPL    Unimplemented mode; unable to comply with quality level request.
+ */
 extern int vorbis_encode_init_vbr(vorbis_info *vi,
-				  long channels,
-				  long rate,
-				  
-				  float base_quality /* quality level from 0. (lo) to 1. (hi) */
-				  );
+                                  long channels,
+                                  long rate,
 
+                                  float base_quality
+                                  );
+
+/**
+ * This function performs the last stage of three-step encoding setup, as
+ * described in the API overview under managed bitrate modes.
+ *
+ * Before this function is called, the \ref vorbis_info struct should be
+ * initialized by using vorbis_info_init() from the libvorbis API, one of
+ * \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to
+ * initialize the high-level encoding setup, and \ref vorbis_encode_ctl()
+ * called if necessary to make encoding setup changes.
+ * vorbis_encode_setup_init() finalizes the highlevel encoding structure into
+ * a complete encoding setup after which the application may make no further
+ * setup changes.
+ *
+ * After encoding, vorbis_info_clear() should be called.
+ *
+ * \param vi Pointer to an initialized \ref vorbis_info struct.
+ *
+ * \return Zero for success, and negative values for failure.
+ *
+ * \retval  0           Success.
+ * \retval  OV_EFAULT  Internal logic fault; indicates a bug or heap/stack corruption.
+ *
+ * \retval OV_EINVAL   Attempt to use vorbis_encode_setup_init() without first
+ * calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to
+ * initialize the high-level encoding setup
+ *
+ */
 extern int vorbis_encode_setup_init(vorbis_info *vi);
 
+/**
+ * This function implements a generic interface to miscellaneous encoder
+ * settings similar to the classic UNIX 'ioctl()' system call.  Applications
+ * may use vorbis_encode_ctl() to query or set bitrate management or quality
+ * mode details by using one of several \e request arguments detailed below.
+ * vorbis_encode_ctl() must be called after one of
+ * vorbis_encode_setup_managed() or vorbis_encode_setup_vbr().  When used
+ * to modify settings, \ref vorbis_encode_ctl() must be called before \ref
+ * vorbis_encode_setup_init().
+ *
+ * \param vi      Pointer to an initialized vorbis_info struct.
+ *
+ * \param number Specifies the desired action; See \ref encctlcodes "the list
+ * of available requests".
+ *
+ * \param arg void * pointing to a data structure matching the request
+ * argument.
+ *
+ * \retval 0          Success. Any further return information (such as the result of a
+ * query) is placed into the storage pointed to by *arg.
+ *
+ * \retval OV_EINVAL  Invalid argument, or an attempt to modify a setting after
+ * calling vorbis_encode_setup_init().
+ *
+ * \retval OV_EIMPL   Unimplemented or unknown request
+ */
 extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
 
-#define OV_ECTL_RATEMANAGE_GET       0x10
+/**
+ * \deprecated This is a deprecated interface. Please use vorbis_encode_ctl()
+ * with the \ref ovectl_ratemanage2_arg struct and \ref
+ * OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code.
+ *
+ * The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl()
+ * and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref
+ * OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to
+ * query and modify specifics of the encoder's bitrate management
+ * configuration.
+*/
+struct ovectl_ratemanage_arg {
+  int    management_active; /**< nonzero if bitrate management is active*/
+/** hard lower limit (in kilobits per second) below which the stream bitrate
+    will never be allowed for any given bitrate_hard_window seconds of time.*/
+  long   bitrate_hard_min;
+/** hard upper limit (in kilobits per second) above which the stream bitrate
+    will never be allowed for any given bitrate_hard_window seconds of time.*/
+  long   bitrate_hard_max;
+/** the window period (in seconds) used to regulate the hard bitrate minimum
+    and maximum*/
+  double bitrate_hard_window;
+/** soft lower limit (in kilobits per second) below which the average bitrate
+    tracker will start nudging the bitrate higher.*/
+  long   bitrate_av_lo;
+/** soft upper limit (in kilobits per second) above which the average bitrate
+    tracker will start nudging the bitrate lower.*/
+  long   bitrate_av_hi;
+/** the window period (in seconds) used to regulate the average bitrate
+    minimum and maximum.*/
+  double bitrate_av_window;
+/** Regulates the relative centering of the average and hard windows; in
+    libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but
+    followed the average window regulation. In libvorbis 1.1 a bit-reservoir
+    interface replaces the old windowing interface; the older windowing
+    interface is simulated and this field has no effect.*/
+  double bitrate_av_window_center;
+};
 
-#define OV_ECTL_RATEMANAGE_SET       0x11
-#define OV_ECTL_RATEMANAGE_AVG       0x12
-#define OV_ECTL_RATEMANAGE_HARD      0x13
+/**
+ * \name struct ovectl_ratemanage2_arg
+ *
+ * The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and
+ * the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to
+ * query and modify specifics of the encoder's bitrate management
+ * configuration.
+ *
+*/
+struct ovectl_ratemanage2_arg {
+  int    management_active; /**< nonzero if bitrate management is active */
+/** Lower allowed bitrate limit in kilobits per second */
+  long   bitrate_limit_min_kbps;
+/** Upper allowed bitrate limit in kilobits per second */
+  long   bitrate_limit_max_kbps;
+  long   bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */
+/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0
+ * to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0
+ * buffers against future sudden drops in instantaneous bitrate. Default is
+ * 0.1
+ */
+  double bitrate_limit_reservoir_bias;
+/** Average bitrate setting in kilobits per second */
+  long   bitrate_average_kbps;
+/** Slew rate limit setting for average bitrate adjustment; sets the minimum
+ *  time in seconds the bitrate tracker may swing from one extreme to the
+ *  other when boosting or damping average bitrate.
+ */
+  double bitrate_average_damping;
+};
 
+
+/**
+ * \name vorbis_encode_ctl() codes
+ *
+ * \anchor encctlcodes
+ *
+ * These values are passed as the \c number parameter of vorbis_encode_ctl().
+ * The type of the referent of that function's \c arg pointer depends on these
+ * codes.
+ */
+/*@{*/
+
+/**
+ * Query the current encoder bitrate management setting.
+ *
+ *Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
+ *
+ * Used to query the current encoder bitrate management setting. Also used to
+ * initialize fields of an ovectl_ratemanage2_arg structure for use with
+ * \ref OV_ECTL_RATEMANAGE2_SET.
+ */
+#define OV_ECTL_RATEMANAGE2_GET      0x14
+
+/**
+ * Set the current encoder bitrate management settings.
+ *
+ * Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
+ *
+ * Used to set the current encoder bitrate management settings to the values
+ * listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable
+ * bitrate management.
+*/
+#define OV_ECTL_RATEMANAGE2_SET      0x15
+
+/**
+ * Returns the current encoder hard-lowpass setting (kHz) in the double
+ * pointed to by arg.
+ *
+ * Argument: <tt>double *</tt>
+*/
 #define OV_ECTL_LOWPASS_GET          0x20
+
+/**
+ *  Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid
+ *  lowpass settings range from 2 to 99.
+ *
+ * Argument: <tt>double *</tt>
+*/
 #define OV_ECTL_LOWPASS_SET          0x21
 
+/**
+ *  Returns the current encoder impulse block setting in the double pointed
+ *  to by arg.
+ *
+ * Argument: <tt>double *</tt>
+*/
 #define OV_ECTL_IBLOCK_GET           0x30
+
+/**
+ *  Sets the impulse block bias to the the value pointed to by arg.
+ *
+ * Argument: <tt>double *</tt>
+ *
+ *  Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will
+ *  direct to encoder to use more bits when incoding short blocks that contain
+ *  strong impulses, thus improving the accuracy of impulse encoding.
+ */
 #define OV_ECTL_IBLOCK_SET           0x31
 
-struct ovectl_ratemanage_arg {
-  int    management_active;
+/**
+ *  Returns the current encoder coupling setting in the int pointed
+ *  to by arg.
+ *
+ * Argument: <tt>int *</tt>
+*/
+#define OV_ECTL_COUPLING_GET         0x40
 
-  long   bitrate_hard_min;
-  long   bitrate_hard_max;
-  double bitrate_hard_window;
+/**
+ *  Enables/disables channel coupling in multichannel encoding according to arg.
+ *
+ * Argument: <tt>int *</tt>
+ *
+ *  Zero disables channel coupling for multichannel inputs, nonzer enables
+ *  channel coupling.  Setting has no effect on monophonic encoding or
+ *  multichannel counts that do not offer coupling.  At present, coupling is
+ *  available for stereo and 5.1 encoding.
+ */
+#define OV_ECTL_COUPLING_SET         0x41
 
-  long   bitrate_av_lo;
-  long   bitrate_av_hi;
-  double bitrate_av_window;
-  double bitrate_av_window_center;
-};
+  /* deprecated rate management supported only for compatibility */
 
+/**
+ * Old interface to querying bitrate management settings.
+ *
+ * Deprecated after move to bit-reservoir style management in 1.1 rendered
+ * this interface partially obsolete.
+
+ * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead.
+ *
+ * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
+ */
+#define OV_ECTL_RATEMANAGE_GET       0x10
+/**
+ * Old interface to modifying bitrate management settings.
+ *
+ *  deprecated after move to bit-reservoir style management in 1.1 rendered
+ *  this interface partially obsolete.
+ *
+ * \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
+ *
+ * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
+ */
+#define OV_ECTL_RATEMANAGE_SET       0x11
+/**
+ * Old interface to setting average-bitrate encoding mode.
+ *
+ * Deprecated after move to bit-reservoir style management in 1.1 rendered
+ * this interface partially obsolete.
+ *
+ *  \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
+ *
+ * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
+ */
+#define OV_ECTL_RATEMANAGE_AVG       0x12
+/**
+ * Old interface to setting bounded-bitrate encoding modes.
+ *
+ * deprecated after move to bit-reservoir style management in 1.1 rendered
+ * this interface partially obsolete.
+ *
+ *  \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
+ *
+ * Argument: <tt>struct ovectl_ratemanage_arg *</tt>
+ */
+#define OV_ECTL_RATEMANAGE_HARD      0x13
+
+/*@}*/
+
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
 
 #endif
-
-
--- a/sys/src/cmd/audio/libvorbis/vorbis/vorbisfile.h
+++ b/sys/src/cmd/audio/libvorbis/vorbis/vorbisfile.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.h,v 1.17 2002/03/07 03:41:03 xiphmont Exp $
+ last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $
 
  ********************************************************************/
 
@@ -27,11 +27,11 @@
 #include "codec.h"
 
 /* The function prototypes for the callbacks are basically the same as for
- * the stdio functions fread, fseek, fclose, ftell. 
+ * the stdio functions fread, fseek, fclose, ftell.
  * The one difference is that the FILE * arguments have been replaced with
  * a void * - this is to be used as a pointer to whatever internal data these
  * functions might need. In the stdio case, it's just a FILE * cast to a void *
- * 
+ *
  * If you use other functions, check the docs for these functions and return
  * the right values. For seek_func(), you *MUST* return -1 if the stream is
  * unseekable
@@ -43,6 +43,65 @@
   long   (*tell_func)  (void *datasource);
 } ov_callbacks;
 
+#ifndef OV_EXCLUDE_STATIC_CALLBACKS
+
+/* a few sets of convenient callbacks, especially for use under
+ * Windows where ov_open_callbacks() should always be used instead of
+ * ov_open() to avoid problems with incompatible crt.o version linking
+ * issues. */
+
+static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){
+  if(f==NULL)return(-1);
+
+#ifdef __MINGW32__
+  return fseeko64(f,off,whence);
+#elif defined (_WIN32)
+  return _fseeki64(f,off,whence);
+#else
+  return fseek(f,off,whence);
+#endif
+}
+
+/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as
+ * static data. That means that every file which includes this header
+ * will get its own copy of these structs whether it uses them or
+ * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS.
+ * These static symbols are essential on platforms such as Windows on
+ * which several different versions of stdio support may be linked to
+ * by different DLLs, and we need to be certain we know which one
+ * we're using (the same one as the main application).
+ */
+
+static ov_callbacks OV_CALLBACKS_DEFAULT = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
+  (int (*)(void *))                             fclose,
+  (long (*)(void *))                            ftell
+};
+
+static ov_callbacks OV_CALLBACKS_NOCLOSE = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
+  (int (*)(void *))                             NULL,
+  (long (*)(void *))                            ftell
+};
+
+static ov_callbacks OV_CALLBACKS_STREAMONLY = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           NULL,
+  (int (*)(void *))                             fclose,
+  (long (*)(void *))                            NULL
+};
+
+static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           NULL,
+  (int (*)(void *))                             NULL,
+  (long (*)(void *))                            NULL
+};
+
+#endif
+
 #define  NOTOPEN   0
 #define  PARTOPEN  1
 #define  OPENED    2
@@ -54,7 +113,7 @@
   int              seekable;
   ogg_int64_t      offset;
   ogg_int64_t      end;
-  ogg_sync_state   oy; 
+  ogg_sync_state   oy;
 
   /* If the FILE handle isn't seekable (eg, a pipe), only the current
      stream appears */
@@ -63,8 +122,8 @@
   ogg_int64_t     *dataoffsets;
   long            *serialnos;
   ogg_int64_t     *pcmlengths; /* overloaded to maintain binary
-				  compatability; x2 size, stores both
-				  beginning and end values */
+                                  compatibility; x2 size, stores both
+                                  beginning and end values */
   vorbis_info     *vi;
   vorbis_comment  *vc;
 
@@ -86,14 +145,16 @@
 
 } OggVorbis_File;
 
+
 extern int ov_clear(OggVorbis_File *vf);
-extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
+extern int ov_fopen(const char *path,OggVorbis_File *vf);
+extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
 extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
-		char *initial, long ibytes, ov_callbacks callbacks);
+                const char *initial, long ibytes, ov_callbacks callbacks);
 
-extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
+extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
 extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
-		char *initial, long ibytes, ov_callbacks callbacks);
+                const char *initial, long ibytes, ov_callbacks callbacks);
 extern int ov_test_open(OggVorbis_File *vf);
 
 extern long ov_bitrate(OggVorbis_File *vf,int i);
@@ -112,6 +173,12 @@
 extern int ov_time_seek(OggVorbis_File *vf,double pos);
 extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
 
+extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
+extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
+
 extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
 extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
 extern double ov_time_tell(OggVorbis_File *vf);
@@ -120,14 +187,20 @@
 extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
 
 extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
-			  int *bitstream);
+                          int *bitstream);
+extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
+                          int bigendianp,int word,int sgned,int *bitstream,
+                          void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param);
 extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
-		    int bigendianp,int word,int sgned,int *bitstream);
+                    int bigendianp,int word,int sgned,int *bitstream);
+extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
 
+extern int ov_halfrate(OggVorbis_File *vf,int flag);
+extern int ov_halfrate_p(OggVorbis_File *vf);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
 
 #endif
-
 
--- a/sys/src/cmd/audio/libvorbis/vorbisenc.c
+++ b/sys/src/cmd/audio/libvorbis/vorbisenc.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.47 2002/07/11 06:40:50 xiphmont Exp $
+ last mod: $Id: vorbisenc.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -32,22 +32,23 @@
    with > 12 partition types, or a different division of iteration,
    this needs to be updated. */
 typedef struct {
-  static_codebook *books[12][3];
+  const static_codebook *books[12][4];
 } static_bookblock;
 
 typedef struct {
   int res_type;
   int limit_type; /* 0 lowpass limited, 1 point stereo limited */
-  vorbis_info_residue0 *res;
-  static_codebook  *book_aux;
-  static_codebook  *book_aux_managed;
-  static_bookblock *books_base;
-  static_bookblock *books_base_managed;
+  int grouping;
+  const vorbis_info_residue0 *res;
+  const static_codebook  *book_aux;
+  const static_codebook  *book_aux_managed;
+  const static_bookblock *books_base;
+  const static_bookblock *books_base_managed;
 } vorbis_residue_template;
 
 typedef struct {
-  vorbis_info_mapping0    *map;
-  vorbis_residue_template *res;
+  const vorbis_info_mapping0    *map;
+  const vorbis_residue_template *res;
 } vorbis_mapping_template;
 
 typedef struct vp_adjblock{
@@ -70,7 +71,7 @@
   float boost;
   float decay;
 } att3;
-typedef struct { int data[P_NOISECURVES]; } adj3; 
+typedef struct { int data[P_NOISECURVES]; } adj3;
 
 typedef struct {
   int   pre[PACKETBLOBS];
@@ -90,63 +91,63 @@
 
 typedef struct {
   int      mappings;
-  double  *rate_mapping;
-  double  *quality_mapping;
+  const double  *rate_mapping;
+  const double  *quality_mapping;
   int      coupling_restriction;
   long     samplerate_min_restriction;
   long     samplerate_max_restriction;
 
 
-  int     *blocksize_short;
-  int     *blocksize_long;
+  const int     *blocksize_short;
+  const int     *blocksize_long;
 
-  att3    *psy_tone_masteratt;
-  int     *psy_tone_0dB;
-  int     *psy_tone_dBsuppress;
+  const att3    *psy_tone_masteratt;
+  const int     *psy_tone_0dB;
+  const int     *psy_tone_dBsuppress;
 
-  vp_adjblock *psy_tone_adj_impulse;
-  vp_adjblock *psy_tone_adj_long;
-  vp_adjblock *psy_tone_adj_other;
+  const vp_adjblock *psy_tone_adj_impulse;
+  const vp_adjblock *psy_tone_adj_long;
+  const vp_adjblock *psy_tone_adj_other;
 
-  noiseguard  *psy_noiseguards;
-  noise3      *psy_noise_bias_impulse;
-  noise3      *psy_noise_bias_padding;
-  noise3      *psy_noise_bias_trans;
-  noise3      *psy_noise_bias_long;
-  int         *psy_noise_dBsuppress;
+  const noiseguard  *psy_noiseguards;
+  const noise3      *psy_noise_bias_impulse;
+  const noise3      *psy_noise_bias_padding;
+  const noise3      *psy_noise_bias_trans;
+  const noise3      *psy_noise_bias_long;
+  const int         *psy_noise_dBsuppress;
 
-  compandblock  *psy_noise_compand;
-  double        *psy_noise_compand_short_mapping;
-  double        *psy_noise_compand_long_mapping;
+  const compandblock  *psy_noise_compand;
+  const double        *psy_noise_compand_short_mapping;
+  const double        *psy_noise_compand_long_mapping;
 
-  int      *psy_noise_normal_start[2];
-  int      *psy_noise_normal_partition[2];
-  double   *psy_noise_normal_thresh;
+  const int      *psy_noise_normal_start[2];
+  const int      *psy_noise_normal_partition[2];
+  const double   *psy_noise_normal_thresh;
 
-  int      *psy_ath_float;
-  int      *psy_ath_abs;
+  const int      *psy_ath_float;
+  const int      *psy_ath_abs;
 
-  double   *psy_lowpass;
+  const double   *psy_lowpass;
 
-  vorbis_info_psy_global *global_params;
-  double     *global_mapping;
-  adj_stereo *stereo_modes;
+  const vorbis_info_psy_global *global_params;
+  const double     *global_mapping;
+  const adj_stereo *stereo_modes;
 
-  static_codebook ***floor_books;
-  vorbis_info_floor1 *floor_params;
-  int *floor_short_mapping;
-  int *floor_long_mapping;
+  const static_codebook *const *const *const floor_books;
+  const vorbis_info_floor1 *floor_params;
+  const int floor_mappings;
+  const int **floor_mapping_list;
 
-  vorbis_mapping_template *maps;
+  const vorbis_mapping_template *maps;
 } ve_setup_data_template;
 
 /* a few static coder conventions */
-static vorbis_info_mode _mode_template[2]={
+static const vorbis_info_mode _mode_template[2]={
   {0,0,0,0},
   {1,0,0,1}
 };
 
-static vorbis_info_mapping0 _map_nominal[2]={
+static const vorbis_info_mapping0 _map_nominal[2]={
   {1, {0,0}, {0}, {0}, 1,{0},{1}},
   {1, {0,0}, {1}, {1}, 1,{0},{1}}
 };
@@ -153,6 +154,7 @@
 
 #include "modes/setup_44.h"
 #include "modes/setup_44u.h"
+#include "modes/setup_44p51.h"
 #include "modes/setup_32.h"
 #include "modes/setup_8.h"
 #include "modes/setup_11.h"
@@ -160,16 +162,13 @@
 #include "modes/setup_22.h"
 #include "modes/setup_X.h"
 
-static ve_setup_data_template *setup_list[]={
+static const ve_setup_data_template *const setup_list[]={
   &ve_setup_44_stereo,
-  &ve_setup_44_stereo_low,
+  &ve_setup_44_51,
   &ve_setup_44_uncoupled,
-  &ve_setup_44_uncoupled_low,
 
   &ve_setup_32_stereo,
-  &ve_setup_32_stereo_low,
   &ve_setup_32_uncoupled,
-  &ve_setup_32_uncoupled_low,
 
   &ve_setup_22_stereo,
   &ve_setup_22_uncoupled,
@@ -183,36 +182,20 @@
 
   &ve_setup_X_stereo,
   &ve_setup_X_uncoupled,
-  &ve_setup_X_stereo_low,
-  &ve_setup_X_uncoupled_low,
   &ve_setup_XX_stereo,
   &ve_setup_XX_uncoupled,
   0
 };
 
-static int vorbis_encode_toplevel_setup(vorbis_info *vi,int ch,long rate){
-  if(vi && vi->codec_setup){
-
-    vi->version=0;
-    vi->channels=ch;
-    vi->rate=rate;
-
-    return(0);
-  }
-  return(OV_EINVAL);
-}
-
-static void vorbis_encode_floor_setup(vorbis_info *vi,double s,int block,
-				     static_codebook    ***books, 
-				     vorbis_info_floor1 *in, 
-				     int *x){
+static void vorbis_encode_floor_setup(vorbis_info *vi,int s,
+                                     const static_codebook *const *const *const books,
+                                     const vorbis_info_floor1 *in,
+                                     const int *x){
   int i,k,is=s;
   vorbis_info_floor1 *f=_ogg_calloc(1,sizeof(*f));
   codec_setup_info *ci=vi->codec_setup;
 
   memcpy(f,in+x[is],sizeof(*f));
-  /* fill in the lowpass field, even if it's temporary */
-  f->n=ci->blocksizes[block]>>1;
 
   /* books */
   {
@@ -225,13 +208,13 @@
       if(f->class_book[i]>maxbook)maxbook=f->class_book[i];
       f->class_book[i]+=ci->books;
       for(k=0;k<(1<<f->class_subs[i]);k++){
-	if(f->class_subbook[i][k]>maxbook)maxbook=f->class_subbook[i][k];
-	if(f->class_subbook[i][k]>=0)f->class_subbook[i][k]+=ci->books;
+        if(f->class_subbook[i][k]>maxbook)maxbook=f->class_subbook[i][k];
+        if(f->class_subbook[i][k]>=0)f->class_subbook[i][k]+=ci->books;
       }
     }
 
     for(i=0;i<=maxbook;i++)
-      ci->book_param[ci->books++]=books[x[is]][i];
+      ci->book_param[ci->books++]=(static_codebook *)books[x[is]][i];
   }
 
   /* for now, we're only using floor 1 */
@@ -243,15 +226,15 @@
 }
 
 static void vorbis_encode_global_psych_setup(vorbis_info *vi,double s,
-					    vorbis_info_psy_global *in, 
-					    double *x){
+                                            const vorbis_info_psy_global *in,
+                                            const double *x){
   int i,is=s;
   double ds=s-is;
   codec_setup_info *ci=vi->codec_setup;
   vorbis_info_psy_global *g=&ci->psy_g_param;
-  
+
   memcpy(g,in+(int)x[is],sizeof(*g));
-  
+
   ds=x[is]*(1.-ds)+x[is+1]*ds;
   is=(int)ds;
   ds-=is;
@@ -259,7 +242,7 @@
     is--;
     ds=1.;
   }
-  
+
   /* interpolate the trigger threshholds */
   for(i=0;i<4;i++){
     g->preecho_thresh[i]=in[is].preecho_thresh[i]*(1.-ds)+in[is+1].preecho_thresh[i]*ds;
@@ -270,8 +253,8 @@
 }
 
 static void vorbis_encode_global_stereo(vorbis_info *vi,
-				       highlevel_encode_setup *hi,
-				       adj_stereo *p){
+                                        const highlevel_encode_setup *const hi,
+                                        const adj_stereo *p){
   float s=hi->stereo_point_setting;
   int i,is=s;
   double ds=s-is;
@@ -285,28 +268,28 @@
     if(hi->managed){
       /* interpolate the kHz threshholds */
       for(i=0;i<PACKETBLOBS;i++){
-	float kHz=p[is].kHz[i]*(1.-ds)+p[is+1].kHz[i]*ds;
-	g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
-	g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
-	g->coupling_pkHz[i]=kHz;
-	
-	kHz=p[is].lowpasskHz[i]*(1.-ds)+p[is+1].lowpasskHz[i]*ds;
-	g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
-	g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
-	
+        float kHz=p[is].kHz[i]*(1.-ds)+p[is+1].kHz[i]*ds;
+        g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+        g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+        g->coupling_pkHz[i]=kHz;
+
+        kHz=p[is].lowpasskHz[i]*(1.-ds)+p[is+1].lowpasskHz[i]*ds;
+        g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+        g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+
       }
     }else{
       float kHz=p[is].kHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].kHz[PACKETBLOBS/2]*ds;
       for(i=0;i<PACKETBLOBS;i++){
-	g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
-	g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
-	g->coupling_pkHz[i]=kHz;
+        g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+        g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+        g->coupling_pkHz[i]=kHz;
       }
-      
+
       kHz=p[is].lowpasskHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].lowpasskHz[PACKETBLOBS/2]*ds;
       for(i=0;i<PACKETBLOBS;i++){
-	g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
-	g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+        g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+        g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
       }
     }
   }else{
@@ -319,15 +302,15 @@
 }
 
 static void vorbis_encode_psyset_setup(vorbis_info *vi,double s,
-				      int *nn_start,
-				      int *nn_partition,
-				      double *nn_thresh,
-				      int block){
+                                       const int *nn_start,
+                                       const int *nn_partition,
+                                       const double *nn_thresh,
+                                       int block){
   codec_setup_info *ci=vi->codec_setup;
   vorbis_info_psy *p=ci->psy_param[block];
   highlevel_encode_setup *hi=&ci->hi;
   int is=s;
-  
+
   if(block>=ci->psys)
     ci->psys=block+1;
   if(!p){
@@ -334,25 +317,24 @@
     p=_ogg_calloc(1,sizeof(*p));
     ci->psy_param[block]=p;
   }
-  
+
   memcpy(p,&_psy_info_template,sizeof(*p));
   p->blockflag=block>>1;
 
   if(hi->noise_normalize_p){
-    p->normal_channel_p=1;
-    p->normal_point_p=1;
+    p->normal_p=1;
     p->normal_start=nn_start[is];
     p->normal_partition=nn_partition[is];
     p->normal_thresh=nn_thresh[is];
   }
-    
+
   return;
 }
 
 static void vorbis_encode_tonemask_setup(vorbis_info *vi,double s,int block,
-					 att3 *att,
-					 int  *max,
-					 vp_adjblock *in){
+                                         const att3 *att,
+                                         const int  *max,
+                                         const vp_adjblock *in){
   int i,is=s;
   double ds=s-is;
   codec_setup_info *ci=vi->codec_setup;
@@ -375,7 +357,8 @@
 
 
 static void vorbis_encode_compand_setup(vorbis_info *vi,double s,int block,
-				       compandblock *in, double *x){
+                                        const compandblock *in,
+                                        const double *x){
   int i,is=s;
   double ds=s-is;
   codec_setup_info *ci=vi->codec_setup;
@@ -396,7 +379,7 @@
 }
 
 static void vorbis_encode_peak_setup(vorbis_info *vi,double s,int block,
-				    int *suppress){
+                                    const int *suppress){
   int is=s;
   double ds=s-is;
   codec_setup_info *ci=vi->codec_setup;
@@ -408,10 +391,10 @@
 }
 
 static void vorbis_encode_noisebias_setup(vorbis_info *vi,double s,int block,
-					 int *suppress,
-					 noise3 *in,
-					 noiseguard *guard,
-					 double userbias){
+                                         const int *suppress,
+                                         const noise3 *in,
+                                         const noiseguard *guard,
+                                         double userbias){
   int i,is=s,j;
   double ds=s-is;
   codec_setup_info *ci=vi->codec_setup;
@@ -449,20 +432,20 @@
 }
 
 
-static int book_dup_or_new(codec_setup_info *ci,static_codebook *book){
+static int book_dup_or_new(codec_setup_info *ci,const static_codebook *book){
   int i;
   for(i=0;i<ci->books;i++)
     if(ci->book_param[i]==book)return(i);
-  
+
   return(ci->books++);
 }
 
 static void vorbis_encode_blocksize_setup(vorbis_info *vi,double s,
-					 int *shortb,int *longb){
+                                         const int *shortb,const int *longb){
 
   codec_setup_info *ci=vi->codec_setup;
   int is=s;
-  
+
   int blockshort=shortb[is];
   int blocklong=longb[is];
   ci->blocksizes[0]=blockshort;
@@ -471,78 +454,66 @@
 }
 
 static void vorbis_encode_residue_setup(vorbis_info *vi,
-				       int number, int block,
-				       vorbis_residue_template *res){
+                                        int number, int block,
+                                        const vorbis_residue_template *res){
 
   codec_setup_info *ci=vi->codec_setup;
-  int i,n;
-  
+  int i;
+
   vorbis_info_residue0 *r=ci->residue_param[number]=
     _ogg_malloc(sizeof(*r));
-  
+
   memcpy(r,res->res,sizeof(*r));
   if(ci->residues<=number)ci->residues=number+1;
 
-  switch(ci->blocksizes[block]){
-  case 64:case 128:case 256:
-    r->grouping=16;
-    break;
-  default:
-    r->grouping=32;
-    break;
-  }
+  r->grouping=res->grouping;
   ci->residue_type[number]=res->res_type;
 
-  /* to be adjusted by lowpass/pointlimit later */
-  n=r->end=ci->blocksizes[block]>>1; 
-  if(res->res_type==2)
-    n=r->end*=vi->channels;
-  
   /* fill in all the books */
   {
     int booklist=0,k;
-    
+
     if(ci->hi.managed){
       for(i=0;i<r->partitions;i++)
-	for(k=0;k<3;k++)
-	  if(res->books_base_managed->books[i][k])
-	    r->secondstages[i]|=(1<<k);
+        for(k=0;k<4;k++)
+          if(res->books_base_managed->books[i][k])
+            r->secondstages[i]|=(1<<k);
 
       r->groupbook=book_dup_or_new(ci,res->book_aux_managed);
-      ci->book_param[r->groupbook]=res->book_aux_managed;      
-    
+      ci->book_param[r->groupbook]=(static_codebook *)res->book_aux_managed;
+
       for(i=0;i<r->partitions;i++){
-	for(k=0;k<3;k++){
-	  if(res->books_base_managed->books[i][k]){
-	    int bookid=book_dup_or_new(ci,res->books_base_managed->books[i][k]);
-	    r->booklist[booklist++]=bookid;
-	    ci->book_param[bookid]=res->books_base_managed->books[i][k];
-	  }
-	}
+        for(k=0;k<4;k++){
+          if(res->books_base_managed->books[i][k]){
+            int bookid=book_dup_or_new(ci,res->books_base_managed->books[i][k]);
+            r->booklist[booklist++]=bookid;
+            ci->book_param[bookid]=(static_codebook *)res->books_base_managed->books[i][k];
+          }
+        }
       }
 
     }else{
 
       for(i=0;i<r->partitions;i++)
-	for(k=0;k<3;k++)
-	  if(res->books_base->books[i][k])
-	    r->secondstages[i]|=(1<<k);
-  
+        for(k=0;k<4;k++)
+          if(res->books_base->books[i][k])
+            r->secondstages[i]|=(1<<k);
+
       r->groupbook=book_dup_or_new(ci,res->book_aux);
-      ci->book_param[r->groupbook]=res->book_aux;
-      
+      ci->book_param[r->groupbook]=(static_codebook *)res->book_aux;
+
       for(i=0;i<r->partitions;i++){
-	for(k=0;k<3;k++){
-	  if(res->books_base->books[i][k]){
-	    int bookid=book_dup_or_new(ci,res->books_base->books[i][k]);
-	    r->booklist[booklist++]=bookid;
-	    ci->book_param[bookid]=res->books_base->books[i][k];
-	  }
-	}
+        for(k=0;k<4;k++){
+          if(res->books_base->books[i][k]){
+            int bookid=book_dup_or_new(ci,res->books_base->books[i][k]);
+            r->booklist[booklist++]=bookid;
+            ci->book_param[bookid]=(static_codebook *)res->books_base->books[i][k];
+          }
+        }
       }
     }
   }
-  
+
   /* lowpass setup/pointlimit */
   {
     double freq=ci->hi.lowpass_kHz*1000.;
@@ -550,45 +521,79 @@
     double nyq=vi->rate/2.;
     long blocksize=ci->blocksizes[block]>>1;
 
-    /* lowpass needs to be set in the floor and the residue. */    
+    /* lowpass needs to be set in the floor and the residue. */
     if(freq>nyq)freq=nyq;
     /* in the floor, the granularity can be very fine; it doesn't alter
        the encoding structure, only the samples used to fit the floor
        approximation */
-    f->n=freq/nyq*blocksize; 
+    f->n=freq/nyq*blocksize;
 
     /* this res may by limited by the maximum pointlimit of the mode,
        not the lowpass. the floor is always lowpass limited. */
-    if(res->limit_type){
+    switch(res->limit_type){
+    case 1: /* point stereo limited */
       if(ci->hi.managed)
-	freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS-1]*1000.;
+        freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS-1]*1000.;
       else
-	freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS/2]*1000.;
+        freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS/2]*1000.;
       if(freq>nyq)freq=nyq;
+      break;
+    case 2: /* LFE channel; lowpass at ~ 250Hz */
+      freq=250;
+      break;
+    default:
+      /* already set */
+      break;
     }
-    
+
     /* in the residue, we're constrained, physically, by partition
        boundaries.  We still lowpass 'wherever', but we have to round up
        here to next boundary, or the vorbis spec will round it *down* to
        previous boundary in encode/decode */
-    if(ci->residue_type[block]==2)
-      r->end=(int)((freq/nyq*blocksize*2)/r->grouping+.9)* /* round up only if we're well past */
-	r->grouping;
-    else
+    if(ci->residue_type[number]==2){
+      /* residue 2 bundles together multiple channels; used by stereo
+         and surround.  Count the channels in use */
+      /* Multiple maps/submaps can point to the same residue.  In the case
+         of residue 2, they all better have the same number of
+         channels/samples. */
+      int j,k,ch=0;
+      for(i=0;i<ci->maps&&ch==0;i++){
+        vorbis_info_mapping0 *mi=(vorbis_info_mapping0 *)ci->map_param[i];
+        for(j=0;j<mi->submaps && ch==0;j++)
+          if(mi->residuesubmap[j]==number) /* we found a submap referencing theis residue backend */
+            for(k=0;k<vi->channels;k++)
+              if(mi->chmuxlist[k]==j) /* this channel belongs to the submap */
+                ch++;
+      }
+
+      r->end=(int)((freq/nyq*blocksize*ch)/r->grouping+.9)* /* round up only if we're well past */
+        r->grouping;
+      /* the blocksize and grouping may disagree at the end */
+      if(r->end>blocksize*ch)r->end=blocksize*ch/r->grouping*r->grouping;
+
+    }else{
+
       r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
-	r->grouping;
+        r->grouping;
+      /* the blocksize and grouping may disagree at the end */
+      if(r->end>blocksize)r->end=blocksize/r->grouping*r->grouping;
+
+    }
+
+    if(r->end==0)r->end=r->grouping; /* LFE channel */
+
   }
-}      
+}
 
 /* we assume two maps in this encoder */
 static void vorbis_encode_map_n_res_setup(vorbis_info *vi,double s,
-					  vorbis_mapping_template *maps){
+                                          const vorbis_mapping_template *maps){
 
   codec_setup_info *ci=vi->codec_setup;
   int i,j,is=s,modes=2;
-  vorbis_info_mapping0 *map=maps[is].map;
-  vorbis_info_mode *mode=_mode_template;
-  vorbis_residue_template *res=maps[is].res;
+  const vorbis_info_mapping0 *map=maps[is].map;
+  const vorbis_info_mode *mode=_mode_template;
+  const vorbis_residue_template *res=maps[is].res;
 
   if(ci->blocksizes[0]==ci->blocksizes[1])modes=1;
 
@@ -596,7 +601,7 @@
 
     ci->map_param[i]=_ogg_calloc(1,sizeof(*map));
     ci->mode_param[i]=_ogg_calloc(1,sizeof(*mode));
-  
+
     memcpy(ci->mode_param[i],mode+i,sizeof(*_mode_template));
     if(i>=ci->modes)ci->modes=i+1;
 
@@ -603,10 +608,10 @@
     ci->map_type[i]=0;
     memcpy(ci->map_param[i],map+i,sizeof(*map));
     if(i>=ci->maps)ci->maps=i+1;
-    
+
     for(j=0;j<map[i].submaps;j++)
       vorbis_encode_residue_setup(vi,map[i].residuesubmap[j],i
-				  ,res+map[i].residuesubmap[j]);
+                                  ,res+map[i].residuesubmap[j]);
   }
 }
 
@@ -617,20 +622,18 @@
   int is=hi->base_setting;
   double ds=hi->base_setting-is;
   int ch=vi->channels;
-  double *r=setup->rate_mapping;
+  const double *r=setup->rate_mapping;
 
   if(r==NULL)
     return(-1);
-  
-  return((r[is]*(1.-ds)+r[is+1]*ds)*ch);  
+
+  return((r[is]*(1.-ds)+r[is+1]*ds)*ch);
 }
 
-static void get_setup_template(vorbis_info *vi,
-			       long ch,long srate,
-			       double req,int q_or_bitrate){
+static const void *get_setup_template(long ch,long srate,
+                                      double req,int q_or_bitrate,
+                                      double *base_setting){
   int i=0,j;
-  codec_setup_info *ci=vi->codec_setup;
-  highlevel_encode_setup *hi=&ci->hi;
   if(q_or_bitrate)req/=ch;
 
   while(setup_list[i]){
@@ -637,35 +640,35 @@
     if(setup_list[i]->coupling_restriction==-1 ||
        setup_list[i]->coupling_restriction==ch){
       if(srate>=setup_list[i]->samplerate_min_restriction &&
-	 srate<=setup_list[i]->samplerate_max_restriction){
-	int mappings=setup_list[i]->mappings;
-	double *map=(q_or_bitrate?
-		     setup_list[i]->rate_mapping:
-		     setup_list[i]->quality_mapping);
+         srate<=setup_list[i]->samplerate_max_restriction){
+        int mappings=setup_list[i]->mappings;
+        const double *map=(q_or_bitrate?
+                     setup_list[i]->rate_mapping:
+                     setup_list[i]->quality_mapping);
 
-	/* the template matches.  Does the requested quality mode
-	   fall within this template's modes? */
-	if(req<map[0]){++i;continue;}
-	if(req>map[setup_list[i]->mappings]){++i;continue;}
-	for(j=0;j<mappings;j++)
-	  if(req>=map[j] && req<map[j+1])break;
-	/* an all-points match */
-	hi->setup=setup_list[i];
-	if(j==mappings)
-	  hi->base_setting=j-.001;
-	else{
-	  float low=map[j];
-	  float high=map[j+1];
-	  float del=(req-low)/(high-low);
-	  hi->base_setting=j+del;
-	}
-	return;
+        /* the template matches.  Does the requested quality mode
+           fall within this template's modes? */
+        if(req<map[0]){++i;continue;}
+        if(req>map[setup_list[i]->mappings]){++i;continue;}
+        for(j=0;j<mappings;j++)
+          if(req>=map[j] && req<map[j+1])break;
+        /* an all-points match */
+        if(j==mappings)
+          *base_setting=j-.001;
+        else{
+          float low=map[j];
+          float high=map[j+1];
+          float del=(req-low)/(high-low);
+          *base_setting=j+del;
+        }
+
+        return(setup_list[i]);
       }
     }
     i++;
   }
-  
-  hi->setup=NULL;
+
+  return NULL;
 }
 
 /* encoders will need to use vorbis_info_init beforehand and call
@@ -676,7 +679,7 @@
 
 /* the final setup call */
 int vorbis_encode_setup_init(vorbis_info *vi){
-  int i0=0,singleblock=0;
+  int i,i0=0,singleblock=0;
   codec_setup_info *ci=vi->codec_setup;
   ve_setup_data_template *setup=NULL;
   highlevel_encode_setup *hi=&ci->hi;
@@ -692,7 +695,7 @@
      too badly */
   if(hi->amplitude_track_dBpersec>0.)hi->amplitude_track_dBpersec=0.;
   if(hi->amplitude_track_dBpersec<-99999.)hi->amplitude_track_dBpersec=-99999.;
-  
+
   /* get the appropriate setup template; matches the fetch in previous
      stages */
   setup=(ve_setup_data_template *)hi->setup;
@@ -704,119 +707,115 @@
      short and long blocks are the same length, we set long_block_p
      and unset short_block_p */
   vorbis_encode_blocksize_setup(vi,hi->base_setting,
-				setup->blocksize_short,
-				setup->blocksize_long);
+                                setup->blocksize_short,
+                                setup->blocksize_long);
   if(ci->blocksizes[0]==ci->blocksizes[1])singleblock=1;
-  
+
   /* floor setup; choose proper floor params.  Allocated on the floor
-     stack in order; if we alloc only long floor, it's 0 */
-  vorbis_encode_floor_setup(vi,hi->short_setting,0,
-			    setup->floor_books,
-			    setup->floor_params,
-			    setup->floor_short_mapping);
-  if(!singleblock)
-    vorbis_encode_floor_setup(vi,hi->long_setting,1,
-			      setup->floor_books,
-			      setup->floor_params,
-			      setup->floor_long_mapping);
-  
+     stack in order; if we alloc only a single long floor, it's 0 */
+  for(i=0;i<setup->floor_mappings;i++)
+    vorbis_encode_floor_setup(vi,hi->base_setting,
+                              setup->floor_books,
+                              setup->floor_params,
+                              setup->floor_mapping_list[i]);
+
   /* setup of [mostly] short block detection and stereo*/
   vorbis_encode_global_psych_setup(vi,hi->trigger_setting,
-				   setup->global_params,
-				   setup->global_mapping);
+                                   setup->global_params,
+                                   setup->global_mapping);
   vorbis_encode_global_stereo(vi,hi,setup->stereo_modes);
 
   /* basic psych setup and noise normalization */
-  vorbis_encode_psyset_setup(vi,hi->short_setting,
-			     setup->psy_noise_normal_start[0],
-			     setup->psy_noise_normal_partition[0],  
-			     setup->psy_noise_normal_thresh,  
-			     0);
-  vorbis_encode_psyset_setup(vi,hi->short_setting,
-			     setup->psy_noise_normal_start[0],
-			     setup->psy_noise_normal_partition[0],  
-			     setup->psy_noise_normal_thresh,  
-			     1);
+  vorbis_encode_psyset_setup(vi,hi->base_setting,
+                             setup->psy_noise_normal_start[0],
+                             setup->psy_noise_normal_partition[0],
+                             setup->psy_noise_normal_thresh,
+                             0);
+  vorbis_encode_psyset_setup(vi,hi->base_setting,
+                             setup->psy_noise_normal_start[0],
+                             setup->psy_noise_normal_partition[0],
+                             setup->psy_noise_normal_thresh,
+                             1);
   if(!singleblock){
-    vorbis_encode_psyset_setup(vi,hi->long_setting,
-			       setup->psy_noise_normal_start[1],
-			       setup->psy_noise_normal_partition[1],  
-				    setup->psy_noise_normal_thresh,  
-			       2);
-    vorbis_encode_psyset_setup(vi,hi->long_setting,
-			       setup->psy_noise_normal_start[1],
-			       setup->psy_noise_normal_partition[1],  
-			       setup->psy_noise_normal_thresh,  
-			       3);
+    vorbis_encode_psyset_setup(vi,hi->base_setting,
+                               setup->psy_noise_normal_start[1],
+                               setup->psy_noise_normal_partition[1],
+                                    setup->psy_noise_normal_thresh,
+                               2);
+    vorbis_encode_psyset_setup(vi,hi->base_setting,
+                               setup->psy_noise_normal_start[1],
+                               setup->psy_noise_normal_partition[1],
+                               setup->psy_noise_normal_thresh,
+                               3);
   }
 
   /* tone masking setup */
   vorbis_encode_tonemask_setup(vi,hi->block[i0].tone_mask_setting,0,
-			       setup->psy_tone_masteratt,
-			       setup->psy_tone_0dB,
-			       setup->psy_tone_adj_impulse);
+                               setup->psy_tone_masteratt,
+                               setup->psy_tone_0dB,
+                               setup->psy_tone_adj_impulse);
   vorbis_encode_tonemask_setup(vi,hi->block[1].tone_mask_setting,1,
-			       setup->psy_tone_masteratt,
-			       setup->psy_tone_0dB,
-			       setup->psy_tone_adj_other);
+                               setup->psy_tone_masteratt,
+                               setup->psy_tone_0dB,
+                               setup->psy_tone_adj_other);
   if(!singleblock){
     vorbis_encode_tonemask_setup(vi,hi->block[2].tone_mask_setting,2,
-				 setup->psy_tone_masteratt,
-				 setup->psy_tone_0dB,
-				 setup->psy_tone_adj_other);
+                                 setup->psy_tone_masteratt,
+                                 setup->psy_tone_0dB,
+                                 setup->psy_tone_adj_other);
     vorbis_encode_tonemask_setup(vi,hi->block[3].tone_mask_setting,3,
-				 setup->psy_tone_masteratt,
-				 setup->psy_tone_0dB,
-				 setup->psy_tone_adj_long);
+                                 setup->psy_tone_masteratt,
+                                 setup->psy_tone_0dB,
+                                 setup->psy_tone_adj_long);
   }
 
   /* noise companding setup */
   vorbis_encode_compand_setup(vi,hi->block[i0].noise_compand_setting,0,
-			      setup->psy_noise_compand,
-			      setup->psy_noise_compand_short_mapping);
+                              setup->psy_noise_compand,
+                              setup->psy_noise_compand_short_mapping);
   vorbis_encode_compand_setup(vi,hi->block[1].noise_compand_setting,1,
-			      setup->psy_noise_compand,
-			      setup->psy_noise_compand_short_mapping);
+                              setup->psy_noise_compand,
+                              setup->psy_noise_compand_short_mapping);
   if(!singleblock){
     vorbis_encode_compand_setup(vi,hi->block[2].noise_compand_setting,2,
-				setup->psy_noise_compand,
-				setup->psy_noise_compand_long_mapping);
+                                setup->psy_noise_compand,
+                                setup->psy_noise_compand_long_mapping);
     vorbis_encode_compand_setup(vi,hi->block[3].noise_compand_setting,3,
-				setup->psy_noise_compand,
-				setup->psy_noise_compand_long_mapping);
+                                setup->psy_noise_compand,
+                                setup->psy_noise_compand_long_mapping);
   }
 
   /* peak guarding setup  */
   vorbis_encode_peak_setup(vi,hi->block[i0].tone_peaklimit_setting,0,
-			   setup->psy_tone_dBsuppress);
+                           setup->psy_tone_dBsuppress);
   vorbis_encode_peak_setup(vi,hi->block[1].tone_peaklimit_setting,1,
-			   setup->psy_tone_dBsuppress);
+                           setup->psy_tone_dBsuppress);
   if(!singleblock){
     vorbis_encode_peak_setup(vi,hi->block[2].tone_peaklimit_setting,2,
-			     setup->psy_tone_dBsuppress);
+                             setup->psy_tone_dBsuppress);
     vorbis_encode_peak_setup(vi,hi->block[3].tone_peaklimit_setting,3,
-			     setup->psy_tone_dBsuppress);
+                             setup->psy_tone_dBsuppress);
   }
 
   /* noise bias setup */
   vorbis_encode_noisebias_setup(vi,hi->block[i0].noise_bias_setting,0,
-				setup->psy_noise_dBsuppress,
-				setup->psy_noise_bias_impulse,
-				setup->psy_noiseguards,
-				(i0==0?hi->impulse_noisetune:0.));
+                                setup->psy_noise_dBsuppress,
+                                setup->psy_noise_bias_impulse,
+                                setup->psy_noiseguards,
+                                (i0==0?hi->impulse_noisetune:0.));
   vorbis_encode_noisebias_setup(vi,hi->block[1].noise_bias_setting,1,
-				setup->psy_noise_dBsuppress,
-				setup->psy_noise_bias_padding,
-				setup->psy_noiseguards,0.);
+                                setup->psy_noise_dBsuppress,
+                                setup->psy_noise_bias_padding,
+                                setup->psy_noiseguards,0.);
   if(!singleblock){
     vorbis_encode_noisebias_setup(vi,hi->block[2].noise_bias_setting,2,
-				  setup->psy_noise_dBsuppress,
-				  setup->psy_noise_bias_trans,
-				  setup->psy_noiseguards,0.);
+                                  setup->psy_noise_dBsuppress,
+                                  setup->psy_noise_bias_trans,
+                                  setup->psy_noiseguards,0.);
     vorbis_encode_noisebias_setup(vi,hi->block[3].noise_bias_setting,3,
-				  setup->psy_noise_dBsuppress,
-				  setup->psy_noise_bias_long,
-				  setup->psy_noiseguards,0.);
+                                  setup->psy_noise_dBsuppress,
+                                  setup->psy_noise_bias_long,
+                                  setup->psy_noiseguards,0.);
   }
 
   vorbis_encode_ath_setup(vi,0);
@@ -829,54 +828,61 @@
   vorbis_encode_map_n_res_setup(vi,hi->base_setting,setup->maps);
 
   /* set bitrate readonlies and management */
-  vi->bitrate_nominal=setting_to_approx_bitrate(vi);
+  if(hi->bitrate_av>0)
+    vi->bitrate_nominal=hi->bitrate_av;
+  else{
+    vi->bitrate_nominal=setting_to_approx_bitrate(vi);
+  }
+
   vi->bitrate_lower=hi->bitrate_min;
   vi->bitrate_upper=hi->bitrate_max;
-  vi->bitrate_window=hi->bitrate_limit_window;
+  if(hi->bitrate_av)
+    vi->bitrate_window=(double)hi->bitrate_reservoir/hi->bitrate_av;
+  else
+    vi->bitrate_window=0.;
 
   if(hi->managed){
-    ci->bi.queue_avg_time=hi->bitrate_av_window;
-    ci->bi.queue_avg_center=hi->bitrate_av_window_center;
-    ci->bi.queue_minmax_time=hi->bitrate_limit_window;
-    ci->bi.queue_hardmin=hi->bitrate_min;
-    ci->bi.queue_hardmax=hi->bitrate_max;
-    ci->bi.queue_avgmin=hi->bitrate_av_lo;
-    ci->bi.queue_avgmax=hi->bitrate_av_hi;
-    ci->bi.avgfloat_downslew_max=-999999.f;
-    ci->bi.avgfloat_upslew_max=999999.f;
+    ci->bi.avg_rate=hi->bitrate_av;
+    ci->bi.min_rate=hi->bitrate_min;
+    ci->bi.max_rate=hi->bitrate_max;
+
+    ci->bi.reservoir_bits=hi->bitrate_reservoir;
+    ci->bi.reservoir_bias=
+      hi->bitrate_reservoir_bias;
+
+    ci->bi.slew_damp=hi->bitrate_av_damp;
+
   }
 
   return(0);
-  
+
 }
 
-static int vorbis_encode_setup_setting(vorbis_info *vi,
-				       long  channels,
-				       long  rate){
-  int ret=0,i,is;
+static void vorbis_encode_setup_setting(vorbis_info *vi,
+                                       long  channels,
+                                       long  rate){
+  int i,is;
   codec_setup_info *ci=vi->codec_setup;
   highlevel_encode_setup *hi=&ci->hi;
-  ve_setup_data_template *setup=hi->setup;
+  const ve_setup_data_template *setup=hi->setup;
   double ds;
 
-  ret=vorbis_encode_toplevel_setup(vi,channels,rate);
-  if(ret)return(ret);
+  vi->version=0;
+  vi->channels=channels;
+  vi->rate=rate;
 
+  hi->impulse_block_p=1;
+  hi->noise_normalize_p=1;
+
   is=hi->base_setting;
   ds=hi->base_setting-is;
 
-  hi->short_setting=hi->base_setting;
-  hi->long_setting=hi->base_setting;
+  hi->stereo_point_setting=hi->base_setting;
 
-  hi->managed=0;
+  if(!hi->lowpass_altered)
+    hi->lowpass_kHz=
+      setup->psy_lowpass[is]*(1.-ds)+setup->psy_lowpass[is+1]*ds;
 
-  hi->impulse_block_p=1;
-  hi->noise_normalize_p=1;
-
-  hi->stereo_point_setting=hi->base_setting;
-  hi->lowpass_kHz=
-    setup->psy_lowpass[is]*(1.-ds)+setup->psy_lowpass[is+1]*ds;  
-  
   hi->ath_floating_dB=setup->psy_ath_float[is]*(1.-ds)+
     setup->psy_ath_float[is+1]*ds;
   hi->ath_absolute_dB=setup->psy_ath_abs[is]*(1.-ds)+
@@ -891,39 +897,46 @@
     hi->block[i].noise_bias_setting=hi->base_setting;
     hi->block[i].noise_compand_setting=hi->base_setting;
   }
-
-  return(ret);
 }
 
 int vorbis_encode_setup_vbr(vorbis_info *vi,
-			    long  channels,
-			    long  rate,			    
-			    float quality){
-  codec_setup_info *ci=vi->codec_setup;
-  highlevel_encode_setup *hi=&ci->hi;
+                            long  channels,
+                            long  rate,
+                            float quality){
+  codec_setup_info *ci;
+  highlevel_encode_setup *hi;
+  if(rate<=0) return OV_EINVAL;
 
-  quality+=.00001;
+  ci=vi->codec_setup;
+  hi=&ci->hi;
+
+  quality+=.0000001;
   if(quality>=1.)quality=.9999;
 
-  get_setup_template(vi,channels,rate,quality,0);
+  hi->req=quality;
+  hi->setup=get_setup_template(channels,rate,quality,0,&hi->base_setting);
   if(!hi->setup)return OV_EIMPL;
-  
-  return vorbis_encode_setup_setting(vi,channels,rate);
+
+  vorbis_encode_setup_setting(vi,channels,rate);
+  hi->managed=0;
+  hi->coupling_p=1;
+
+  return 0;
 }
 
 int vorbis_encode_init_vbr(vorbis_info *vi,
-			   long channels,
-			   long rate,
-			   
-			   float base_quality /* 0. to 1. */
-			   ){
+                           long channels,
+                           long rate,
+
+                           float base_quality /* 0. to 1. */
+                           ){
   int ret=0;
 
   ret=vorbis_encode_setup_vbr(vi,channels,rate,base_quality);
-  
+
   if(ret){
     vorbis_info_clear(vi);
-    return ret; 
+    return ret;
   }
   ret=vorbis_encode_setup_init(vi);
   if(ret)
@@ -932,66 +945,69 @@
 }
 
 int vorbis_encode_setup_managed(vorbis_info *vi,
-				long channels,
-				long rate,
-				
-				long max_bitrate,
-				long nominal_bitrate,
-				long min_bitrate){
+                                long channels,
+                                long rate,
 
-  codec_setup_info *ci=vi->codec_setup;
-  highlevel_encode_setup *hi=&ci->hi;
-  double tnominal=nominal_bitrate;
-  int ret=0;
+                                long max_bitrate,
+                                long nominal_bitrate,
+                                long min_bitrate){
 
+  codec_setup_info *ci;
+  highlevel_encode_setup *hi;
+  double tnominal;
+  if(rate<=0) return OV_EINVAL;
+
+  ci=vi->codec_setup;
+  hi=&ci->hi;
+  tnominal=nominal_bitrate;
+
   if(nominal_bitrate<=0.){
     if(max_bitrate>0.){
-      nominal_bitrate=max_bitrate*.875;
+      if(min_bitrate>0.)
+        nominal_bitrate=(max_bitrate+min_bitrate)*.5;
+      else
+        nominal_bitrate=max_bitrate*.875;
     }else{
       if(min_bitrate>0.){
-	nominal_bitrate=min_bitrate;
+        nominal_bitrate=min_bitrate;
       }else{
-	return(OV_EINVAL);
+        return(OV_EINVAL);
       }
     }
   }
 
-  get_setup_template(vi,channels,rate,nominal_bitrate,1);
+  hi->req=nominal_bitrate;
+  hi->setup=get_setup_template(channels,rate,nominal_bitrate,1,&hi->base_setting);
   if(!hi->setup)return OV_EIMPL;
-  
-  ret=vorbis_encode_setup_setting(vi,channels,rate);
-  if(ret){
-    vorbis_info_clear(vi);
-    return ret; 
-  }
 
+  vorbis_encode_setup_setting(vi,channels,rate);
+
   /* initialize management with sane defaults */
-      /* initialize management with sane defaults */
+  hi->coupling_p=1;
   hi->managed=1;
-  hi->bitrate_av_window=4.;
-  hi->bitrate_av_window_center=.5;
-  hi->bitrate_limit_window=2.;
   hi->bitrate_min=min_bitrate;
   hi->bitrate_max=max_bitrate;
-  hi->bitrate_av_lo=tnominal;
-  hi->bitrate_av_hi=tnominal;
+  hi->bitrate_av=tnominal;
+  hi->bitrate_av_damp=1.5f; /* full range in no less than 1.5 second */
+  hi->bitrate_reservoir=nominal_bitrate*2;
+  hi->bitrate_reservoir_bias=.1; /* bias toward hoarding bits */
 
-  return(ret);
+  return(0);
 
 }
 
 int vorbis_encode_init(vorbis_info *vi,
-		       long channels,
-		       long rate,
+                       long channels,
+                       long rate,
 
-		       long max_bitrate,
-		       long nominal_bitrate,
-		       long min_bitrate){
+                       long max_bitrate,
+                       long nominal_bitrate,
+                       long min_bitrate){
 
   int ret=vorbis_encode_setup_managed(vi,channels,rate,
-				      max_bitrate,
-				      nominal_bitrate,
-				      min_bitrate);
+                                      max_bitrate,
+                                      nominal_bitrate,
+                                      min_bitrate);
   if(ret){
     vorbis_info_clear(vi);
     return(ret);
@@ -1012,122 +1028,196 @@
     if(setp && hi->set_in_stone)return(OV_EINVAL);
 
     switch(number){
+
+    /* now deprecated *****************/
     case OV_ECTL_RATEMANAGE_GET:
       {
-	
-	struct ovectl_ratemanage_arg *ai=
-	  (struct ovectl_ratemanage_arg *)arg;
-	
-	ai->management_active=hi->managed;
-	ai->bitrate_av_window=hi->bitrate_av_window;
-	ai->bitrate_av_window_center=hi->bitrate_av_window_center;
-	ai->bitrate_hard_window=hi->bitrate_limit_window;
-	ai->bitrate_hard_min=hi->bitrate_min;
-	ai->bitrate_hard_max=hi->bitrate_max;
-	ai->bitrate_av_lo=hi->bitrate_av_lo;
-	ai->bitrate_av_hi=hi->bitrate_av_hi;
-	
+
+        struct ovectl_ratemanage_arg *ai=
+          (struct ovectl_ratemanage_arg *)arg;
+
+        ai->management_active=hi->managed;
+        ai->bitrate_hard_window=ai->bitrate_av_window=
+          (double)hi->bitrate_reservoir/vi->rate;
+        ai->bitrate_av_window_center=1.;
+        ai->bitrate_hard_min=hi->bitrate_min;
+        ai->bitrate_hard_max=hi->bitrate_max;
+        ai->bitrate_av_lo=hi->bitrate_av;
+        ai->bitrate_av_hi=hi->bitrate_av;
+
       }
       return(0);
-    
+
+    /* now deprecated *****************/
     case OV_ECTL_RATEMANAGE_SET:
       {
-	struct ovectl_ratemanage_arg *ai=
-	  (struct ovectl_ratemanage_arg *)arg;
-	if(ai==NULL){
-	  hi->managed=0;
-	}else{
-	  hi->managed=ai->management_active;
-	  vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_AVG,arg);
-	  vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_HARD,arg);
-	}
+        struct ovectl_ratemanage_arg *ai=
+          (struct ovectl_ratemanage_arg *)arg;
+        if(ai==NULL){
+          hi->managed=0;
+        }else{
+          hi->managed=ai->management_active;
+          vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_AVG,arg);
+          vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_HARD,arg);
+        }
       }
       return 0;
 
+    /* now deprecated *****************/
     case OV_ECTL_RATEMANAGE_AVG:
       {
-	struct ovectl_ratemanage_arg *ai=
-	  (struct ovectl_ratemanage_arg *)arg;
-	if(ai==NULL){
-	  hi->bitrate_av_lo=0;
-	  hi->bitrate_av_hi=0;
-	  hi->bitrate_av_window=0;
-	}else{
-	  hi->bitrate_av_window=ai->bitrate_av_window;
-	  hi->bitrate_av_window_center=ai->bitrate_av_window_center;
-	  hi->bitrate_av_lo=ai->bitrate_av_lo;
-	  hi->bitrate_av_hi=ai->bitrate_av_hi;
-	}
-
-	if(hi->bitrate_av_window<.25)hi->bitrate_av_window=.25;
-	if(hi->bitrate_av_window>10.)hi->bitrate_av_window=10.;
-	if(hi->bitrate_av_window_center<0.)hi->bitrate_av_window=0.;
-	if(hi->bitrate_av_window_center>1.)hi->bitrate_av_window=1.;
-	
-	if( ( (hi->bitrate_av_lo<=0 && hi->bitrate_av_hi<=0)||
-	      (hi->bitrate_av_window<=0) ) &&
-	    ( (hi->bitrate_min<=0 && hi->bitrate_max<=0)||
-	      (hi->bitrate_limit_window<=0) ))
-	  hi->managed=0;
+        struct ovectl_ratemanage_arg *ai=
+          (struct ovectl_ratemanage_arg *)arg;
+        if(ai==NULL){
+          hi->bitrate_av=0;
+        }else{
+          hi->bitrate_av=(ai->bitrate_av_lo+ai->bitrate_av_hi)*.5;
+        }
       }
       return(0);
+    /* now deprecated *****************/
     case OV_ECTL_RATEMANAGE_HARD:
       {
-	struct ovectl_ratemanage_arg *ai=
-	  (struct ovectl_ratemanage_arg *)arg;
-	if(ai==NULL){
-	  hi->bitrate_min=0;
-	  hi->bitrate_max=0;
-	  hi->bitrate_limit_window=0;
-	}else{
-	  hi->bitrate_limit_window=ai->bitrate_hard_window;
-	  hi->bitrate_min=ai->bitrate_hard_min;
-	  hi->bitrate_max=ai->bitrate_hard_max;
-	}
-	if(hi->bitrate_limit_window<0.)hi->bitrate_limit_window=0.;
-	if(hi->bitrate_limit_window>10.)hi->bitrate_limit_window=10.;
-	
-	if( ( (hi->bitrate_av_lo<=0 && hi->bitrate_av_hi<=0)||
-	      (hi->bitrate_av_window<=0) ) &&
-	    ( (hi->bitrate_min<=0 && hi->bitrate_max<=0)||
-	      (hi->bitrate_limit_window<=0) ))
-	  hi->managed=0;
+        struct ovectl_ratemanage_arg *ai=
+          (struct ovectl_ratemanage_arg *)arg;
+        if(ai==NULL){
+          hi->bitrate_min=0;
+          hi->bitrate_max=0;
+        }else{
+          hi->bitrate_min=ai->bitrate_hard_min;
+          hi->bitrate_max=ai->bitrate_hard_max;
+          hi->bitrate_reservoir=ai->bitrate_hard_window*
+            (hi->bitrate_max+hi->bitrate_min)*.5;
+        }
+        if(hi->bitrate_reservoir<128.)
+          hi->bitrate_reservoir=128.;
       }
       return(0);
 
+      /* replacement ratemanage interface */
+    case OV_ECTL_RATEMANAGE2_GET:
+      {
+        struct ovectl_ratemanage2_arg *ai=
+          (struct ovectl_ratemanage2_arg *)arg;
+        if(ai==NULL)return OV_EINVAL;
+
+        ai->management_active=hi->managed;
+        ai->bitrate_limit_min_kbps=hi->bitrate_min/1000;
+        ai->bitrate_limit_max_kbps=hi->bitrate_max/1000;
+        ai->bitrate_average_kbps=hi->bitrate_av/1000;
+        ai->bitrate_average_damping=hi->bitrate_av_damp;
+        ai->bitrate_limit_reservoir_bits=hi->bitrate_reservoir;
+        ai->bitrate_limit_reservoir_bias=hi->bitrate_reservoir_bias;
+      }
+      return (0);
+    case OV_ECTL_RATEMANAGE2_SET:
+      {
+        struct ovectl_ratemanage2_arg *ai=
+          (struct ovectl_ratemanage2_arg *)arg;
+        if(ai==NULL){
+          hi->managed=0;
+        }else{
+          /* sanity check; only catch invariant violations */
+          if(ai->bitrate_limit_min_kbps>0 &&
+             ai->bitrate_average_kbps>0 &&
+             ai->bitrate_limit_min_kbps>ai->bitrate_average_kbps)
+            return OV_EINVAL;
+
+          if(ai->bitrate_limit_max_kbps>0 &&
+             ai->bitrate_average_kbps>0 &&
+             ai->bitrate_limit_max_kbps<ai->bitrate_average_kbps)
+            return OV_EINVAL;
+
+          if(ai->bitrate_limit_min_kbps>0 &&
+             ai->bitrate_limit_max_kbps>0 &&
+             ai->bitrate_limit_min_kbps>ai->bitrate_limit_max_kbps)
+            return OV_EINVAL;
+
+          if(ai->bitrate_average_damping <= 0.)
+            return OV_EINVAL;
+
+          if(ai->bitrate_limit_reservoir_bits < 0)
+            return OV_EINVAL;
+
+          if(ai->bitrate_limit_reservoir_bias < 0.)
+            return OV_EINVAL;
+
+          if(ai->bitrate_limit_reservoir_bias > 1.)
+            return OV_EINVAL;
+
+          hi->managed=ai->management_active;
+          hi->bitrate_min=ai->bitrate_limit_min_kbps * 1000;
+          hi->bitrate_max=ai->bitrate_limit_max_kbps * 1000;
+          hi->bitrate_av=ai->bitrate_average_kbps * 1000;
+          hi->bitrate_av_damp=ai->bitrate_average_damping;
+          hi->bitrate_reservoir=ai->bitrate_limit_reservoir_bits;
+          hi->bitrate_reservoir_bias=ai->bitrate_limit_reservoir_bias;
+        }
+      }
+      return 0;
+
     case OV_ECTL_LOWPASS_GET:
       {
-	double *farg=(double *)arg;
-	*farg=hi->lowpass_kHz;
+        double *farg=(double *)arg;
+        *farg=hi->lowpass_kHz;
       }
       return(0);
     case OV_ECTL_LOWPASS_SET:
       {
-	double *farg=(double *)arg;
-	hi->lowpass_kHz=*farg;
+        double *farg=(double *)arg;
+        hi->lowpass_kHz=*farg;
 
-	if(hi->lowpass_kHz<2.)hi->lowpass_kHz=2.;
-	if(hi->lowpass_kHz>99.)hi->lowpass_kHz=99.;
+        if(hi->lowpass_kHz<2.)hi->lowpass_kHz=2.;
+        if(hi->lowpass_kHz>99.)hi->lowpass_kHz=99.;
+        hi->lowpass_altered=1;
       }
       return(0);
     case OV_ECTL_IBLOCK_GET:
       {
-	double *farg=(double *)arg;
-	*farg=hi->impulse_noisetune;
+        double *farg=(double *)arg;
+        *farg=hi->impulse_noisetune;
       }
       return(0);
     case OV_ECTL_IBLOCK_SET:
       {
-	double *farg=(double *)arg;
-	hi->impulse_noisetune=*farg;
+        double *farg=(double *)arg;
+        hi->impulse_noisetune=*farg;
 
-	if(hi->impulse_noisetune>0.)hi->impulse_noisetune=0.;
-	if(hi->impulse_noisetune<-15.)hi->impulse_noisetune=-15.;
+        if(hi->impulse_noisetune>0.)hi->impulse_noisetune=0.;
+        if(hi->impulse_noisetune<-15.)hi->impulse_noisetune=-15.;
       }
-      return(0);      
-    }
+      return(0);
+    case OV_ECTL_COUPLING_GET:
+      {
+        int *iarg=(int *)arg;
+        *iarg=hi->coupling_p;
+      }
+      return(0);
+    case OV_ECTL_COUPLING_SET:
+      {
+        const void *new_template;
+        double new_base=0.;
+        int *iarg=(int *)arg;
+        hi->coupling_p=((*iarg)!=0);
 
-
+        /* Fetching a new template can alter the base_setting, which
+           many other parameters are based on.  Right now, the only
+           parameter drawn from the base_setting that can be altered
+           by an encctl is the lowpass, so that is explictly flagged
+           to not be overwritten when we fetch a new template and
+           recompute the dependant settings */
+        new_template = get_setup_template(hi->coupling_p?vi->channels:-1,
+                                          vi->rate,
+                                          hi->req,
+                                          hi->managed,
+                                          &new_base);
+        if(!hi->setup)return OV_EIMPL;
+        hi->setup=new_template;
+        hi->base_setting=new_base;
+        vorbis_encode_setup_setting(vi,vi->channels,vi->rate);
+      }
+      return(0);
+    }
     return(OV_EIMPL);
   }
   return(OV_EINVAL);
--- a/sys/src/cmd/audio/libvorbis/vorbisfile.c
+++ b/sys/src/cmd/audio/libvorbis/vorbisfile.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.c,v 1.62 2002/07/06 04:20:03 msmith Exp $
+ last mod: $Id: vorbisfile.c 19457 2015-03-03 00:15:29Z giles $
 
  ********************************************************************/
 
@@ -22,6 +22,9 @@
 #include <math.h>
 
 #include "vorbis/codec.h"
+
+/* we don't need or want the static callback symbols here */
+#define OV_EXCLUDE_STATIC_CALLBACKS
 #include "vorbis/vorbisfile.h"
 
 #include "os.h"
@@ -51,20 +54,22 @@
    we only want coarse navigation through the stream. */
 
 /*************************************************************************
- * Many, many internal helpers.  The intention is not to be confusing; 
- * rampant duplication and monolithic function implementation would be 
+ * Many, many internal helpers.  The intention is not to be confusing;
+ * rampant duplication and monolithic function implementation would be
  * harder to understand anyway.  The high level functions are last.  Begin
  * grokking near the end of the file */
 
 /* read a little more data from the file/pipe into the ogg_sync framer
 */
-#define CHUNKSIZE 8500 /* a shade over 8k; anyone using pages well
-                          over 8k gets what they deserve */
+#define CHUNKSIZE 65536 /* greater-than-page-size granularity seeking */
+#define READSIZE 2048 /* a smaller read size is needed for low-rate streaming. */
+
 static long _get_data(OggVorbis_File *vf){
   errno=0;
+  if(!(vf->callbacks.read_func))return(-1);
   if(vf->datasource){
-    char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE);
-    long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);
+    char *buffer=ogg_sync_buffer(&vf->oy,READSIZE);
+    long bytes=(vf->callbacks.read_func)(buffer,1,READSIZE,vf->datasource);
     if(bytes>0)ogg_sync_wrote(&vf->oy,bytes);
     if(bytes==0 && errno)return(-1);
     return(bytes);
@@ -73,15 +78,21 @@
 }
 
 /* save a tiny smidge of verbosity to make the code more readable */
-static void _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
-  if(vf->datasource){ 
-    (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET);
-    vf->offset=offset;
-    ogg_sync_reset(&vf->oy);
+static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
+  if(vf->datasource){
+    /* only seek if the file position isn't already there */
+    if(vf->offset != offset){
+      if(!(vf->callbacks.seek_func)||
+         (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
+        return OV_EREAD;
+      vf->offset=offset;
+      ogg_sync_reset(&vf->oy);
+    }
   }else{
     /* shouldn't happen unless someone writes a broken callback */
-    return;
+    return OV_EFAULT;
   }
+  return 0;
 }
 
 /* The read/seek functions track absolute position within the stream */
@@ -92,13 +103,13 @@
 
    boundary: -1) unbounded search
               0) read no additional data; use cached only
-	      n) search for a new page beginning for n bytes
+              n) search for a new page beginning for n bytes
 
    return:   <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD)
               n) found a page at absolute offset n */
 
 static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
-				  ogg_int64_t boundary){
+                                  ogg_int64_t boundary){
   if(boundary>0)boundary+=vf->offset;
   while(1){
     long more;
@@ -105,39 +116,37 @@
 
     if(boundary>0 && vf->offset>=boundary)return(OV_FALSE);
     more=ogg_sync_pageseek(&vf->oy,og);
-    
+
     if(more<0){
       /* skipped n bytes */
       vf->offset-=more;
     }else{
       if(more==0){
-	/* send more paramedics */
-	if(!boundary)return(OV_FALSE);
-	{
-	  long ret=_get_data(vf);
-	  if(ret==0)return(OV_EOF);
-	  if(ret<0)return(OV_EREAD);
-	}
+        /* send more paramedics */
+        if(!boundary)return(OV_FALSE);
+        {
+          long ret=_get_data(vf);
+          if(ret==0)return(OV_EOF);
+          if(ret<0)return(OV_EREAD);
+        }
       }else{
-	/* got a page.  Return the offset at the page beginning,
+        /* got a page.  Return the offset at the page beginning,
            advance the internal offset past the page end */
-	ogg_int64_t ret=vf->offset;
-	vf->offset+=more;
-	return(ret);
-	
+        ogg_int64_t ret=vf->offset;
+        vf->offset+=more;
+        return(ret);
+
       }
     }
   }
 }
 
-/* find the latest page beginning before the current stream cursor
-   position. Much dirtier than the above as Ogg doesn't have any
-   backward search linkage.  no 'readp' as it will certainly have to
-   read. */
+/* find the latest page beginning before the passed in position. Much
+   dirtier than the above as Ogg doesn't have any backward search
+   linkage.  no 'readp' as it will certainly have to read. */
 /* returns offset or OV_EREAD, OV_FAULT */
-static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){
-  ogg_int64_t begin=vf->offset;
-  ogg_int64_t end=begin;
+static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_int64_t begin,ogg_page *og){
+  ogg_int64_t end = begin;
   ogg_int64_t ret;
   ogg_int64_t offset=-1;
 
@@ -145,133 +154,258 @@
     begin-=CHUNKSIZE;
     if(begin<0)
       begin=0;
-    _seek_helper(vf,begin);
+
+    ret=_seek_helper(vf,begin);
+    if(ret)return(ret);
+
     while(vf->offset<end){
+      memset(og,0,sizeof(*og));
       ret=_get_next_page(vf,og,end-vf->offset);
       if(ret==OV_EREAD)return(OV_EREAD);
       if(ret<0){
-	break;
+        break;
       }else{
-	offset=ret;
+        offset=ret;
       }
     }
   }
 
-  /* we have the offset.  Actually snork and hold the page now */
-  _seek_helper(vf,offset);
-  ret=_get_next_page(vf,og,CHUNKSIZE);
-  if(ret<0)
-    /* this shouldn't be possible */
-    return(OV_EFAULT);
+  /* In a fully compliant, non-multiplexed stream, we'll still be
+     holding the last page.  In multiplexed (or noncompliant streams),
+     we will probably have to re-read the last page we saw */
+  if(og->header_len==0){
+    ret=_seek_helper(vf,offset);
+    if(ret)return(ret);
 
+    ret=_get_next_page(vf,og,CHUNKSIZE);
+    if(ret<0)
+      /* this shouldn't be possible */
+      return(OV_EFAULT);
+  }
+
   return(offset);
 }
 
-/* finds each bitstream link one at a time using a bisection search
-   (has to begin by knowing the offset of the lb's initial page).
-   Recurses for each link so it can alloc the link storage after
-   finding them all, then unroll and fill the cache at the same time */
-static int _bisect_forward_serialno(OggVorbis_File *vf,
-				    ogg_int64_t begin,
-				    ogg_int64_t searched,
-				    ogg_int64_t end,
-				    long currentno,
-				    long m){
-  ogg_int64_t endsearched=end;
-  ogg_int64_t next=end;
-  ogg_page og;
-  ogg_int64_t ret;
-  
-  /* the below guards against garbage seperating the last and
-     first pages of two links. */
-  while(searched<endsearched){
-    ogg_int64_t bisect;
-    
-    if(endsearched-searched<CHUNKSIZE){
-      bisect=searched;
-    }else{
-      bisect=(searched+endsearched)/2;
+static void _add_serialno(ogg_page *og,long **serialno_list, int *n){
+  long s = ogg_page_serialno(og);
+  (*n)++;
+
+  if(*serialno_list){
+    *serialno_list = _ogg_realloc(*serialno_list, sizeof(**serialno_list)*(*n));
+  }else{
+    *serialno_list = _ogg_malloc(sizeof(**serialno_list));
+  }
+
+  (*serialno_list)[(*n)-1] = s;
+}
+
+/* returns nonzero if found */
+static int _lookup_serialno(long s, long *serialno_list, int n){
+  if(serialno_list){
+    while(n--){
+      if(*serialno_list == s) return 1;
+      serialno_list++;
     }
-    
-    _seek_helper(vf,bisect);
-    ret=_get_next_page(vf,&og,-1);
-    if(ret==OV_EREAD)return(OV_EREAD);
-    if(ret<0 || ogg_page_serialno(&og)!=currentno){
-      endsearched=bisect;
-      if(ret>=0)next=ret;
-    }else{
-      searched=ret+og.header_len+og.body_len;
-    }
   }
+  return 0;
+}
 
-  _seek_helper(vf,next);
-  ret=_get_next_page(vf,&og,-1);
-  if(ret==OV_EREAD)return(OV_EREAD);
-  
-  if(searched>=end || ret<0){
-    vf->links=m+1;
-    vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
-    vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
-    vf->offsets[m+1]=searched;
-  }else{
-    ret=_bisect_forward_serialno(vf,next,vf->offset,
-				 end,ogg_page_serialno(&og),m+1);
-    if(ret==OV_EREAD)return(OV_EREAD);
+static int _lookup_page_serialno(ogg_page *og, long *serialno_list, int n){
+  long s = ogg_page_serialno(og);
+  return _lookup_serialno(s,serialno_list,n);
+}
+
+/* performs the same search as _get_prev_page, but prefers pages of
+   the specified serial number. If a page of the specified serialno is
+   spotted during the seek-back-and-read-forward, it will return the
+   info of last page of the matching serial number instead of the very
+   last page.  If no page of the specified serialno is seen, it will
+   return the info of last page and alter *serialno.  */
+static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, ogg_int64_t begin,
+                                         long *serial_list, int serial_n,
+                                         int *serialno, ogg_int64_t *granpos){
+  ogg_page og;
+  ogg_int64_t end=begin;
+  ogg_int64_t ret;
+
+  ogg_int64_t prefoffset=-1;
+  ogg_int64_t offset=-1;
+  ogg_int64_t ret_serialno=-1;
+  ogg_int64_t ret_gran=-1;
+
+  while(offset==-1){
+    begin-=CHUNKSIZE;
+    if(begin<0)
+      begin=0;
+
+    ret=_seek_helper(vf,begin);
+    if(ret)return(ret);
+
+    while(vf->offset<end){
+      ret=_get_next_page(vf,&og,end-vf->offset);
+      if(ret==OV_EREAD)return(OV_EREAD);
+      if(ret<0){
+        break;
+      }else{
+        ret_serialno=ogg_page_serialno(&og);
+        ret_gran=ogg_page_granulepos(&og);
+        offset=ret;
+
+        if(ret_serialno == *serialno){
+          prefoffset=ret;
+          *granpos=ret_gran;
+        }
+
+        if(!_lookup_serialno(ret_serialno,serial_list,serial_n)){
+          /* we fell off the end of the link, which means we seeked
+             back too far and shouldn't have been looking in that link
+             to begin with.  If we found the preferred serial number,
+             forget that we saw it. */
+          prefoffset=-1;
+        }
+      }
+    }
   }
-  
-  vf->offsets[m]=begin;
-  vf->serialnos[m]=currentno;
-  return(0);
+
+  /* we're not interested in the page... just the serialno and granpos. */
+  if(prefoffset>=0)return(prefoffset);
+
+  *serialno = ret_serialno;
+  *granpos = ret_gran;
+  return(offset);
+
 }
 
 /* uses the local ogg_stream storage in vf; this is important for
    non-streaming input sources */
 static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc,
-			  long *serialno,ogg_page *og_ptr){
+                          long **serialno_list, int *serialno_n,
+                          ogg_page *og_ptr){
   ogg_page og;
   ogg_packet op;
   int i,ret;
-  
+  int allbos=0;
+
   if(!og_ptr){
     ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
     if(llret==OV_EREAD)return(OV_EREAD);
-    if(llret<0)return OV_ENOTVORBIS;
+    if(llret<0)return(OV_ENOTVORBIS);
     og_ptr=&og;
   }
 
-  ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
-  if(serialno)*serialno=vf->os.serialno;
-  vf->ready_state=STREAMSET;
-  
-  /* extract the initial header from the first page and verify that the
-     Ogg bitstream is in fact Vorbis data */
-  
   vorbis_info_init(vi);
   vorbis_comment_init(vc);
-  
-  i=0;
-  while(i<3){
-    ogg_stream_pagein(&vf->os,og_ptr);
-    while(i<3){
-      int result=ogg_stream_packetout(&vf->os,&op);
-      if(result==0)break;
-      if(result==-1){
-	ret=OV_EBADHEADER;
-	goto bail_header;
+  vf->ready_state=OPENED;
+
+  /* extract the serialnos of all BOS pages + the first set of vorbis
+     headers we see in the link */
+
+  while(ogg_page_bos(og_ptr)){
+    if(serialno_list){
+      if(_lookup_page_serialno(og_ptr,*serialno_list,*serialno_n)){
+        /* a dupe serialnumber in an initial header packet set == invalid stream */
+        if(*serialno_list)_ogg_free(*serialno_list);
+        *serialno_list=0;
+        *serialno_n=0;
+        ret=OV_EBADHEADER;
+        goto bail_header;
       }
-      if((ret=vorbis_synthesis_headerin(vi,vc,&op))){
-	goto bail_header;
+
+      _add_serialno(og_ptr,serialno_list,serialno_n);
+    }
+
+    if(vf->ready_state<STREAMSET){
+      /* we don't have a vorbis stream in this link yet, so begin
+         prospective stream setup. We need a stream to get packets */
+      ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
+      ogg_stream_pagein(&vf->os,og_ptr);
+
+      if(ogg_stream_packetout(&vf->os,&op) > 0 &&
+         vorbis_synthesis_idheader(&op)){
+        /* vorbis header; continue setup */
+        vf->ready_state=STREAMSET;
+        if((ret=vorbis_synthesis_headerin(vi,vc,&op))){
+          ret=OV_EBADHEADER;
+          goto bail_header;
+        }
       }
-      i++;
     }
-    if(i<3)
-      if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
-	ret=OV_EBADHEADER;
-	goto bail_header;
+
+    /* get next page */
+    {
+      ogg_int64_t llret=_get_next_page(vf,og_ptr,CHUNKSIZE);
+      if(llret==OV_EREAD){
+        ret=OV_EREAD;
+        goto bail_header;
       }
+      if(llret<0){
+        ret=OV_ENOTVORBIS;
+        goto bail_header;
+      }
+
+      /* if this page also belongs to our vorbis stream, submit it and break */
+      if(vf->ready_state==STREAMSET &&
+         vf->os.serialno == ogg_page_serialno(og_ptr)){
+        ogg_stream_pagein(&vf->os,og_ptr);
+        break;
+      }
+    }
   }
-  return 0; 
 
+  if(vf->ready_state!=STREAMSET){
+    ret = OV_ENOTVORBIS;
+    goto bail_header;
+  }
+
+  while(1){
+
+    i=0;
+    while(i<2){ /* get a page loop */
+
+      while(i<2){ /* get a packet loop */
+
+        int result=ogg_stream_packetout(&vf->os,&op);
+        if(result==0)break;
+        if(result==-1){
+          ret=OV_EBADHEADER;
+          goto bail_header;
+        }
+
+        if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
+          goto bail_header;
+
+        i++;
+      }
+
+      while(i<2){
+        if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
+          ret=OV_EBADHEADER;
+          goto bail_header;
+        }
+
+        /* if this page belongs to the correct stream, go parse it */
+        if(vf->os.serialno == ogg_page_serialno(og_ptr)){
+          ogg_stream_pagein(&vf->os,og_ptr);
+          break;
+        }
+
+        /* if we never see the final vorbis headers before the link
+           ends, abort */
+        if(ogg_page_bos(og_ptr)){
+          if(allbos){
+            ret = OV_EBADHEADER;
+            goto bail_header;
+          }else
+            allbos=1;
+        }
+
+        /* otherwise, keep looking */
+      }
+    }
+
+    return 0;
+  }
+
  bail_header:
   vorbis_info_clear(vi);
   vorbis_comment_clear(vc);
@@ -280,168 +414,251 @@
   return ret;
 }
 
-/* last step of the OggVorbis_File initialization; get all the
-   vorbis_info structs and PCM positions.  Only called by the seekable
-   initialization (local stream storage is hacked slightly; pay
-   attention to how that's done) */
+/* Starting from current cursor position, get initial PCM offset of
+   next page.  Consumes the page in the process without decoding
+   audio, however this is only called during stream parsing upon
+   seekable open. */
+static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){
+  ogg_page    og;
+  ogg_int64_t accumulated=0;
+  long        lastblock=-1;
+  int         result;
+  int         serialno = vf->os.serialno;
 
-/* this is void and does not propogate errors up because we want to be
-   able to open and use damaged bitstreams as well as we can.  Just
-   watch out for missing information for links in the OggVorbis_File
-   struct */
-static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){
+  while(1){
+    ogg_packet op;
+    if(_get_next_page(vf,&og,-1)<0)
+      break; /* should not be possible unless the file is truncated/mangled */
+
+    if(ogg_page_bos(&og)) break;
+    if(ogg_page_serialno(&og)!=serialno) continue;
+
+    /* count blocksizes of all frames in the page */
+    ogg_stream_pagein(&vf->os,&og);
+    while((result=ogg_stream_packetout(&vf->os,&op))){
+      if(result>0){ /* ignore holes */
+        long thisblock=vorbis_packet_blocksize(vi,&op);
+        if(thisblock>=0){
+          if(lastblock!=-1)
+            accumulated+=(lastblock+thisblock)>>2;
+          lastblock=thisblock;
+        }
+      }
+    }
+
+    if(ogg_page_granulepos(&og)!=-1){
+      /* pcm offset of last packet on the first audio page */
+      accumulated= ogg_page_granulepos(&og)-accumulated;
+      break;
+    }
+  }
+
+  /* less than zero?  Either a corrupt file or a stream with samples
+     trimmed off the beginning, a normal occurrence; in both cases set
+     the offset to zero */
+  if(accumulated<0)accumulated=0;
+
+  return accumulated;
+}
+
+/* finds each bitstream link one at a time using a bisection search
+   (has to begin by knowing the offset of the lb's initial page).
+   Recurses for each link so it can alloc the link storage after
+   finding them all, then unroll and fill the cache at the same time */
+static int _bisect_forward_serialno(OggVorbis_File *vf,
+                                    ogg_int64_t begin,
+                                    ogg_int64_t searched,
+                                    ogg_int64_t end,
+                                    ogg_int64_t endgran,
+                                    int endserial,
+                                    long *currentno_list,
+                                    int  currentnos,
+                                    long m){
+  ogg_int64_t pcmoffset;
+  ogg_int64_t dataoffset=searched;
+  ogg_int64_t endsearched=end;
+  ogg_int64_t next=end;
+  ogg_int64_t searchgran=-1;
   ogg_page og;
-  int i;
-  ogg_int64_t ret;
-  
-  vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
-  vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
-  vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
-  vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
-  
-  for(i=0;i<vf->links;i++){
-    if(i==0){
-      /* we already grabbed the initial header earlier.  Just set the offset */
-      vf->dataoffsets[i]=dataoffset;
-      _seek_helper(vf,dataoffset);
+  ogg_int64_t ret,last;
+  int serialno = vf->os.serialno;
 
-    }else{
+  /* invariants:
+     we have the headers and serialnos for the link beginning at 'begin'
+     we have the offset and granpos of the last page in the file (potentially
+       not a page we care about)
+  */
 
-      /* seek to the location of the initial header */
+  /* Is the last page in our list of current serialnumbers? */
+  if(_lookup_serialno(endserial,currentno_list,currentnos)){
 
-      _seek_helper(vf,vf->offsets[i]);
-      if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){
-    	vf->dataoffsets[i]=-1;
-      }else{
-	vf->dataoffsets[i]=vf->offset;
-      }
+    /* last page is in the starting serialno list, so we've bisected
+       down to (or just started with) a single link.  Now we need to
+       find the last vorbis page belonging to the first vorbis stream
+       for this link. */
+    searched = end;
+    while(endserial != serialno){
+      endserial = serialno;
+      searched=_get_prev_page_serial(vf,searched,currentno_list,currentnos,&endserial,&endgran);
     }
 
-    /* fetch beginning PCM offset */
+    vf->links=m+1;
+    if(vf->offsets)_ogg_free(vf->offsets);
+    if(vf->serialnos)_ogg_free(vf->serialnos);
+    if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
 
-    if(vf->dataoffsets[i]!=-1){
-      ogg_int64_t accumulated=0;
-      long        lastblock=-1;
-      int         result;
+    vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
+    vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
+    vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
+    vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
+    vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
+    vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
 
-      ogg_stream_reset_serialno(&vf->os,vf->serialnos[i]);
+    vf->offsets[m+1]=end;
+    vf->offsets[m]=begin;
+    vf->pcmlengths[m*2+1]=(endgran<0?0:endgran);
 
-      while(1){
-	ogg_packet op;
+  }else{
 
-	ret=_get_next_page(vf,&og,-1);
-	if(ret<0)
-	  /* this should not be possible unless the file is
-             truncated/mangled */
-	  break;
-       
-	if(ogg_page_serialno(&og)!=vf->serialnos[i])
-	  break;
-	
-	/* count blocksizes of all frames in the page */
-	ogg_stream_pagein(&vf->os,&og);
-	while((result=ogg_stream_packetout(&vf->os,&op))){
-	  if(result>0){ /* ignore holes */
-	    long thisblock=vorbis_packet_blocksize(vf->vi+i,&op);
-	    if(lastblock!=-1)
-	      accumulated+=(lastblock+thisblock)>>2;
-	    lastblock=thisblock;
-	  }
-	}
+    /* last page is not in the starting stream's serial number list,
+       so we have multiple links.  Find where the stream that begins
+       our bisection ends. */
 
-	if(ogg_page_granulepos(&og)!=-1){
-	  /* pcm offset of last packet on the first audio page */
-	  accumulated= ogg_page_granulepos(&og)-accumulated;
-	  break;
-	}
-      }
+    long *next_serialno_list=NULL;
+    int next_serialnos=0;
+    vorbis_info vi;
+    vorbis_comment vc;
+    int testserial = serialno+1;
 
-      /* less than zero?  This is a stream with samples trimmed off
-         the beginning, a normal occurrence; set the offset to zero */
-      if(accumulated<0)accumulated=0;
+    /* the below guards against garbage seperating the last and
+       first pages of two links. */
+    while(searched<endsearched){
+      ogg_int64_t bisect;
 
-      vf->pcmlengths[i*2]=accumulated;
-    }
+      if(endsearched-searched<CHUNKSIZE){
+        bisect=searched;
+      }else{
+        bisect=(searched+endsearched)/2;
+      }
 
-    /* get the PCM length of this link. To do this,
-       get the last page of the stream */
-    {
-      ogg_int64_t end=vf->offsets[i+1];
-      _seek_helper(vf,end);
+      ret=_seek_helper(vf,bisect);
+      if(ret)return(ret);
 
-      while(1){
-	ret=_get_prev_page(vf,&og);
-	if(ret<0){
-	  /* this should not be possible */
-	  vorbis_info_clear(vf->vi+i);
-	  vorbis_comment_clear(vf->vc+i);
-	  break;
-	}
-	if(ogg_page_granulepos(&og)!=-1){
-	  vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2];
-	  break;
-	}
-	vf->offset=ret;
+      last=_get_next_page(vf,&og,-1);
+      if(last==OV_EREAD)return(OV_EREAD);
+      if(last<0 || !_lookup_page_serialno(&og,currentno_list,currentnos)){
+        endsearched=bisect;
+        if(last>=0)next=last;
+      }else{
+        searched=vf->offset;
       }
     }
+
+    /* Bisection point found */
+    /* for the time being, fetch end PCM offset the simple way */
+    searched = next;
+    while(testserial != serialno){
+      testserial = serialno;
+      searched = _get_prev_page_serial(vf,searched,currentno_list,currentnos,&testserial,&searchgran);
+    }
+
+    ret=_seek_helper(vf,next);
+    if(ret)return(ret);
+
+    ret=_fetch_headers(vf,&vi,&vc,&next_serialno_list,&next_serialnos,NULL);
+    if(ret)return(ret);
+    serialno = vf->os.serialno;
+    dataoffset = vf->offset;
+
+    /* this will consume a page, however the next bisection always
+       starts with a raw seek */
+    pcmoffset = _initial_pcmoffset(vf,&vi);
+
+    ret=_bisect_forward_serialno(vf,next,vf->offset,end,endgran,endserial,
+                                 next_serialno_list,next_serialnos,m+1);
+    if(ret)return(ret);
+
+    if(next_serialno_list)_ogg_free(next_serialno_list);
+
+    vf->offsets[m+1]=next;
+    vf->serialnos[m+1]=serialno;
+    vf->dataoffsets[m+1]=dataoffset;
+
+    vf->vi[m+1]=vi;
+    vf->vc[m+1]=vc;
+
+    vf->pcmlengths[m*2+1]=searchgran;
+    vf->pcmlengths[m*2+2]=pcmoffset;
+    vf->pcmlengths[m*2+3]-=pcmoffset;
+    if(vf->pcmlengths[m*2+3]<0)vf->pcmlengths[m*2+3]=0;
   }
+  return(0);
 }
 
-static void _make_decode_ready(OggVorbis_File *vf){
-  if(vf->ready_state!=STREAMSET)return;
+static int _make_decode_ready(OggVorbis_File *vf){
+  if(vf->ready_state>STREAMSET)return 0;
+  if(vf->ready_state<STREAMSET)return OV_EFAULT;
   if(vf->seekable){
-    vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link);
+    if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link))
+      return OV_EBADLINK;
   }else{
-    vorbis_synthesis_init(&vf->vd,vf->vi);
-  }    
+    if(vorbis_synthesis_init(&vf->vd,vf->vi))
+      return OV_EBADLINK;
+  }
   vorbis_block_init(&vf->vd,&vf->vb);
   vf->ready_state=INITSET;
-  return;
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  return 0;
 }
 
 static int _open_seekable2(OggVorbis_File *vf){
-  long serialno=vf->current_serialno;
-  ogg_int64_t dataoffset=vf->offset, end;
-  ogg_page og;
+  ogg_int64_t dataoffset=vf->dataoffsets[0],end,endgran=-1;
+  int endserial=vf->os.serialno;
+  int serialno=vf->os.serialno;
 
   /* we're partially open and have a first link header state in
      storage in vf */
-  /* we can seek, so set out learning all about this file */
-  (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
-  vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
-  
-  /* We get the offset for the last page of the physical bitstream.
-     Most OggVorbis files will contain a single logical bitstream */
-  end=_get_prev_page(vf,&og);
-  if(end<0)return(end);
 
-  /* more than one logical bitstream? */
-  if(ogg_page_serialno(&og)!=serialno){
+  /* fetch initial PCM offset */
+  ogg_int64_t pcmoffset = _initial_pcmoffset(vf,vf->vi);
 
-    /* Chained bitstream. Bisect-search each logical bitstream
-       section.  Do so based on serial number only */
-    if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0)return(OV_EREAD);
-
+  /* we can seek, so set out learning all about this file */
+  if(vf->callbacks.seek_func && vf->callbacks.tell_func){
+    (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
+    vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
   }else{
+    vf->offset=vf->end=-1;
+  }
 
-    /* Only one logical bitstream */
-    if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0))return(OV_EREAD);
+  /* If seek_func is implemented, tell_func must also be implemented */
+  if(vf->end==-1) return(OV_EINVAL);
 
-  }
+  /* Get the offset of the last page of the physical bitstream, or, if
+     we're lucky the last vorbis page of this link as most OggVorbis
+     files will contain a single logical bitstream */
+  end=_get_prev_page_serial(vf,vf->end,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran);
+  if(end<0)return(end);
 
-  /* the initial header memory is referenced by vf after; don't free it */
-  _prefetch_all_headers(vf,dataoffset);
-  return(ov_raw_seek(vf,0));
+  /* now determine bitstream structure recursively */
+  if(_bisect_forward_serialno(vf,0,dataoffset,end,endgran,endserial,
+                              vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD);
+
+  vf->offsets[0]=0;
+  vf->serialnos[0]=serialno;
+  vf->dataoffsets[0]=dataoffset;
+  vf->pcmlengths[0]=pcmoffset;
+  vf->pcmlengths[1]-=pcmoffset;
+  if(vf->pcmlengths[1]<0)vf->pcmlengths[1]=0;
+
+  return(ov_raw_seek(vf,dataoffset));
 }
 
-/* clear out the current logical bitstream decoder */ 
+/* clear out the current logical bitstream decoder */
 static void _decode_clear(OggVorbis_File *vf){
   vorbis_dsp_clear(&vf->vd);
   vorbis_block_clear(&vf->vb);
   vf->ready_state=OPENED;
-
-  vf->bittrack=0.f;
-  vf->samptrack=0.f;
 }
 
 /* fetch and process a packet.  Handles the case where we're at a
@@ -448,119 +665,154 @@
    bitstream boundary and dumps the decoding machine.  If the decoding
    machine is unloaded, it loads it.  It also keeps pcm_offset up to
    date (seek and read both use this.  seek uses a special hack with
-   readp). 
+   readp).
 
    return: <0) error, OV_HOLE (lost packet) or OV_EOF
             0) need more data (only if readp==0)
-	    1) got a packet 
+            1) got a packet
 */
 
 static int _fetch_and_process_packet(OggVorbis_File *vf,
-				     ogg_packet *op_in,
-				     int readp){
+                                     ogg_packet *op_in,
+                                     int readp,
+                                     int spanp){
   ogg_page og;
 
   /* handle one packet.  Try to fetch it from current stream state */
   /* extract packets from page */
   while(1){
-    
-    /* process a packet if we can.  If the machine isn't loaded,
-       neither is a page */
+
+    if(vf->ready_state==STREAMSET){
+      int ret=_make_decode_ready(vf);
+      if(ret<0)return ret;
+    }
+
+    /* process a packet if we can. */
+
     if(vf->ready_state==INITSET){
+      int hs=vorbis_synthesis_halfrate_p(vf->vi);
+
       while(1) {
-      	ogg_packet op;
-      	ogg_packet *op_ptr=(op_in?op_in:&op);
-	int result=ogg_stream_packetout(&vf->os,op_ptr);
-	ogg_int64_t granulepos;
+              ogg_packet op;
+              ogg_packet *op_ptr=(op_in?op_in:&op);
+        int result=ogg_stream_packetout(&vf->os,op_ptr);
+        ogg_int64_t granulepos;
 
-	op_in=NULL;
-	if(result==-1)return(OV_HOLE); /* hole in the data. */
-	if(result>0){
-	  /* got a packet.  process it */
-	  granulepos=op_ptr->granulepos;
-	  if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
-						    header handling.  The
-						    header packets aren't
-						    audio, so if/when we
-						    submit them,
-						    vorbis_synthesis will
-						    reject them */
+        op_in=NULL;
+        if(result==-1)return(OV_HOLE); /* hole in the data. */
+        if(result>0){
+          /* got a packet.  process it */
+          granulepos=op_ptr->granulepos;
+          if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
+                                                    header handling.  The
+                                                    header packets aren't
+                                                    audio, so if/when we
+                                                    submit them,
+                                                    vorbis_synthesis will
+                                                    reject them */
 
-	    /* suck in the synthesis data and track bitrate */
-	    {
-	      int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
-	      /* for proper use of libvorbis within libvorbisfile,
+            /* suck in the synthesis data and track bitrate */
+            {
+              int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
+              /* for proper use of libvorbis within libvorbisfile,
                  oldsamples will always be zero. */
-	      if(oldsamples)return(OV_EFAULT);
-	      
-	      vorbis_synthesis_blockin(&vf->vd,&vf->vb);
-	      vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
-	      vf->bittrack+=op_ptr->bytes*8;
-	    }
-	  
-	    /* update the pcm offset. */
-	    if(granulepos!=-1 && !op_ptr->e_o_s){
-	      int link=(vf->seekable?vf->current_link:0);
-	      int i,samples;
-	    
-	      /* this packet has a pcm_offset on it (the last packet
-	         completed on a page carries the offset) After processing
-	         (above), we know the pcm position of the *last* sample
-	         ready to be returned. Find the offset of the *first*
+              if(oldsamples)return(OV_EFAULT);
 
-	         As an aside, this trick is inaccurate if we begin
-	         reading anew right at the last page; the end-of-stream
-	         granulepos declares the last frame in the stream, and the
-	         last packet of the last page may be a partial frame.
-	         So, we need a previous granulepos from an in-sequence page
-	         to have a reference point.  Thus the !op_ptr->e_o_s clause
-	         above */
+              vorbis_synthesis_blockin(&vf->vd,&vf->vb);
+              vf->samptrack+=(vorbis_synthesis_pcmout(&vf->vd,NULL)<<hs);
+              vf->bittrack+=op_ptr->bytes*8;
+            }
 
-	      if(vf->seekable && link>0)
-		granulepos-=vf->pcmlengths[link*2];
-	      if(granulepos<0)granulepos=0; /* actually, this
-					       shouldn't be possible
-					       here unless the stream
-					       is very broken */
+            /* update the pcm offset. */
+            if(granulepos!=-1 && !op_ptr->e_o_s){
+              int link=(vf->seekable?vf->current_link:0);
+              int i,samples;
 
-	      samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
-	    
-	      granulepos-=samples;
-	      for(i=0;i<link;i++)
-	        granulepos+=vf->pcmlengths[i*2+1];
-	      vf->pcm_offset=granulepos;
-	    }
-	    return(1);
-	  }
-	}
-	else 
-	  break;
+              /* this packet has a pcm_offset on it (the last packet
+                 completed on a page carries the offset) After processing
+                 (above), we know the pcm position of the *last* sample
+                 ready to be returned. Find the offset of the *first*
+
+                 As an aside, this trick is inaccurate if we begin
+                 reading anew right at the last page; the end-of-stream
+                 granulepos declares the last frame in the stream, and the
+                 last packet of the last page may be a partial frame.
+                 So, we need a previous granulepos from an in-sequence page
+                 to have a reference point.  Thus the !op_ptr->e_o_s clause
+                 above */
+
+              if(vf->seekable && link>0)
+                granulepos-=vf->pcmlengths[link*2];
+              if(granulepos<0)granulepos=0; /* actually, this
+                                               shouldn't be possible
+                                               here unless the stream
+                                               is very broken */
+
+              samples=(vorbis_synthesis_pcmout(&vf->vd,NULL)<<hs);
+
+              granulepos-=samples;
+              for(i=0;i<link;i++)
+                granulepos+=vf->pcmlengths[i*2+1];
+              vf->pcm_offset=granulepos;
+            }
+            return(1);
+          }
+        }
+        else
+          break;
       }
     }
 
     if(vf->ready_state>=OPENED){
-      if(!readp)return(0);
-      if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* eof. 
-							leave unitialized */
-      /* bitrate tracking; add the header's bytes here, the body bytes
-	 are done by packet above */
-      vf->bittrack+=og.header_len*8;
-      
-      /* has our decoding just traversed a bitstream boundary? */
-      if(vf->ready_state==INITSET){
-	if(vf->current_serialno!=ogg_page_serialno(&og)){
-	  _decode_clear(vf);
-	  
-	  if(!vf->seekable){
-	    vorbis_info_clear(vf->vi);
-	    vorbis_comment_clear(vf->vc);
-	  }
-	}
+      ogg_int64_t ret;
+
+      while(1){
+        /* the loop is not strictly necessary, but there's no sense in
+           doing the extra checks of the larger loop for the common
+           case in a multiplexed bistream where the page is simply
+           part of a different logical bitstream; keep reading until
+           we get one with the correct serialno */
+
+        if(!readp)return(0);
+        if((ret=_get_next_page(vf,&og,-1))<0){
+          return(OV_EOF); /* eof. leave unitialized */
+        }
+
+        /* bitrate tracking; add the header's bytes here, the body bytes
+           are done by packet above */
+        vf->bittrack+=og.header_len*8;
+
+        if(vf->ready_state==INITSET){
+          if(vf->current_serialno!=ogg_page_serialno(&og)){
+
+            /* two possibilities:
+               1) our decoding just traversed a bitstream boundary
+               2) another stream is multiplexed into this logical section */
+
+            if(ogg_page_bos(&og)){
+              /* boundary case */
+              if(!spanp)
+                return(OV_EOF);
+
+              _decode_clear(vf);
+
+              if(!vf->seekable){
+                vorbis_info_clear(vf->vi);
+                vorbis_comment_clear(vf->vc);
+              }
+              break;
+
+            }else
+              continue; /* possibility #2 */
+          }
+        }
+
+        break;
       }
     }
 
     /* Do we need to load a new machine before submitting the page? */
-    /* This is different in the seekable and non-seekable cases.  
+    /* This is different in the seekable and non-seekable cases.
 
        In the seekable case, we already have all the header
        information loaded and cached; we just initialize the machine
@@ -571,42 +823,47 @@
        we're now nominally at the header of the next bitstream
     */
 
-    if(vf->ready_state!=INITSET){ 
+    if(vf->ready_state!=INITSET){
       int link;
 
       if(vf->ready_state<STREAMSET){
-	if(vf->seekable){
-	  vf->current_serialno=ogg_page_serialno(&og);
-	  
-	  /* match the serialno to bitstream section.  We use this rather than
-	     offset positions to avoid problems near logical bitstream
-	     boundaries */
-	  for(link=0;link<vf->links;link++)
-	    if(vf->serialnos[link]==vf->current_serialno)break;
-	  if(link==vf->links)return(OV_EBADLINK); /* sign of a bogus
-						     stream.  error out,
-						     leave machine
-						     uninitialized */
-	  
-	  vf->current_link=link;
-	  
-	  ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
-	  vf->ready_state=STREAMSET;
-	  
-	}else{
-	  /* we're streaming */
-	  /* fetch the three header packets, build the info struct */
-	  
-	  int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og);
-	  if(ret)return(ret);
-	  vf->current_link++;
-	  link=0;
-	}
+        if(vf->seekable){
+          long serialno = ogg_page_serialno(&og);
+
+          /* match the serialno to bitstream section.  We use this rather than
+             offset positions to avoid problems near logical bitstream
+             boundaries */
+
+          for(link=0;link<vf->links;link++)
+            if(vf->serialnos[link]==serialno)break;
+
+          if(link==vf->links) continue; /* not the desired Vorbis
+                                           bitstream section; keep
+                                           trying */
+
+          vf->current_serialno=serialno;
+          vf->current_link=link;
+
+          ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
+          vf->ready_state=STREAMSET;
+
+        }else{
+          /* we're streaming */
+          /* fetch the three header packets, build the info struct */
+
+          int ret=_fetch_headers(vf,vf->vi,vf->vc,NULL,NULL,&og);
+          if(ret)return(ret);
+          vf->current_serialno=vf->os.serialno;
+          vf->current_link++;
+          link=0;
+        }
       }
-      
-      _make_decode_ready(vf);
     }
+
+    /* the buffered page is the data we want, and we're ready for it;
+       add it to the stream state */
     ogg_stream_pagein(&vf->os,&og);
+
   }
 }
 
@@ -617,9 +874,11 @@
   return fseek(f,off,whence);
 }
 
-static int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
-		     long ibytes, ov_callbacks callbacks){
-  int offsettest=(f?callbacks.seek_func(f,0,SEEK_CUR):-1);
+static int _ov_open1(void *f,OggVorbis_File *vf,const char *initial,
+                     long ibytes, ov_callbacks callbacks){
+  int offsettest=((f && callbacks.seek_func)?callbacks.seek_func(f,0,SEEK_CUR):-1);
+  long *serialno_list=NULL;
+  int serialno_list_size=0;
   int ret;
 
   memset(vf,0,sizeof(*vf));
@@ -631,8 +890,8 @@
 
   /* perhaps some data was previously read into a buffer for testing
      against other stream types.  Allow initialization from this
-     previously read data (as we may be reading from a non-seekable
-     stream) */
+     previously read data (especially as we may be reading from a
+     non-seekable stream) */
   if(initial){
     char *buffer=ogg_sync_buffer(&vf->oy,ibytes);
     memcpy(buffer,initial,ibytes);
@@ -649,18 +908,34 @@
   vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc));
   ogg_stream_init(&vf->os,-1); /* fill in the serialno later */
 
-  /* Try to fetch the headers, maintaining all the storage */
-  if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){
+  /* Fetch all BOS pages, store the vorbis header and all seen serial
+     numbers, load subsequent vorbis setup headers */
+  if((ret=_fetch_headers(vf,vf->vi,vf->vc,&serialno_list,&serialno_list_size,NULL))<0){
     vf->datasource=NULL;
     ov_clear(vf);
-  }else if(vf->ready_state < PARTOPEN)
+  }else{
+    /* serial number list for first link needs to be held somewhere
+       for second stage of seekable stream open; this saves having to
+       seek/reread first link's serialnumber data then. */
+    vf->serialnos=_ogg_calloc(serialno_list_size+2,sizeof(*vf->serialnos));
+    vf->serialnos[0]=vf->current_serialno=vf->os.serialno;
+    vf->serialnos[1]=serialno_list_size;
+    memcpy(vf->serialnos+2,serialno_list,serialno_list_size*sizeof(*vf->serialnos));
+
+    vf->offsets=_ogg_calloc(1,sizeof(*vf->offsets));
+    vf->dataoffsets=_ogg_calloc(1,sizeof(*vf->dataoffsets));
+    vf->offsets[0]=0;
+    vf->dataoffsets[0]=vf->offset;
+
     vf->ready_state=PARTOPEN;
+  }
+  if(serialno_list)_ogg_free(serialno_list);
   return(ret);
 }
 
 static int _ov_open2(OggVorbis_File *vf){
-  if(vf->ready_state < OPENED)
-    vf->ready_state=OPENED;
+  if(vf->ready_state != PARTOPEN) return OV_EINVAL;
+  vf->ready_state=OPENED;
   if(vf->seekable){
     int ret=_open_seekable2(vf);
     if(ret){
@@ -668,7 +943,9 @@
       ov_clear(vf);
     }
     return(ret);
-  }
+  }else
+    vf->ready_state=STREAMSET;
+
   return 0;
 }
 
@@ -679,12 +956,12 @@
     vorbis_block_clear(&vf->vb);
     vorbis_dsp_clear(&vf->vd);
     ogg_stream_clear(&vf->os);
-    
+
     if(vf->vi && vf->links){
       int i;
       for(i=0;i<vf->links;i++){
-	vorbis_info_clear(vf->vi+i);
-	vorbis_comment_clear(vf->vc+i);
+        vorbis_info_clear(vf->vi+i);
+        vorbis_comment_clear(vf->vc+i);
       }
       _ogg_free(vf->vi);
       _ogg_free(vf->vc);
@@ -694,7 +971,8 @@
     if(vf->serialnos)_ogg_free(vf->serialnos);
     if(vf->offsets)_ogg_free(vf->offsets);
     ogg_sync_clear(&vf->oy);
-    if(vf->datasource)(vf->callbacks.close_func)(vf->datasource);
+    if(vf->datasource && vf->callbacks.close_func)
+      (vf->callbacks.close_func)(vf->datasource);
     memset(vf,0,sizeof(*vf));
   }
 #ifdef DEBUG_LEAKS
@@ -705,20 +983,20 @@
 
 /* inspects the OggVorbis file and finds/documents all the logical
    bitstreams contained in it.  Tries to be tolerant of logical
-   bitstream sections that are truncated/woogie. 
+   bitstream sections that are truncated/woogie.
 
    return: -1) error
             0) OK
 */
 
-int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
-    ov_callbacks callbacks){
+int ov_open_callbacks(void *f,OggVorbis_File *vf,
+    const char *initial,long ibytes,ov_callbacks callbacks){
   int ret=_ov_open1(f,vf,initial,ibytes,callbacks);
   if(ret)return ret;
   return _ov_open2(vf);
 }
 
-int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
+int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){
   ov_callbacks callbacks = {
     (size_t (*)(void *, size_t, size_t, void *))  fread,
     (int (*)(void *, ogg_int64_t, int))              _fseek64_wrap,
@@ -728,19 +1006,67 @@
 
   return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks);
 }
-  
+
+int ov_fopen(const char *path,OggVorbis_File *vf){
+  int ret;
+  FILE *f = fopen(path,"rb");
+  if(!f) return -1;
+
+  ret = ov_open(f,vf,NULL,0);
+  if(ret) fclose(f);
+  return ret;
+}
+
+
+/* cheap hack for game usage where downsampling is desirable; there's
+   no need for SRC as we can just do it cheaply in libvorbis. */
+
+int ov_halfrate(OggVorbis_File *vf,int flag){
+  int i;
+  if(vf->vi==NULL)return OV_EINVAL;
+  if(vf->ready_state>STREAMSET){
+    /* clear out stream state; dumping the decode machine is needed to
+       reinit the MDCT lookups. */
+    vorbis_dsp_clear(&vf->vd);
+    vorbis_block_clear(&vf->vb);
+    vf->ready_state=STREAMSET;
+    if(vf->pcm_offset>=0){
+      ogg_int64_t pos=vf->pcm_offset;
+      vf->pcm_offset=-1; /* make sure the pos is dumped if unseekable */
+      ov_pcm_seek(vf,pos);
+    }
+  }
+
+  for(i=0;i<vf->links;i++){
+    if(vorbis_synthesis_halfrate(vf->vi+i,flag)){
+      if(flag) ov_halfrate(vf,0);
+      return OV_EINVAL;
+    }
+  }
+  return 0;
+}
+
+int ov_halfrate_p(OggVorbis_File *vf){
+  if(vf->vi==NULL)return OV_EINVAL;
+  return vorbis_synthesis_halfrate_p(vf->vi);
+}
+
 /* Only partially open the vorbis file; test for Vorbisness, and load
    the headers for the first chain.  Do not seek (although test for
    seekability).  Use ov_test_open to finish opening the file, else
-   ov_clear to close/free it. Same return codes as open. */
+   ov_clear to close/free it. Same return codes as open.
 
-int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
-    ov_callbacks callbacks)
+   Note that vorbisfile does _not_ take ownership of the file if the
+   call fails; the calling applicaiton is responsible for closing the file
+   if this call returns an error. */
+
+int ov_test_callbacks(void *f,OggVorbis_File *vf,
+    const char *initial,long ibytes,ov_callbacks callbacks)
 {
   return _ov_open1(f,vf,initial,ibytes,callbacks);
 }
 
-int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
+int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){
   ov_callbacks callbacks = {
     (size_t (*)(void *, size_t, size_t, void *))  fread,
     (int (*)(void *, ogg_int64_t, int))              _fseek64_wrap,
@@ -750,7 +1076,7 @@
 
   return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks);
 }
-  
+
 int ov_test_open(OggVorbis_File *vf){
   if(vf->ready_state!=PARTOPEN)return(OV_EINVAL);
   return _ov_open2(vf);
@@ -782,9 +1108,15 @@
   if(i<0){
     ogg_int64_t bits=0;
     int i;
+    float br;
     for(i=0;i<vf->links;i++)
       bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
-    return(rint(bits/ov_time_total(vf,-1)));
+    /* This once read: return(rint(bits/ov_time_total(vf,-1)));
+     * gcc 3.x on x86 miscompiled this at optimisation level 2 and above,
+     * so this is slightly transformed to make it work.
+     */
+    br = bits/ov_time_total(vf,-1);
+    return(rint(br));
   }else{
     if(vf->seekable){
       /* return the actual bitrate */
@@ -792,16 +1124,16 @@
     }else{
       /* return nominal if set */
       if(vf->vi[i].bitrate_nominal>0){
-	return vf->vi[i].bitrate_nominal;
+        return vf->vi[i].bitrate_nominal;
       }else{
-	if(vf->vi[i].bitrate_upper>0){
-	  if(vf->vi[i].bitrate_lower>0){
-	    return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
-	  }else{
-	    return vf->vi[i].bitrate_upper;
-	  }
-	}
-	return(OV_FALSE);
+        if(vf->vi[i].bitrate_upper>0){
+          if(vf->vi[i].bitrate_lower>0){
+            return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
+          }else{
+            return vf->vi[i].bitrate_upper;
+          }
+        }
+        return(OV_FALSE);
       }
     }
   }
@@ -809,7 +1141,7 @@
 
 /* returns the actual bitrate since last call.  returns -1 if no
    additional data to offer since last call (or at beginning of stream),
-   EINVAL if stream is only partially open 
+   EINVAL if stream is only partially open
 */
 long ov_bitrate_instant(OggVorbis_File *vf){
   int link=(vf->seekable?vf->current_link:0);
@@ -835,8 +1167,8 @@
 
 /* returns: total raw (compressed) length of content if i==-1
             raw (compressed) length of that logical bitstream for i==0 to n
-	    OV_EINVAL if the stream is not seekable (we can't know the length)
-	    or if stream is only partially open
+            OV_EINVAL if the stream is not seekable (we can't know the length)
+            or if stream is only partially open
 */
 ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){
   if(vf->ready_state<OPENED)return(OV_EINVAL);
@@ -853,9 +1185,9 @@
 }
 
 /* returns: total PCM length (samples) of content if i==-1 PCM length
-	    (samples) of that logical bitstream for i==0 to n
-	    OV_EINVAL if the stream is not seekable (we can't know the
-	    length) or only partially open 
+            (samples) of that logical bitstream for i==0 to n
+            OV_EINVAL if the stream is not seekable (we can't know the
+            length) or only partially open
 */
 ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){
   if(vf->ready_state<OPENED)return(OV_EINVAL);
@@ -873,8 +1205,8 @@
 
 /* returns: total seconds of content if i==-1
             seconds in that logical bitstream for i==0 to n
-	    OV_EINVAL if the stream is not seekable (we can't know the
-	    length) or only partially open 
+            OV_EINVAL if the stream is not seekable (we can't know the
+            length) or only partially open
 */
 double ov_time_total(OggVorbis_File *vf,int i){
   if(vf->ready_state<OPENED)return(OV_EINVAL);
@@ -899,6 +1231,7 @@
 
 int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){
   ogg_stream_state work_os;
+  int ret;
 
   if(vf->ready_state<OPENED)return(OV_EINVAL);
   if(!vf->seekable)
@@ -906,12 +1239,24 @@
 
   if(pos<0 || pos>vf->end)return(OV_EINVAL);
 
-  /* clear out decoding machine state */
+  /* is the seek position outside our current link [if any]? */
+  if(vf->ready_state>=STREAMSET){
+    if(pos<vf->offsets[vf->current_link] || pos>=vf->offsets[vf->current_link+1])
+      _decode_clear(vf); /* clear out stream state */
+  }
+
+  /* don't yet clear out decoding machine (if it's initialized), in
+     the case we're in the same link.  Restart the decode lapping, and
+     let _fetch_and_process_packet deal with a potential bitstream
+     boundary */
   vf->pcm_offset=-1;
-  _decode_clear(vf);
-  
-  _seek_helper(vf,pos);
+  ogg_stream_reset_serialno(&vf->os,
+                            vf->current_serialno); /* must set serialno */
+  vorbis_synthesis_restart(&vf->vd);
 
+  ret=_seek_helper(vf,pos);
+  if(ret)goto seek_error;
+
   /* we need to make sure the pcm_offset is set, but we don't want to
      advance the raw cursor past good packets just to get to the first
      with a granulepos.  That's not equivalent behavior to beginning
@@ -918,13 +1263,13 @@
      decoding as immediately after the seek position as possible.
 
      So, a hack.  We use two stream states; a local scratch state and
-     a the shared vf->os stream state.  We use the local state to
-     scan, and the shared state as a buffer for later decode. 
+     the shared vf->os stream state.  We use the local state to
+     scan, and the shared state as a buffer for later decode.
 
      Unfortuantely, on the last page we still advance to last packet
      because the granulepos on the last page is not necessarily on a
      packet boundary, and we need to make sure the granpos is
-     correct. 
+     correct.
   */
 
   {
@@ -932,82 +1277,117 @@
     ogg_packet op;
     int lastblock=0;
     int accblock=0;
-    int thisblock;
-    int eosflag;
+    int thisblock=0;
+    int lastflag=0;
+    int firstflag=0;
+    ogg_int64_t pagepos=-1;
 
-    ogg_stream_init(&work_os,-1); /* get the memory ready */
+    ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */
+    ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE
+                                   return from not necessarily
+                                   starting from the beginning */
 
     while(1){
-      if(vf->ready_state==STREAMSET){
-	/* snarf/scan a packet if we can */
-	int result=ogg_stream_packetout(&work_os,&op);
-      
-	if(result>0){
+      if(vf->ready_state>=STREAMSET){
+        /* snarf/scan a packet if we can */
+        int result=ogg_stream_packetout(&work_os,&op);
 
-	  if(vf->vi[vf->current_link].codec_setup)
-	    thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
-	  if(eosflag)
-	    ogg_stream_packetout(&vf->os,NULL);
-	  else
-	    if(lastblock)accblock+=(lastblock+thisblock)>>2;
+        if(result>0){
 
-	  if(op.granulepos!=-1){
-	    int i,link=vf->current_link;
-	    ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
-	    if(granulepos<0)granulepos=0;
-	    
-	    for(i=0;i<link;i++)
-	      granulepos+=vf->pcmlengths[i*2+1];
-	    vf->pcm_offset=granulepos-accblock;
-	    break;
-	  }
-	  lastblock=thisblock;
-	  continue;
-	}
+          if(vf->vi[vf->current_link].codec_setup){
+            thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
+            if(thisblock<0){
+              ogg_stream_packetout(&vf->os,NULL);
+              thisblock=0;
+            }else{
+
+              /* We can't get a guaranteed correct pcm position out of the
+                 last page in a stream because it might have a 'short'
+                 granpos, which can only be detected in the presence of a
+                 preceding page.  However, if the last page is also the first
+                 page, the granpos rules of a first page take precedence.  Not
+                 only that, but for first==last, the EOS page must be treated
+                 as if its a normal first page for the stream to open/play. */
+              if(lastflag && !firstflag)
+                ogg_stream_packetout(&vf->os,NULL);
+              else
+                if(lastblock)accblock+=(lastblock+thisblock)>>2;
+            }
+
+            if(op.granulepos!=-1){
+              int i,link=vf->current_link;
+              ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
+              if(granulepos<0)granulepos=0;
+
+              for(i=0;i<link;i++)
+                granulepos+=vf->pcmlengths[i*2+1];
+              vf->pcm_offset=granulepos-accblock;
+              if(vf->pcm_offset<0)vf->pcm_offset=0;
+              break;
+            }
+            lastblock=thisblock;
+            continue;
+          }else
+            ogg_stream_packetout(&vf->os,NULL);
+        }
       }
-      
+
       if(!lastblock){
-	if(_get_next_page(vf,&og,-1)<0){
-	  vf->pcm_offset=ov_pcm_total(vf,-1);
-	  break;
-	}
+        pagepos=_get_next_page(vf,&og,-1);
+        if(pagepos<0){
+          vf->pcm_offset=ov_pcm_total(vf,-1);
+          break;
+        }
       }else{
-	/* huh?  Bogus stream with packets but no granulepos */
-	vf->pcm_offset=-1;
-	break;
+        /* huh?  Bogus stream with packets but no granulepos */
+        vf->pcm_offset=-1;
+        break;
       }
-      
+
       /* has our decoding just traversed a bitstream boundary? */
-      if(vf->ready_state==STREAMSET)
-	if(vf->current_serialno!=ogg_page_serialno(&og)){
-	_decode_clear(vf); /* clear out stream state */
-	ogg_stream_clear(&work_os);
+      if(vf->ready_state>=STREAMSET){
+        if(vf->current_serialno!=ogg_page_serialno(&og)){
+
+          /* two possibilities:
+             1) our decoding just traversed a bitstream boundary
+             2) another stream is multiplexed into this logical section? */
+
+          if(ogg_page_bos(&og)){
+            /* we traversed */
+            _decode_clear(vf); /* clear out stream state */
+            ogg_stream_clear(&work_os);
+          } /* else, do nothing; next loop will scoop another page */
+        }
       }
 
       if(vf->ready_state<STREAMSET){
-	int link;
-	
-	vf->current_serialno=ogg_page_serialno(&og);
-	for(link=0;link<vf->links;link++)
-	  if(vf->serialnos[link]==vf->current_serialno)break;
-	if(link==vf->links)goto seek_error; /* sign of a bogus stream.
-					       error out, leave
-					       machine uninitialized */
-	vf->current_link=link;
-	
-	ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
-	ogg_stream_reset_serialno(&work_os,vf->current_serialno); 
-	vf->ready_state=STREAMSET;
-	
+        int link;
+        long serialno = ogg_page_serialno(&og);
+
+        for(link=0;link<vf->links;link++)
+          if(vf->serialnos[link]==serialno)break;
+
+        if(link==vf->links) continue; /* not the desired Vorbis
+                                         bitstream section; keep
+                                         trying */
+        vf->current_link=link;
+        vf->current_serialno=serialno;
+        ogg_stream_reset_serialno(&vf->os,serialno);
+        ogg_stream_reset_serialno(&work_os,serialno);
+        vf->ready_state=STREAMSET;
+        firstflag=(pagepos<=vf->dataoffsets[link]);
       }
-    
+
       ogg_stream_pagein(&vf->os,&og);
       ogg_stream_pagein(&work_os,&og);
-      eosflag=ogg_page_eos(&og);
+      lastflag=ogg_page_eos(&og);
+
     }
   }
 
   ogg_stream_clear(&work_os);
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
   return(0);
 
  seek_error:
@@ -1021,7 +1401,7 @@
 /* Page granularity seek (faster than sample granularity because we
    don't do the last bit of decode to find a specific sample).
 
-   Seek to the last [granule marked] page preceeding the specified pos
+   Seek to the last [granule marked] page preceding the specified pos
    location, such that decoding past the returned point will quickly
    arrive at the requested position. */
 int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
@@ -1033,7 +1413,7 @@
   if(!vf->seekable)return(OV_ENOSEEK);
 
   if(pos<0 || pos>total)return(OV_EINVAL);
- 
+
   /* which bitstream section does this pcm offset occur in? */
   for(link=vf->links-1;link>=0;link--){
     total-=vf->pcmlengths[link*2+1];
@@ -1040,141 +1420,251 @@
     if(pos>=total)break;
   }
 
-  /* search within the logical bitstream for the page with the highest
-     pcm_pos preceeding (or equal to) pos.  There is a danger here;
-     missing pages or incorrect frame number information in the
-     bitstream could make our task impossible.  Account for that (it
-     would be an error condition) */
+  /* Search within the logical bitstream for the page with the highest
+     pcm_pos preceding pos.  If we're looking for a position on the
+     first page, bisection will halt without finding our position as
+     it's before the first explicit granulepos fencepost. That case is
+     handled separately below.
 
-  /* new search algorithm by HB (Nicholas Vinen) */
+     There is a danger here; missing pages or incorrect frame number
+     information in the bitstream could make our task impossible.
+     Account for that (it would be an error condition) */
+
+  /* new search algorithm originally by HB (Nicholas Vinen) */
+
   {
     ogg_int64_t end=vf->offsets[link+1];
-    ogg_int64_t begin=vf->offsets[link];
+    ogg_int64_t begin=vf->dataoffsets[link];
     ogg_int64_t begintime = vf->pcmlengths[link*2];
     ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
     ogg_int64_t target=pos-total+begintime;
-    ogg_int64_t best=begin;
-    
+    ogg_int64_t best=-1;
+    int         got_page=0;
+
     ogg_page og;
+
+    /* if we have only one page, there will be no bisection.  Grab the page here */
+    if(begin==end){
+      result=_seek_helper(vf,begin);
+      if(result) goto seek_error;
+
+      result=_get_next_page(vf,&og,1);
+      if(result<0) goto seek_error;
+
+      got_page=1;
+    }
+
+    /* bisection loop */
     while(begin<end){
       ogg_int64_t bisect;
-      
+
       if(end-begin<CHUNKSIZE){
-	bisect=begin;
+        bisect=begin;
       }else{
-	/* take a (pretty decent) guess. */
-	bisect=begin + 
-	  (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE;
-	if(bisect<=begin)
-	  bisect=begin+1;
+        /* take a (pretty decent) guess. */
+        bisect=begin +
+          (ogg_int64_t)((double)(target-begintime)*(end-begin)/(endtime-begintime))
+          - CHUNKSIZE;
+        if(bisect<begin+CHUNKSIZE)
+          bisect=begin;
       }
-      
-      _seek_helper(vf,bisect);
-    
+
+      result=_seek_helper(vf,bisect);
+      if(result) goto seek_error;
+
+      /* read loop within the bisection loop */
       while(begin<end){
-	result=_get_next_page(vf,&og,end-vf->offset);
-	if(result==OV_EREAD) goto seek_error;
-	if(result<0){
-	  if(bisect<=begin+1)
-	    end=begin; /* found it */
-	  else{
-	    if(bisect==0) goto seek_error;
-	    bisect-=CHUNKSIZE;
-	    if(bisect<=begin)bisect=begin+1;
-	    _seek_helper(vf,bisect);
-	  }
-	}else{
-	  ogg_int64_t granulepos=ogg_page_granulepos(&og);
-	  if(granulepos==-1)continue;
-	  if(granulepos<target){
-	    best=result;  /* raw offset of packet with granulepos */ 
-	    begin=vf->offset; /* raw offset of next page */
-	    begintime=granulepos;
-	    
-	    if(target-begintime>44100)break;
-	    bisect=begin; /* *not* begin + 1 */
-	  }else{
-	    if(bisect<=begin+1)
-	      end=begin;  /* found it */
-	    else{
-	      if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
-		end=result;
-		bisect-=CHUNKSIZE; /* an endless loop otherwise. */
-		if(bisect<=begin)bisect=begin+1;
-		_seek_helper(vf,bisect);
-	      }else{
-		end=result;
-		endtime=granulepos;
-		break;
-	      }
-	    }
-	  }
-	}
+        result=_get_next_page(vf,&og,end-vf->offset);
+        if(result==OV_EREAD) goto seek_error;
+        if(result<0){
+          /* there is no next page! */
+          if(bisect<=begin+1)
+              /* No bisection left to perform.  We've either found the
+                 best candidate already or failed. Exit loop. */
+            end=begin;
+          else{
+            /* We tried to load a fraction of the last page; back up a
+               bit and try to get the whole last page */
+            if(bisect==0) goto seek_error;
+            bisect-=CHUNKSIZE;
+
+            /* don't repeat/loop on a read we've already performed */
+            if(bisect<=begin)bisect=begin+1;
+
+            /* seek and cntinue bisection */
+            result=_seek_helper(vf,bisect);
+            if(result) goto seek_error;
+          }
+        }else{
+          ogg_int64_t granulepos;
+          got_page=1;
+
+          /* got a page. analyze it */
+          /* only consider pages from primary vorbis stream */
+          if(ogg_page_serialno(&og)!=vf->serialnos[link])
+            continue;
+
+          /* only consider pages with the granulepos set */
+          granulepos=ogg_page_granulepos(&og);
+          if(granulepos==-1)continue;
+
+          if(granulepos<target){
+            /* this page is a successful candidate! Set state */
+
+            best=result;  /* raw offset of packet with granulepos */
+            begin=vf->offset; /* raw offset of next page */
+            begintime=granulepos;
+
+            /* if we're before our target but within a short distance,
+               don't bisect; read forward */
+            if(target-begintime>44100)break;
+
+            bisect=begin; /* *not* begin + 1 as above */
+          }else{
+
+            /* This is one of our pages, but the granpos is
+               post-target; it is not a bisection return
+               candidate. (The only way we'd use it is if it's the
+               first page in the stream; we handle that case later
+               outside the bisection) */
+            if(bisect<=begin+1){
+              /* No bisection left to perform.  We've either found the
+                 best candidate already or failed. Exit loop. */
+              end=begin;
+            }else{
+              if(end==vf->offset){
+                /* bisection read to the end; use the known page
+                   boundary (result) to update bisection, back up a
+                   little bit, and try again */
+                end=result;
+                bisect-=CHUNKSIZE;
+                if(bisect<=begin)bisect=begin+1;
+                result=_seek_helper(vf,bisect);
+                if(result) goto seek_error;
+              }else{
+                /* Normal bisection */
+                end=bisect;
+                endtime=granulepos;
+                break;
+              }
+            }
+          }
+        }
       }
     }
 
-    /* found our page. seek to it, update pcm offset. Easier case than
-       raw_seek, don't keep packets preceeding granulepos. */
-    {
+    /* Out of bisection: did it 'fail?' */
+    if(best == -1){
+
+      /* Check the 'looking for data in first page' special case;
+         bisection would 'fail' because our search target was before the
+         first PCM granule position fencepost. */
+
+      if(got_page &&
+         begin == vf->dataoffsets[link] &&
+         ogg_page_serialno(&og)==vf->serialnos[link]){
+
+        /* Yes, this is the beginning-of-stream case. We already have
+           our page, right at the beginning of PCM data.  Set state
+           and return. */
+
+        vf->pcm_offset=total;
+
+        if(link!=vf->current_link){
+          /* Different link; dump entire decode machine */
+          _decode_clear(vf);
+
+          vf->current_link=link;
+          vf->current_serialno=vf->serialnos[link];
+          vf->ready_state=STREAMSET;
+
+        }else{
+          vorbis_synthesis_restart(&vf->vd);
+        }
+
+        ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
+        ogg_stream_pagein(&vf->os,&og);
+
+      }else
+        goto seek_error;
+
+    }else{
+
+      /* Bisection found our page. seek to it, update pcm offset. Easier case than
+         raw_seek, don't keep packets preceding granulepos. */
+
       ogg_page og;
       ogg_packet op;
-      /* clear out decoding machine state */
-      _decode_clear(vf);  
+
       /* seek */
-      _seek_helper(vf,best);
-      
-      if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* shouldn't happen */
-      vf->current_serialno=ogg_page_serialno(&og);
-      vf->current_link=link;
-      
+      result=_seek_helper(vf,best);
+      vf->pcm_offset=-1;
+      if(result) goto seek_error;
+      result=_get_next_page(vf,&og,-1);
+      if(result<0) goto seek_error;
+
+      if(link!=vf->current_link){
+        /* Different link; dump entire decode machine */
+        _decode_clear(vf);
+
+        vf->current_link=link;
+        vf->current_serialno=vf->serialnos[link];
+        vf->ready_state=STREAMSET;
+
+      }else{
+        vorbis_synthesis_restart(&vf->vd);
+      }
+
       ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
-      vf->ready_state=STREAMSET;
       ogg_stream_pagein(&vf->os,&og);
 
       /* pull out all but last packet; the one with granulepos */
       while(1){
-	result=ogg_stream_packetpeek(&vf->os,&op);
-	if(result==0){
-	  /* !!! the packet finishing this page originated on a
-             preceeding page. Keep fetching previous pages until we
-             get one with a granulepos or without the 'continued' flag
-             set.  Then just use raw_seek for simplicity. */
-
-	  _decode_clear(vf);  
-	  _seek_helper(vf,best);
-
-	  while(1){
-	    result=_get_prev_page(vf,&og);
-	    if(result<0) goto seek_error;
-	    if(ogg_page_granulepos(&og)>-1 ||
-	       !ogg_page_continued(&og)){
-	      return ov_raw_seek(vf,result);
-	    }
-	    vf->offset=result;
-	  }
-	}
-	if(result<0){
-      result = OV_EBADPACKET; 
-      goto seek_error;
-    }
-	if(op.granulepos!=-1){
-	  vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
-	  if(vf->pcm_offset<0)vf->pcm_offset=0;
-	  vf->pcm_offset+=total;
-	  break;
-	}else
-	  result=ogg_stream_packetout(&vf->os,NULL);
+        result=ogg_stream_packetpeek(&vf->os,&op);
+        if(result==0){
+          /* No packet returned; we exited the bisection with 'best'
+             pointing to a page with a granule position, so the packet
+             finishing this page ('best') originated on a preceding
+             page. Keep fetching previous pages until we get one with
+             a granulepos or without the 'continued' flag set.  Then
+             just use raw_seek for simplicity. */
+          /* Do not rewind past the beginning of link data; if we do,
+             it's either a bug or a broken stream */
+          result=best;
+          while(result>vf->dataoffsets[link]){
+            result=_get_prev_page(vf,result,&og);
+            if(result<0) goto seek_error;
+            if(ogg_page_serialno(&og)==vf->current_serialno &&
+               (ogg_page_granulepos(&og)>-1 ||
+                !ogg_page_continued(&og))){
+              return ov_raw_seek(vf,result);
+            }
+          }
+        }
+        if(result<0){
+          result = OV_EBADPACKET;
+          goto seek_error;
+        }
+        if(op.granulepos!=-1){
+          vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
+          if(vf->pcm_offset<0)vf->pcm_offset=0;
+          vf->pcm_offset+=total;
+          break;
+        }else
+          result=ogg_stream_packetout(&vf->os,NULL);
       }
     }
   }
-  
+
   /* verify result */
   if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
     result=OV_EFAULT;
     goto seek_error;
   }
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
   return(0);
-  
+
  seek_error:
   /* dump machine so we're in a known state */
   vf->pcm_offset=-1;
@@ -1182,7 +1672,7 @@
   return (int)result;
 }
 
-/* seek to a sample offset relative to the decompressed pcm stream 
+/* seek to a sample offset relative to the decompressed pcm stream
    returns zero on success, nonzero on failure */
 
 int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){
@@ -1189,7 +1679,7 @@
   int thisblock,lastblock=0;
   int ret=ov_pcm_seek_page(vf,pos);
   if(ret<0)return(ret);
-  _make_decode_ready(vf);
+  if((ret=_make_decode_ready(vf)))return ret;
 
   /* discard leading packets we don't need for the lapping of the
      position we want; don't decode them */
@@ -1201,53 +1691,58 @@
     int ret=ogg_stream_packetpeek(&vf->os,&op);
     if(ret>0){
       thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
-      if(thisblock<0)thisblock=0; /* non audio packet */
+      if(thisblock<0){
+        ogg_stream_packetout(&vf->os,NULL);
+        continue; /* non audio packet */
+      }
       if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
-      
+
       if(vf->pcm_offset+((thisblock+
-			  vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
-      
+                          vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
+
       /* remove the packet from packet queue and track its granulepos */
       ogg_stream_packetout(&vf->os,NULL);
       vorbis_synthesis_trackonly(&vf->vb,&op);  /* set up a vb with
                                                    only tracking, no
                                                    pcm_decode */
-      vorbis_synthesis_blockin(&vf->vd,&vf->vb); 
-      
+      vorbis_synthesis_blockin(&vf->vd,&vf->vb);
+
       /* end of logical stream case is hard, especially with exact
-	 length positioning. */
-      
+         length positioning. */
+
       if(op.granulepos>-1){
-	int i;
-	/* always believe the stream markers */
-	vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
-	if(vf->pcm_offset<0)vf->pcm_offset=0;
-	for(i=0;i<vf->current_link;i++)
-	  vf->pcm_offset+=vf->pcmlengths[i*2+1];
+        int i;
+        /* always believe the stream markers */
+        vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
+        if(vf->pcm_offset<0)vf->pcm_offset=0;
+        for(i=0;i<vf->current_link;i++)
+          vf->pcm_offset+=vf->pcmlengths[i*2+1];
       }
-	
+
       lastblock=thisblock;
-      
+
     }else{
       if(ret<0 && ret!=OV_HOLE)break;
-      
+
       /* suck in a new page */
       if(_get_next_page(vf,&og,-1)<0)break;
-      if(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf);
-      
+      if(ogg_page_bos(&og))_decode_clear(vf);
+
       if(vf->ready_state<STREAMSET){
-	int link;
-	
-	vf->current_serialno=ogg_page_serialno(&og);
-	for(link=0;link<vf->links;link++)
-	  if(vf->serialnos[link]==vf->current_serialno)break;
-	if(link==vf->links)return(OV_EBADLINK);
-	vf->current_link=link;
-	
-	ogg_stream_reset_serialno(&vf->os,vf->current_serialno); 
-	vf->ready_state=STREAMSET;      
-	_make_decode_ready(vf);
-	lastblock=0;
+        long serialno=ogg_page_serialno(&og);
+        int link;
+
+        for(link=0;link<vf->links;link++)
+          if(vf->serialnos[link]==serialno)break;
+        if(link==vf->links) continue;
+        vf->current_link=link;
+
+        vf->ready_state=STREAMSET;
+        vf->current_serialno=ogg_page_serialno(&og);
+        ogg_stream_reset_serialno(&vf->os,serialno);
+        ret=_make_decode_ready(vf);
+        if(ret)return ret;
+        lastblock=0;
       }
 
       ogg_stream_pagein(&vf->os,&og);
@@ -1254,44 +1749,53 @@
     }
   }
 
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
   /* discard samples until we reach the desired position. Crossing a
      logical bitstream boundary with abandon is OK. */
-  while(vf->pcm_offset<pos){
-    float **pcm;
-    ogg_int64_t target=pos-vf->pcm_offset;
-    long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
+  {
+    /* note that halfrate could be set differently in each link, but
+       vorbisfile encoforces all links are set or unset */
+    int hs=vorbis_synthesis_halfrate_p(vf->vi);
+    while(vf->pcm_offset<((pos>>hs)<<hs)){
+      ogg_int64_t target=(pos-vf->pcm_offset)>>hs;
+      long samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
 
-    if(samples>target)samples=target;
-    vorbis_synthesis_read(&vf->vd,samples);
-    vf->pcm_offset+=samples;
-    
-    if(samples<target)
-      if(_fetch_and_process_packet(vf,NULL,1)<=0)
-	vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
+      if(samples>target)samples=target;
+      vorbis_synthesis_read(&vf->vd,samples);
+      vf->pcm_offset+=samples<<hs;
+
+      if(samples<target)
+        if(_fetch_and_process_packet(vf,NULL,1,1)<=0)
+          vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
+    }
   }
   return 0;
 }
 
-/* seek to a playback time relative to the decompressed pcm stream 
+/* seek to a playback time relative to the decompressed pcm stream
    returns zero on success, nonzero on failure */
 int ov_time_seek(OggVorbis_File *vf,double seconds){
   /* translate time to PCM position and call ov_pcm_seek */
 
   int link=-1;
-  ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
-  double time_total=ov_time_total(vf,-1);
+  ogg_int64_t pcm_total=0;
+  double time_total=0.;
 
   if(vf->ready_state<OPENED)return(OV_EINVAL);
   if(!vf->seekable)return(OV_ENOSEEK);
-  if(seconds<0 || seconds>time_total)return(OV_EINVAL);
-  
+  if(seconds<0)return(OV_EINVAL);
+
   /* which bitstream section does this time offset occur in? */
-  for(link=vf->links-1;link>=0;link--){
-    pcm_total-=vf->pcmlengths[link*2+1];
-    time_total-=ov_time_total(vf,link);
-    if(seconds>=time_total)break;
+  for(link=0;link<vf->links;link++){
+    double addsec = ov_time_total(vf,link);
+    if(seconds<time_total+addsec)break;
+    time_total+=addsec;
+    pcm_total+=vf->pcmlengths[link*2+1];
   }
 
+  if(link==vf->links)return(OV_EINVAL);
+
   /* enough information to convert time offset to pcm offset */
   {
     ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
@@ -1299,26 +1803,29 @@
   }
 }
 
-/* page-granularity version of ov_time_seek 
+/* page-granularity version of ov_time_seek
    returns zero on success, nonzero on failure */
 int ov_time_seek_page(OggVorbis_File *vf,double seconds){
   /* translate time to PCM position and call ov_pcm_seek */
 
   int link=-1;
-  ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
-  double time_total=ov_time_total(vf,-1);
+  ogg_int64_t pcm_total=0;
+  double time_total=0.;
 
   if(vf->ready_state<OPENED)return(OV_EINVAL);
   if(!vf->seekable)return(OV_ENOSEEK);
-  if(seconds<0 || seconds>time_total)return(OV_EINVAL);
-  
+  if(seconds<0)return(OV_EINVAL);
+
   /* which bitstream section does this time offset occur in? */
-  for(link=vf->links-1;link>=0;link--){
-    pcm_total-=vf->pcmlengths[link*2+1];
-    time_total-=ov_time_total(vf,link);
-    if(seconds>=time_total)break;
+  for(link=0;link<vf->links;link++){
+    double addsec = ov_time_total(vf,link);
+    if(seconds<time_total+addsec)break;
+    time_total+=addsec;
+    pcm_total+=vf->pcmlengths[link*2+1];
   }
 
+  if(link==vf->links)return(OV_EINVAL);
+
   /* enough information to convert time offset to pcm offset */
   {
     ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
@@ -1341,17 +1848,15 @@
 
 /* return time offset (seconds) of next PCM sample to be read */
 double ov_time_tell(OggVorbis_File *vf){
-  /* translate time to PCM position and call ov_pcm_seek */
-
-  int link=-1;
+  int link=0;
   ogg_int64_t pcm_total=0;
   double time_total=0.f;
-  
+
   if(vf->ready_state<OPENED)return(OV_EINVAL);
   if(vf->seekable){
     pcm_total=ov_pcm_total(vf,-1);
     time_total=ov_time_total(vf,-1);
-  
+
     /* which bitstream section does this time offset occur in? */
     for(link=vf->links-1;link>=0;link--){
       pcm_total-=vf->pcmlengths[link*2+1];
@@ -1366,7 +1871,7 @@
 /*  link:   -1) return the vorbis_info struct for the bitstream section
                 currently being decoded
            0-n) to request information for a specific bitstream section
-    
+
     In the case of a non-seekable bitstream, any call returns the
     current bitstream.  NULL in the case that the machine is not
     initialized */
@@ -1375,14 +1880,14 @@
   if(vf->seekable){
     if(link<0)
       if(vf->ready_state>=STREAMSET)
-	return vf->vi+vf->current_link;
+        return vf->vi+vf->current_link;
       else
       return vf->vi;
     else
       if(link>=vf->links)
-	return NULL;
+        return NULL;
       else
-	return vf->vi+link;
+        return vf->vi+link;
   }else{
     return vf->vi;
   }
@@ -1393,14 +1898,14 @@
   if(vf->seekable){
     if(link<0)
       if(vf->ready_state>=STREAMSET)
-	return vf->vc+vf->current_link;
+        return vf->vc+vf->current_link;
       else
-	return vf->vc;
+        return vf->vc;
     else
       if(link>=vf->links)
-	return NULL;
+        return NULL;
       else
-	return vf->vc+link;
+        return vf->vc+link;
   }else{
     return vf->vc;
   }
@@ -1428,26 +1933,33 @@
    index within the physical bitstream.  Note that the accessor
    functions above are aware of this dichotomy).
 
+   ov_read_filter is exactly the same as ov_read except that it processes
+   the decoded audio data through a filter before packing it into the
+   requested format. This gives greater accuracy than applying a filter
+   after the audio has been converted into integral PCM.
+
    input values: buffer) a buffer to hold packed PCM data for return
-		 length) the byte length requested to be placed into buffer
-		 bigendianp) should the data be packed LSB first (0) or
-		             MSB first (1)
-		 word) word size for output.  currently 1 (byte) or 
-		       2 (16 bit short)
+                 length) the byte length requested to be placed into buffer
+                 bigendianp) should the data be packed LSB first (0) or
+                             MSB first (1)
+                 word) word size for output.  currently 1 (byte) or
+                       2 (16 bit short)
 
    return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
                    0) EOF
-		   n) number of bytes of PCM actually returned.  The
-		   below works on a packet-by-packet basis, so the
-		   return length is not related to the 'length' passed
-		   in, just guaranteed to fit.
+                   n) number of bytes of PCM actually returned.  The
+                   below works on a packet-by-packet basis, so the
+                   return length is not related to the 'length' passed
+                   in, just guaranteed to fit.
 
-	    *section) set to the logical bitstream number */
+            *section) set to the logical bitstream number */
 
-long ov_read(OggVorbis_File *vf,char *buffer,int length,
-		    int bigendianp,int word,int sgned,int *bitstream){
+long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
+                    int bigendianp,int word,int sgned,int *bitstream,
+                    void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param){
   int i,j;
   int host_endian = host_is_big_endian();
+  int hs;
 
   float **pcm;
   long samples;
@@ -1455,7 +1967,7 @@
   if(vf->ready_state<OPENED)return(OV_EINVAL);
 
   while(1){
-    if(vf->ready_state>=STREAMSET){
+    if(vf->ready_state==INITSET){
       samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
       if(samples)break;
     }
@@ -1462,17 +1974,19 @@
 
     /* suck in another packet */
     {
-      int ret=_fetch_and_process_packet(vf,NULL,1);
-      if(ret==OV_EOF)return(0);
-      if(ret<=0)return(ret);
+      int ret=_fetch_and_process_packet(vf,NULL,1,1);
+      if(ret==OV_EOF)
+        return(0);
+      if(ret<=0)
+        return(ret);
     }
 
   }
 
   if(samples>0){
-  
+
     /* yay! proceed to pack data into the byte buffer */
-    
+
     long channels=ov_info(vf,-1)->channels;
     long bytespersample=word * channels;
     vorbis_fpu_control fpu;
@@ -1480,92 +1994,97 @@
 
     if(samples <= 0)
       return OV_EINVAL;
-    
+
+    /* Here. */
+    if(filter)
+      filter(pcm,channels,samples,filter_param);
+
     /* a tight loop to pack each size */
     {
       int val;
       if(word==1){
-	int off=(sgned?0:128);
-	vorbis_fpu_setround(&fpu);
-	for(j=0;j<samples;j++)
-	  for(i=0;i<channels;i++){
-	    val=vorbis_ftoi(pcm[i][j]*128.f);
-	    if(val>127)val=127;
-	    else if(val<-128)val=-128;
-	    *buffer++=val+off;
-	  }
-	vorbis_fpu_restore(fpu);
+        int off=(sgned?0:128);
+        vorbis_fpu_setround(&fpu);
+        for(j=0;j<samples;j++)
+          for(i=0;i<channels;i++){
+            val=vorbis_ftoi(pcm[i][j]*128.f);
+            if(val>127)val=127;
+            else if(val<-128)val=-128;
+            *buffer++=val+off;
+          }
+        vorbis_fpu_restore(fpu);
       }else{
-	int off=(sgned?0:32768);
-	
-	if(host_endian==bigendianp){
-	  if(sgned){
-	    
-	    vorbis_fpu_setround(&fpu);
-	    for(i=0;i<channels;i++) { /* It's faster in this order */
-	      float *src=pcm[i];
-	      short *dest=((short *)buffer)+i;
-	      for(j=0;j<samples;j++) {
-		val=vorbis_ftoi(src[j]*32768.f);
-		if(val>32767)val=32767;
-		else if(val<-32768)val=-32768;
-		*dest=val;
-		dest+=channels;
-	      }
-	    }
-	    vorbis_fpu_restore(fpu);
-	    
-	  }else{
-	    
-	    vorbis_fpu_setround(&fpu);
-	    for(i=0;i<channels;i++) {
-	      float *src=pcm[i];
-	      short *dest=((short *)buffer)+i;
-	      for(j=0;j<samples;j++) {
-		val=vorbis_ftoi(src[j]*32768.f);
-		if(val>32767)val=32767;
-		else if(val<-32768)val=-32768;
-		*dest=val+off;
-		dest+=channels;
-	      }
-	    }
-	    vorbis_fpu_restore(fpu);
-	    
-	  }
-	}else if(bigendianp){
-	  
-	  vorbis_fpu_setround(&fpu);
-	  for(j=0;j<samples;j++)
-	    for(i=0;i<channels;i++){
-	      val=vorbis_ftoi(pcm[i][j]*32768.f);
-	      if(val>32767)val=32767;
-	      else if(val<-32768)val=-32768;
-	      val+=off;
-	      *buffer++=(val>>8);
-	      *buffer++=(val&0xff);
-	    }
-	  vorbis_fpu_restore(fpu);
-	  
-	}else{
-	  int val;
-	  vorbis_fpu_setround(&fpu);
-	  for(j=0;j<samples;j++)
-	    for(i=0;i<channels;i++){
-	      val=vorbis_ftoi(pcm[i][j]*32768.f);
-	      if(val>32767)val=32767;
-	      else if(val<-32768)val=-32768;
-	      val+=off;
-	      *buffer++=(val&0xff);
-	      *buffer++=(val>>8);
-	  	}
-	  vorbis_fpu_restore(fpu);  
-	  
-	}
+        int off=(sgned?0:32768);
+
+        if(host_endian==bigendianp){
+          if(sgned){
+
+            vorbis_fpu_setround(&fpu);
+            for(i=0;i<channels;i++) { /* It's faster in this order */
+              float *src=pcm[i];
+              short *dest=((short *)buffer)+i;
+              for(j=0;j<samples;j++) {
+                val=vorbis_ftoi(src[j]*32768.f);
+                if(val>32767)val=32767;
+                else if(val<-32768)val=-32768;
+                *dest=val;
+                dest+=channels;
+              }
+            }
+            vorbis_fpu_restore(fpu);
+
+          }else{
+
+            vorbis_fpu_setround(&fpu);
+            for(i=0;i<channels;i++) {
+              float *src=pcm[i];
+              short *dest=((short *)buffer)+i;
+              for(j=0;j<samples;j++) {
+                val=vorbis_ftoi(src[j]*32768.f);
+                if(val>32767)val=32767;
+                else if(val<-32768)val=-32768;
+                *dest=val+off;
+                dest+=channels;
+              }
+            }
+            vorbis_fpu_restore(fpu);
+
+          }
+        }else if(bigendianp){
+
+          vorbis_fpu_setround(&fpu);
+          for(j=0;j<samples;j++)
+            for(i=0;i<channels;i++){
+              val=vorbis_ftoi(pcm[i][j]*32768.f);
+              if(val>32767)val=32767;
+              else if(val<-32768)val=-32768;
+              val+=off;
+              *buffer++=(val>>8);
+              *buffer++=(val&0xff);
+            }
+          vorbis_fpu_restore(fpu);
+
+        }else{
+          int val;
+          vorbis_fpu_setround(&fpu);
+          for(j=0;j<samples;j++)
+            for(i=0;i<channels;i++){
+              val=vorbis_ftoi(pcm[i][j]*32768.f);
+              if(val>32767)val=32767;
+              else if(val<-32768)val=-32768;
+              val+=off;
+              *buffer++=(val&0xff);
+              *buffer++=(val>>8);
+                  }
+          vorbis_fpu_restore(fpu);
+
+        }
       }
     }
-    
+
     vorbis_synthesis_read(&vf->vd,samples);
-    vf->pcm_offset+=samples;
+    hs=vorbis_synthesis_halfrate_p(vf->vi);
+    vf->pcm_offset+=(samples<<hs);
     if(bitstream)*bitstream=vf->current_link;
     return(samples*bytespersample);
   }else{
@@ -1573,36 +2092,42 @@
   }
 }
 
+long ov_read(OggVorbis_File *vf,char *buffer,int length,
+             int bigendianp,int word,int sgned,int *bitstream){
+  return ov_read_filter(vf, buffer, length, bigendianp, word, sgned, bitstream, NULL, NULL);
+}
+
 /* input values: pcm_channels) a float vector per channel of output
-		 length) the sample length being read by the app
+                 length) the sample length being read by the app
 
    return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
                    0) EOF
-		   n) number of samples of PCM actually returned.  The
-		   below works on a packet-by-packet basis, so the
-		   return length is not related to the 'length' passed
-		   in, just guaranteed to fit.
+                   n) number of samples of PCM actually returned.  The
+                   below works on a packet-by-packet basis, so the
+                   return length is not related to the 'length' passed
+                   in, just guaranteed to fit.
 
-	    *section) set to the logical bitstream number */
+            *section) set to the logical bitstream number */
 
 
 
 long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length,
-		   int *bitstream){
+                   int *bitstream){
 
   if(vf->ready_state<OPENED)return(OV_EINVAL);
 
   while(1){
-    if(vf->ready_state>=STREAMSET){
+    if(vf->ready_state==INITSET){
       float **pcm;
       long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
       if(samples){
-	if(pcm_channels)*pcm_channels=pcm;
-	if(samples>length)samples=length;
-	vorbis_synthesis_read(&vf->vd,samples);
-	vf->pcm_offset+=samples;
-	if(bitstream)*bitstream=vf->current_link;
-	return samples;
+        int hs=vorbis_synthesis_halfrate_p(vf->vi);
+        if(pcm_channels)*pcm_channels=pcm;
+        if(samples>length)samples=length;
+        vorbis_synthesis_read(&vf->vd,samples);
+        vf->pcm_offset+=samples<<hs;
+        if(bitstream)*bitstream=vf->current_link;
+        return samples;
 
       }
     }
@@ -1609,7 +2134,7 @@
 
     /* suck in another packet */
     {
-      int ret=_fetch_and_process_packet(vf,NULL,1);
+      int ret=_fetch_and_process_packet(vf,NULL,1,1);
       if(ret==OV_EOF)return(0);
       if(ret<=0)return(ret);
     }
@@ -1617,3 +2142,298 @@
   }
 }
 
+extern const float *vorbis_window(vorbis_dsp_state *v,int W);
+
+static void _ov_splice(float **pcm,float **lappcm,
+                       int n1, int n2,
+                       int ch1, int ch2,
+                       const float *w1, const float *w2){
+  int i,j;
+  const float *w=w1;
+  int n=n1;
+
+  if(n1>n2){
+    n=n2;
+    w=w2;
+  }
+
+  /* splice */
+  for(j=0;j<ch1 && j<ch2;j++){
+    float *s=lappcm[j];
+    float *d=pcm[j];
+
+    for(i=0;i<n;i++){
+      float wd=w[i]*w[i];
+      float ws=1.-wd;
+      d[i]=d[i]*wd + s[i]*ws;
+    }
+  }
+  /* window from zero */
+  for(;j<ch2;j++){
+    float *d=pcm[j];
+    for(i=0;i<n;i++){
+      float wd=w[i]*w[i];
+      d[i]=d[i]*wd;
+    }
+  }
+
+}
+
+/* make sure vf is INITSET */
+static int _ov_initset(OggVorbis_File *vf){
+  while(1){
+    if(vf->ready_state==INITSET)break;
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,0);
+      if(ret<0 && ret!=OV_HOLE)return(ret);
+    }
+  }
+  return 0;
+}
+
+/* make sure vf is INITSET and that we have a primed buffer; if
+   we're crosslapping at a stream section boundary, this also makes
+   sure we're sanity checking against the right stream information */
+static int _ov_initprime(OggVorbis_File *vf){
+  vorbis_dsp_state *vd=&vf->vd;
+  while(1){
+    if(vf->ready_state==INITSET)
+      if(vorbis_synthesis_pcmout(vd,NULL))break;
+
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,0);
+      if(ret<0 && ret!=OV_HOLE)return(ret);
+    }
+  }
+  return 0;
+}
+
+/* grab enough data for lapping from vf; this may be in the form of
+   unreturned, already-decoded pcm, remaining PCM we will need to
+   decode, or synthetic postextrapolation from last packets. */
+static void _ov_getlap(OggVorbis_File *vf,vorbis_info *vi,vorbis_dsp_state *vd,
+                       float **lappcm,int lapsize){
+  int lapcount=0,i;
+  float **pcm;
+
+  /* try first to decode the lapping data */
+  while(lapcount<lapsize){
+    int samples=vorbis_synthesis_pcmout(vd,&pcm);
+    if(samples){
+      if(samples>lapsize-lapcount)samples=lapsize-lapcount;
+      for(i=0;i<vi->channels;i++)
+        memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
+      lapcount+=samples;
+      vorbis_synthesis_read(vd,samples);
+    }else{
+    /* suck in another packet */
+      int ret=_fetch_and_process_packet(vf,NULL,1,0); /* do *not* span */
+      if(ret==OV_EOF)break;
+    }
+  }
+  if(lapcount<lapsize){
+    /* failed to get lapping data from normal decode; pry it from the
+       postextrapolation buffering, or the second half of the MDCT
+       from the last packet */
+    int samples=vorbis_synthesis_lapout(&vf->vd,&pcm);
+    if(samples==0){
+      for(i=0;i<vi->channels;i++)
+        memset(lappcm[i]+lapcount,0,sizeof(**pcm)*lapsize-lapcount);
+      lapcount=lapsize;
+    }else{
+      if(samples>lapsize-lapcount)samples=lapsize-lapcount;
+      for(i=0;i<vi->channels;i++)
+        memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
+      lapcount+=samples;
+    }
+  }
+}
+
+/* this sets up crosslapping of a sample by using trailing data from
+   sample 1 and lapping it into the windowing buffer of sample 2 */
+int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){
+  vorbis_info *vi1,*vi2;
+  float **lappcm;
+  float **pcm;
+  const float *w1,*w2;
+  int n1,n2,i,ret,hs1,hs2;
+
+  if(vf1==vf2)return(0); /* degenerate case */
+  if(vf1->ready_state<OPENED)return(OV_EINVAL);
+  if(vf2->ready_state<OPENED)return(OV_EINVAL);
+
+  /* the relevant overlap buffers must be pre-checked and pre-primed
+     before looking at settings in the event that priming would cross
+     a bitstream boundary.  So, do it now */
+
+  ret=_ov_initset(vf1);
+  if(ret)return(ret);
+  ret=_ov_initprime(vf2);
+  if(ret)return(ret);
+
+  vi1=ov_info(vf1,-1);
+  vi2=ov_info(vf2,-1);
+  hs1=ov_halfrate_p(vf1);
+  hs2=ov_halfrate_p(vf2);
+
+  lappcm=malloc(sizeof(*lappcm)*vi1->channels);
+  n1=vorbis_info_blocksize(vi1,0)>>(1+hs1);
+  n2=vorbis_info_blocksize(vi2,0)>>(1+hs2);
+  w1=vorbis_window(&vf1->vd,0);
+  w2=vorbis_window(&vf2->vd,0);
+
+  for(i=0;i<vi1->channels;i++)
+    lappcm[i]=malloc(sizeof(**lappcm)*n1);
+
+  _ov_getlap(vf1,vi1,&vf1->vd,lappcm,n1);
+
+  /* have a lapping buffer from vf1; now to splice it into the lapping
+     buffer of vf2 */
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf2->vd,&pcm);
+
+#if 0
+  _analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0);
+  _analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0);
+#endif
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2);
+
+  for(i=0;i<vi1->channels;i++)
+    free(lappcm[i]);
+  free(lappcm);
+
+  /* done */
+  return(0);
+}
+
+static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos,
+                           int (*localseek)(OggVorbis_File *,ogg_int64_t)){
+  vorbis_info *vi;
+  float **lappcm;
+  float **pcm;
+  const float *w1,*w2;
+  int n1,n2,ch1,ch2,hs;
+  int i,ret;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  ret=_ov_initset(vf);
+  if(ret)return(ret);
+  vi=ov_info(vf,-1);
+  hs=ov_halfrate_p(vf);
+
+  ch1=vi->channels;
+  n1=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w1=vorbis_window(&vf->vd,0);  /* window arrays from libvorbis are
+                                   persistent; even if the decode state
+                                   from this link gets dumped, this
+                                   window array continues to exist */
+
+  lappcm=malloc(sizeof(*lappcm)*ch1);
+  for(i=0;i<ch1;i++)
+    lappcm[i]=malloc(sizeof(**lappcm)*n1);
+  _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
+
+  /* have lapping data; seek and prime the buffer */
+  ret=localseek(vf,pos);
+  if(ret)goto done;
+  ret=_ov_initprime(vf);
+  if(ret)goto done;
+
+ /* Guard against cross-link changes; they're perfectly legal */
+  vi=ov_info(vf,-1);
+  ch2=vi->channels;
+  n2=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w2=vorbis_window(&vf->vd,0);
+
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf->vd,&pcm);
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
+
+  /* done */
+  ret = 0;
+done:
+  for(i=0;i<ch1;i++)
+    free(lappcm[i]);
+  free(lappcm);
+  return(ret);
+}
+
+int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_raw_seek);
+}
+
+int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_pcm_seek);
+}
+
+int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_pcm_seek_page);
+}
+
+static int _ov_d_seek_lap(OggVorbis_File *vf,double pos,
+                           int (*localseek)(OggVorbis_File *,double)){
+  vorbis_info *vi;
+  float **lappcm;
+  float **pcm;
+  const float *w1,*w2;
+  int n1,n2,ch1,ch2,hs;
+  int i,ret;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  ret=_ov_initset(vf);
+  if(ret)return(ret);
+  vi=ov_info(vf,-1);
+  hs=ov_halfrate_p(vf);
+
+  ch1=vi->channels;
+  n1=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w1=vorbis_window(&vf->vd,0);  /* window arrays from libvorbis are
+                                   persistent; even if the decode state
+                                   from this link gets dumped, this
+                                   window array continues to exist */
+
+  lappcm=malloc(sizeof(*lappcm)*ch1);
+  for(i=0;i<ch1;i++)
+    lappcm[i]=malloc(sizeof(**lappcm)*n1);
+  _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
+
+  /* have lapping data; seek and prime the buffer */
+  ret=localseek(vf,pos);
+  if(ret)goto done;
+  ret=_ov_initprime(vf);
+  if(ret)goto done;
+
+ /* Guard against cross-link changes; they're perfectly legal */
+  vi=ov_info(vf,-1);
+  ch2=vi->channels;
+  n2=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w2=vorbis_window(&vf->vd,0);
+
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf->vd,&pcm);
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
+  ret = 0;
+
+  /* done */
+done:
+  for(i=0;i<ch1;i++)
+    free(lappcm[i]);
+  free(lappcm);
+  return(ret);
+}
+
+int ov_time_seek_lap(OggVorbis_File *vf,double pos){
+  return _ov_d_seek_lap(vf,pos,ov_time_seek);
+}
+
+int ov_time_seek_page_lap(OggVorbis_File *vf,double pos){
+  return _ov_d_seek_lap(vf,pos,ov_time_seek_page);
+}
--- a/sys/src/cmd/audio/libvorbis/window.c
+++ b/sys/src/cmd/audio/libvorbis/window.c
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: window functions
- last mod: $Id: window.c,v 1.17 2002/03/23 03:17:34 xiphmont Exp $
+ last mod: $Id: window.c 19028 2013-12-02 23:23:39Z tterribe $
 
  ********************************************************************/
 
@@ -19,60 +19,2117 @@
 #include <math.h>
 #include "os.h"
 #include "misc.h"
+#include "window.h"
 
-float *_vorbis_window(int type, int left){
-  float *ret=_ogg_calloc(left,sizeof(*ret));
-  int i;
+static const float vwin64[32] = {
+  0.0009460463F, 0.0085006468F, 0.0235352254F, 0.0458950567F,
+  0.0753351908F, 0.1115073077F, 0.1539457973F, 0.2020557475F,
+  0.2551056759F, 0.3122276645F, 0.3724270287F, 0.4346027792F,
+  0.4975789974F, 0.5601459521F, 0.6211085051F, 0.6793382689F,
+  0.7338252629F, 0.7837245849F, 0.8283939355F, 0.8674186656F,
+  0.9006222429F, 0.9280614787F, 0.9500073081F, 0.9669131782F,
+  0.9793740220F, 0.9880792941F, 0.9937636139F, 0.9971582668F,
+  0.9989462667F, 0.9997230082F, 0.9999638688F, 0.9999995525F,
+};
 
-  switch(type){
-  case 0:
-    /* The 'vorbis window' (window 0) is sin(sin(x)*sin(x)*2pi) */
-    {
-    
-      for(i=0;i<left;i++){
-	float x=(i+.5f)/left*M_PI/2.;
-	x=sin(x);
-	x*=x;
-	x*=M_PI/2.f;
-	x=sin(x);
-	ret[i]=x;
-      }
-    }
-    break;
-  default:
-    _ogg_free(ret);
-    return(NULL);
-  }
-  return(ret);
+static const float vwin128[64] = {
+  0.0002365472F, 0.0021280687F, 0.0059065254F, 0.0115626550F,
+  0.0190823442F, 0.0284463735F, 0.0396300935F, 0.0526030430F,
+  0.0673285281F, 0.0837631763F, 0.1018564887F, 0.1215504095F,
+  0.1427789367F, 0.1654677960F, 0.1895342001F, 0.2148867160F,
+  0.2414252576F, 0.2690412240F, 0.2976177952F, 0.3270303960F,
+  0.3571473350F, 0.3878306189F, 0.4189369387F, 0.4503188188F,
+  0.4818259135F, 0.5133064334F, 0.5446086751F, 0.5755826278F,
+  0.6060816248F, 0.6359640047F, 0.6650947483F, 0.6933470543F,
+  0.7206038179F, 0.7467589810F, 0.7717187213F, 0.7954024542F,
+  0.8177436264F, 0.8386902831F, 0.8582053981F, 0.8762669622F,
+  0.8928678298F, 0.9080153310F, 0.9217306608F, 0.9340480615F,
+  0.9450138200F, 0.9546851041F, 0.9631286621F, 0.9704194171F,
+  0.9766389810F, 0.9818741197F, 0.9862151938F, 0.9897546035F,
+  0.9925852598F, 0.9947991032F, 0.9964856900F, 0.9977308602F,
+  0.9986155015F, 0.9992144193F, 0.9995953200F, 0.9998179155F,
+  0.9999331503F, 0.9999825563F, 0.9999977357F, 0.9999999720F,
+};
+
+static const float vwin256[128] = {
+  0.0000591390F, 0.0005321979F, 0.0014780301F, 0.0028960636F,
+  0.0047854363F, 0.0071449926F, 0.0099732775F, 0.0132685298F,
+  0.0170286741F, 0.0212513119F, 0.0259337111F, 0.0310727950F,
+  0.0366651302F, 0.0427069140F, 0.0491939614F, 0.0561216907F,
+  0.0634851102F, 0.0712788035F, 0.0794969160F, 0.0881331402F,
+  0.0971807028F, 0.1066323515F, 0.1164803426F, 0.1267164297F,
+  0.1373318534F, 0.1483173323F, 0.1596630553F, 0.1713586755F,
+  0.1833933062F, 0.1957555184F, 0.2084333404F, 0.2214142599F,
+  0.2346852280F, 0.2482326664F, 0.2620424757F, 0.2761000481F,
+  0.2903902813F, 0.3048975959F, 0.3196059553F, 0.3344988887F,
+  0.3495595160F, 0.3647705766F, 0.3801144597F, 0.3955732382F,
+  0.4111287047F, 0.4267624093F, 0.4424557009F, 0.4581897696F,
+  0.4739456913F, 0.4897044744F, 0.5054471075F, 0.5211546088F,
+  0.5368080763F, 0.5523887395F, 0.5678780103F, 0.5832575361F,
+  0.5985092508F, 0.6136154277F, 0.6285587300F, 0.6433222619F,
+  0.6578896175F, 0.6722449294F, 0.6863729144F, 0.7002589187F,
+  0.7138889597F, 0.7272497662F, 0.7403288154F, 0.7531143679F,
+  0.7655954985F, 0.7777621249F, 0.7896050322F, 0.8011158947F,
+  0.8122872932F, 0.8231127294F, 0.8335866365F, 0.8437043850F,
+  0.8534622861F, 0.8628575905F, 0.8718884835F, 0.8805540765F,
+  0.8888543947F, 0.8967903616F, 0.9043637797F, 0.9115773078F,
+  0.9184344360F, 0.9249394562F, 0.9310974312F, 0.9369141608F,
+  0.9423961446F, 0.9475505439F, 0.9523851406F, 0.9569082947F,
+  0.9611289005F, 0.9650563408F, 0.9687004405F, 0.9720714191F,
+  0.9751798427F, 0.9780365753F, 0.9806527301F, 0.9830396204F,
+  0.9852087111F, 0.9871715701F, 0.9889398207F, 0.9905250941F,
+  0.9919389832F, 0.9931929973F, 0.9942985174F, 0.9952667537F,
+  0.9961087037F, 0.9968351119F, 0.9974564312F, 0.9979827858F,
+  0.9984239359F, 0.9987892441F, 0.9990876435F, 0.9993276081F,
+  0.9995171241F, 0.9996636648F, 0.9997741654F, 0.9998550016F,
+  0.9999119692F, 0.9999502656F, 0.9999744742F, 0.9999885497F,
+  0.9999958064F, 0.9999989077F, 0.9999998584F, 0.9999999983F,
+};
+
+static const float vwin512[256] = {
+  0.0000147849F, 0.0001330607F, 0.0003695946F, 0.0007243509F,
+  0.0011972759F, 0.0017882983F, 0.0024973285F, 0.0033242588F,
+  0.0042689632F, 0.0053312973F, 0.0065110982F, 0.0078081841F,
+  0.0092223540F, 0.0107533880F, 0.0124010466F, 0.0141650703F,
+  0.0160451800F, 0.0180410758F, 0.0201524373F, 0.0223789233F,
+  0.0247201710F, 0.0271757958F, 0.0297453914F, 0.0324285286F,
+  0.0352247556F, 0.0381335972F, 0.0411545545F, 0.0442871045F,
+  0.0475306997F, 0.0508847676F, 0.0543487103F, 0.0579219038F,
+  0.0616036982F, 0.0653934164F, 0.0692903546F, 0.0732937809F,
+  0.0774029356F, 0.0816170305F, 0.0859352485F, 0.0903567428F,
+  0.0948806375F, 0.0995060259F, 0.1042319712F, 0.1090575056F,
+  0.1139816300F, 0.1190033137F, 0.1241214941F, 0.1293350764F,
+  0.1346429333F, 0.1400439046F, 0.1455367974F, 0.1511203852F,
+  0.1567934083F, 0.1625545735F, 0.1684025537F, 0.1743359881F,
+  0.1803534820F, 0.1864536069F, 0.1926349000F, 0.1988958650F,
+  0.2052349715F, 0.2116506555F, 0.2181413191F, 0.2247053313F,
+  0.2313410275F, 0.2380467105F, 0.2448206500F, 0.2516610835F,
+  0.2585662164F, 0.2655342226F, 0.2725632448F, 0.2796513950F,
+  0.2867967551F, 0.2939973773F, 0.3012512852F, 0.3085564739F,
+  0.3159109111F, 0.3233125375F, 0.3307592680F, 0.3382489922F,
+  0.3457795756F, 0.3533488602F, 0.3609546657F, 0.3685947904F,
+  0.3762670121F, 0.3839690896F, 0.3916987634F, 0.3994537572F,
+  0.4072317788F, 0.4150305215F, 0.4228476653F, 0.4306808783F,
+  0.4385278181F, 0.4463861329F, 0.4542534630F, 0.4621274424F,
+  0.4700057001F, 0.4778858615F, 0.4857655502F, 0.4936423891F,
+  0.5015140023F, 0.5093780165F, 0.5172320626F, 0.5250737772F,
+  0.5329008043F, 0.5407107971F, 0.5485014192F, 0.5562703465F,
+  0.5640152688F, 0.5717338914F, 0.5794239366F, 0.5870831457F,
+  0.5947092801F, 0.6023001235F, 0.6098534829F, 0.6173671907F,
+  0.6248391059F, 0.6322671161F, 0.6396491384F, 0.6469831217F,
+  0.6542670475F, 0.6614989319F, 0.6686768267F, 0.6757988210F,
+  0.6828630426F, 0.6898676592F, 0.6968108799F, 0.7036909564F,
+  0.7105061843F, 0.7172549043F, 0.7239355032F, 0.7305464154F,
+  0.7370861235F, 0.7435531598F, 0.7499461068F, 0.7562635986F,
+  0.7625043214F, 0.7686670148F, 0.7747504721F, 0.7807535410F,
+  0.7866751247F, 0.7925141825F, 0.7982697296F, 0.8039408387F,
+  0.8095266395F, 0.8150263196F, 0.8204391248F, 0.8257643590F,
+  0.8310013848F, 0.8361496236F, 0.8412085555F, 0.8461777194F,
+  0.8510567129F, 0.8558451924F, 0.8605428730F, 0.8651495278F,
+  0.8696649882F, 0.8740891432F, 0.8784219392F, 0.8826633797F,
+  0.8868135244F, 0.8908724888F, 0.8948404441F, 0.8987176157F,
+  0.9025042831F, 0.9062007791F, 0.9098074886F, 0.9133248482F,
+  0.9167533451F, 0.9200935163F, 0.9233459472F, 0.9265112712F,
+  0.9295901680F, 0.9325833632F, 0.9354916263F, 0.9383157705F,
+  0.9410566504F, 0.9437151618F, 0.9462922398F, 0.9487888576F,
+  0.9512060252F, 0.9535447882F, 0.9558062262F, 0.9579914516F,
+  0.9601016078F, 0.9621378683F, 0.9641014348F, 0.9659935361F,
+  0.9678154261F, 0.9695683830F, 0.9712537071F, 0.9728727198F,
+  0.9744267618F, 0.9759171916F, 0.9773453842F, 0.9787127293F,
+  0.9800206298F, 0.9812705006F, 0.9824637665F, 0.9836018613F,
+  0.9846862258F, 0.9857183066F, 0.9866995544F, 0.9876314227F,
+  0.9885153662F, 0.9893528393F, 0.9901452948F, 0.9908941823F,
+  0.9916009470F, 0.9922670279F, 0.9928938570F, 0.9934828574F,
+  0.9940354423F, 0.9945530133F, 0.9950369595F, 0.9954886562F,
+  0.9959094633F, 0.9963007242F, 0.9966637649F, 0.9969998925F,
+  0.9973103939F, 0.9975965351F, 0.9978595598F, 0.9981006885F,
+  0.9983211172F, 0.9985220166F, 0.9987045311F, 0.9988697776F,
+  0.9990188449F, 0.9991527924F, 0.9992726499F, 0.9993794157F,
+  0.9994740570F, 0.9995575079F, 0.9996306699F, 0.9996944099F,
+  0.9997495605F, 0.9997969190F, 0.9998372465F, 0.9998712678F,
+  0.9998996704F, 0.9999231041F, 0.9999421807F, 0.9999574732F,
+  0.9999695157F, 0.9999788026F, 0.9999857885F, 0.9999908879F,
+  0.9999944746F, 0.9999968817F, 0.9999984010F, 0.9999992833F,
+  0.9999997377F, 0.9999999317F, 0.9999999911F, 0.9999999999F,
+};
+
+static const float vwin1024[512] = {
+  0.0000036962F, 0.0000332659F, 0.0000924041F, 0.0001811086F,
+  0.0002993761F, 0.0004472021F, 0.0006245811F, 0.0008315063F,
+  0.0010679699F, 0.0013339631F, 0.0016294757F, 0.0019544965F,
+  0.0023090133F, 0.0026930125F, 0.0031064797F, 0.0035493989F,
+  0.0040217533F, 0.0045235250F, 0.0050546946F, 0.0056152418F,
+  0.0062051451F, 0.0068243817F, 0.0074729278F, 0.0081507582F,
+  0.0088578466F, 0.0095941655F, 0.0103596863F, 0.0111543789F,
+  0.0119782122F, 0.0128311538F, 0.0137131701F, 0.0146242260F,
+  0.0155642855F, 0.0165333111F, 0.0175312640F, 0.0185581042F,
+  0.0196137903F, 0.0206982797F, 0.0218115284F, 0.0229534910F,
+  0.0241241208F, 0.0253233698F, 0.0265511886F, 0.0278075263F,
+  0.0290923308F, 0.0304055484F, 0.0317471241F, 0.0331170013F,
+  0.0345151222F, 0.0359414274F, 0.0373958560F, 0.0388783456F,
+  0.0403888325F, 0.0419272511F, 0.0434935347F, 0.0450876148F,
+  0.0467094213F, 0.0483588828F, 0.0500359261F, 0.0517404765F,
+  0.0534724575F, 0.0552317913F, 0.0570183983F, 0.0588321971F,
+  0.0606731048F, 0.0625410369F, 0.0644359070F, 0.0663576272F,
+  0.0683061077F, 0.0702812571F, 0.0722829821F, 0.0743111878F,
+  0.0763657775F, 0.0784466526F, 0.0805537129F, 0.0826868561F,
+  0.0848459782F, 0.0870309736F, 0.0892417345F, 0.0914781514F,
+  0.0937401128F, 0.0960275056F, 0.0983402145F, 0.1006781223F,
+  0.1030411101F, 0.1054290568F, 0.1078418397F, 0.1102793336F,
+  0.1127414119F, 0.1152279457F, 0.1177388042F, 0.1202738544F,
+  0.1228329618F, 0.1254159892F, 0.1280227980F, 0.1306532471F,
+  0.1333071937F, 0.1359844927F, 0.1386849970F, 0.1414085575F,
+  0.1441550230F, 0.1469242403F, 0.1497160539F, 0.1525303063F,
+  0.1553668381F, 0.1582254875F, 0.1611060909F, 0.1640084822F,
+  0.1669324936F, 0.1698779549F, 0.1728446939F, 0.1758325362F,
+  0.1788413055F, 0.1818708232F, 0.1849209084F, 0.1879913785F,
+  0.1910820485F, 0.1941927312F, 0.1973232376F, 0.2004733764F,
+  0.2036429541F, 0.2068317752F, 0.2100396421F, 0.2132663552F,
+  0.2165117125F, 0.2197755102F, 0.2230575422F, 0.2263576007F,
+  0.2296754753F, 0.2330109540F, 0.2363638225F, 0.2397338646F,
+  0.2431208619F, 0.2465245941F, 0.2499448389F, 0.2533813719F,
+  0.2568339669F, 0.2603023956F, 0.2637864277F, 0.2672858312F,
+  0.2708003718F, 0.2743298135F, 0.2778739186F, 0.2814324472F,
+  0.2850051576F, 0.2885918065F, 0.2921921485F, 0.2958059366F,
+  0.2994329219F, 0.3030728538F, 0.3067254799F, 0.3103905462F,
+  0.3140677969F, 0.3177569747F, 0.3214578205F, 0.3251700736F,
+  0.3288934718F, 0.3326277513F, 0.3363726468F, 0.3401278914F,
+  0.3438932168F, 0.3476683533F, 0.3514530297F, 0.3552469734F,
+  0.3590499106F, 0.3628615659F, 0.3666816630F, 0.3705099239F,
+  0.3743460698F, 0.3781898204F, 0.3820408945F, 0.3858990095F,
+  0.3897638820F, 0.3936352274F, 0.3975127601F, 0.4013961936F,
+  0.4052852405F, 0.4091796123F, 0.4130790198F, 0.4169831732F,
+  0.4208917815F, 0.4248045534F, 0.4287211965F, 0.4326414181F,
+  0.4365649248F, 0.4404914225F, 0.4444206167F, 0.4483522125F,
+  0.4522859146F, 0.4562214270F, 0.4601584538F, 0.4640966984F,
+  0.4680358644F, 0.4719756548F, 0.4759157726F, 0.4798559209F,
+  0.4837958024F, 0.4877351199F, 0.4916735765F, 0.4956108751F,
+  0.4995467188F, 0.5034808109F, 0.5074128550F, 0.5113425550F,
+  0.5152696149F, 0.5191937395F, 0.5231146336F, 0.5270320028F,
+  0.5309455530F, 0.5348549910F, 0.5387600239F, 0.5426603597F,
+  0.5465557070F, 0.5504457754F, 0.5543302752F, 0.5582089175F,
+  0.5620814145F, 0.5659474793F, 0.5698068262F, 0.5736591704F,
+  0.5775042283F, 0.5813417176F, 0.5851713571F, 0.5889928670F,
+  0.5928059689F, 0.5966103856F, 0.6004058415F, 0.6041920626F,
+  0.6079687761F, 0.6117357113F, 0.6154925986F, 0.6192391705F,
+  0.6229751612F, 0.6267003064F, 0.6304143441F, 0.6341170137F,
+  0.6378080569F, 0.6414872173F, 0.6451542405F, 0.6488088741F,
+  0.6524508681F, 0.6560799742F, 0.6596959469F, 0.6632985424F,
+  0.6668875197F, 0.6704626398F, 0.6740236662F, 0.6775703649F,
+  0.6811025043F, 0.6846198554F, 0.6881221916F, 0.6916092892F,
+  0.6950809269F, 0.6985368861F, 0.7019769510F, 0.7054009085F,
+  0.7088085484F, 0.7121996632F, 0.7155740484F, 0.7189315023F,
+  0.7222718263F, 0.7255948245F, 0.7289003043F, 0.7321880760F,
+  0.7354579530F, 0.7387097518F, 0.7419432921F, 0.7451583966F,
+  0.7483548915F, 0.7515326059F, 0.7546913723F, 0.7578310265F,
+  0.7609514077F, 0.7640523581F, 0.7671337237F, 0.7701953535F,
+  0.7732371001F, 0.7762588195F, 0.7792603711F, 0.7822416178F,
+  0.7852024259F, 0.7881426654F, 0.7910622097F, 0.7939609356F,
+  0.7968387237F, 0.7996954579F, 0.8025310261F, 0.8053453193F,
+  0.8081382324F, 0.8109096638F, 0.8136595156F, 0.8163876936F,
+  0.8190941071F, 0.8217786690F, 0.8244412960F, 0.8270819086F,
+  0.8297004305F, 0.8322967896F, 0.8348709171F, 0.8374227481F,
+  0.8399522213F, 0.8424592789F, 0.8449438672F, 0.8474059356F,
+  0.8498454378F, 0.8522623306F, 0.8546565748F, 0.8570281348F,
+  0.8593769787F, 0.8617030779F, 0.8640064080F, 0.8662869477F,
+  0.8685446796F, 0.8707795899F, 0.8729916682F, 0.8751809079F,
+  0.8773473059F, 0.8794908626F, 0.8816115819F, 0.8837094713F,
+  0.8857845418F, 0.8878368079F, 0.8898662874F, 0.8918730019F,
+  0.8938569760F, 0.8958182380F, 0.8977568194F, 0.8996727552F,
+  0.9015660837F, 0.9034368465F, 0.9052850885F, 0.9071108577F,
+  0.9089142057F, 0.9106951869F, 0.9124538591F, 0.9141902832F,
+  0.9159045233F, 0.9175966464F, 0.9192667228F, 0.9209148257F,
+  0.9225410313F, 0.9241454187F, 0.9257280701F, 0.9272890704F,
+  0.9288285075F, 0.9303464720F, 0.9318430576F, 0.9333183603F,
+  0.9347724792F, 0.9362055158F, 0.9376175745F, 0.9390087622F,
+  0.9403791881F, 0.9417289644F, 0.9430582055F, 0.9443670283F,
+  0.9456555521F, 0.9469238986F, 0.9481721917F, 0.9494005577F,
+  0.9506091252F, 0.9517980248F, 0.9529673894F, 0.9541173540F,
+  0.9552480557F, 0.9563596334F, 0.9574522282F, 0.9585259830F,
+  0.9595810428F, 0.9606175542F, 0.9616356656F, 0.9626355274F,
+  0.9636172915F, 0.9645811114F, 0.9655271425F, 0.9664555414F,
+  0.9673664664F, 0.9682600774F, 0.9691365355F, 0.9699960034F,
+  0.9708386448F, 0.9716646250F, 0.9724741103F, 0.9732672685F,
+  0.9740442683F, 0.9748052795F, 0.9755504729F, 0.9762800205F,
+  0.9769940950F, 0.9776928703F, 0.9783765210F, 0.9790452223F,
+  0.9796991504F, 0.9803384823F, 0.9809633954F, 0.9815740679F,
+  0.9821706784F, 0.9827534063F, 0.9833224312F, 0.9838779332F,
+  0.9844200928F, 0.9849490910F, 0.9854651087F, 0.9859683274F,
+  0.9864589286F, 0.9869370940F, 0.9874030054F, 0.9878568447F,
+  0.9882987937F, 0.9887290343F, 0.9891477481F, 0.9895551169F,
+  0.9899513220F, 0.9903365446F, 0.9907109658F, 0.9910747662F,
+  0.9914281260F, 0.9917712252F, 0.9921042433F, 0.9924273593F,
+  0.9927407516F, 0.9930445982F, 0.9933390763F, 0.9936243626F,
+  0.9939006331F, 0.9941680631F, 0.9944268269F, 0.9946770982F,
+  0.9949190498F, 0.9951528537F, 0.9953786808F, 0.9955967011F,
+  0.9958070836F, 0.9960099963F, 0.9962056061F, 0.9963940787F,
+  0.9965755786F, 0.9967502693F, 0.9969183129F, 0.9970798704F,
+  0.9972351013F, 0.9973841640F, 0.9975272151F, 0.9976644103F,
+  0.9977959036F, 0.9979218476F, 0.9980423932F, 0.9981576901F,
+  0.9982678862F, 0.9983731278F, 0.9984735596F, 0.9985693247F,
+  0.9986605645F, 0.9987474186F, 0.9988300248F, 0.9989085193F,
+  0.9989830364F, 0.9990537085F, 0.9991206662F, 0.9991840382F,
+  0.9992439513F, 0.9993005303F, 0.9993538982F, 0.9994041757F,
+  0.9994514817F, 0.9994959330F, 0.9995376444F, 0.9995767286F,
+  0.9996132960F, 0.9996474550F, 0.9996793121F, 0.9997089710F,
+  0.9997365339F, 0.9997621003F, 0.9997857677F, 0.9998076311F,
+  0.9998277836F, 0.9998463156F, 0.9998633155F, 0.9998788692F,
+  0.9998930603F, 0.9999059701F, 0.9999176774F, 0.9999282586F,
+  0.9999377880F, 0.9999463370F, 0.9999539749F, 0.9999607685F,
+  0.9999667820F, 0.9999720773F, 0.9999767136F, 0.9999807479F,
+  0.9999842344F, 0.9999872249F, 0.9999897688F, 0.9999919127F,
+  0.9999937009F, 0.9999951749F, 0.9999963738F, 0.9999973342F,
+  0.9999980900F, 0.9999986724F, 0.9999991103F, 0.9999994297F,
+  0.9999996543F, 0.9999998049F, 0.9999999000F, 0.9999999552F,
+  0.9999999836F, 0.9999999957F, 0.9999999994F, 1.0000000000F,
+};
+
+static const float vwin2048[1024] = {
+  0.0000009241F, 0.0000083165F, 0.0000231014F, 0.0000452785F,
+  0.0000748476F, 0.0001118085F, 0.0001561608F, 0.0002079041F,
+  0.0002670379F, 0.0003335617F, 0.0004074748F, 0.0004887765F,
+  0.0005774661F, 0.0006735427F, 0.0007770054F, 0.0008878533F,
+  0.0010060853F, 0.0011317002F, 0.0012646969F, 0.0014050742F,
+  0.0015528307F, 0.0017079650F, 0.0018704756F, 0.0020403610F,
+  0.0022176196F, 0.0024022497F, 0.0025942495F, 0.0027936173F,
+  0.0030003511F, 0.0032144490F, 0.0034359088F, 0.0036647286F,
+  0.0039009061F, 0.0041444391F, 0.0043953253F, 0.0046535621F,
+  0.0049191472F, 0.0051920781F, 0.0054723520F, 0.0057599664F,
+  0.0060549184F, 0.0063572052F, 0.0066668239F, 0.0069837715F,
+  0.0073080449F, 0.0076396410F, 0.0079785566F, 0.0083247884F,
+  0.0086783330F, 0.0090391871F, 0.0094073470F, 0.0097828092F,
+  0.0101655700F, 0.0105556258F, 0.0109529726F, 0.0113576065F,
+  0.0117695237F, 0.0121887200F, 0.0126151913F, 0.0130489335F,
+  0.0134899422F, 0.0139382130F, 0.0143937415F, 0.0148565233F,
+  0.0153265536F, 0.0158038279F, 0.0162883413F, 0.0167800889F,
+  0.0172790660F, 0.0177852675F, 0.0182986882F, 0.0188193231F,
+  0.0193471668F, 0.0198822141F, 0.0204244594F, 0.0209738974F,
+  0.0215305225F, 0.0220943289F, 0.0226653109F, 0.0232434627F,
+  0.0238287784F, 0.0244212519F, 0.0250208772F, 0.0256276481F,
+  0.0262415582F, 0.0268626014F, 0.0274907711F, 0.0281260608F,
+  0.0287684638F, 0.0294179736F, 0.0300745833F, 0.0307382859F,
+  0.0314090747F, 0.0320869424F, 0.0327718819F, 0.0334638860F,
+  0.0341629474F, 0.0348690586F, 0.0355822122F, 0.0363024004F,
+  0.0370296157F, 0.0377638502F, 0.0385050960F, 0.0392533451F,
+  0.0400085896F, 0.0407708211F, 0.0415400315F, 0.0423162123F,
+  0.0430993552F, 0.0438894515F, 0.0446864926F, 0.0454904698F,
+  0.0463013742F, 0.0471191969F, 0.0479439288F, 0.0487755607F,
+  0.0496140836F, 0.0504594879F, 0.0513117642F, 0.0521709031F,
+  0.0530368949F, 0.0539097297F, 0.0547893979F, 0.0556758894F,
+  0.0565691941F, 0.0574693019F, 0.0583762026F, 0.0592898858F,
+  0.0602103410F, 0.0611375576F, 0.0620715250F, 0.0630122324F,
+  0.0639596688F, 0.0649138234F, 0.0658746848F, 0.0668422421F,
+  0.0678164838F, 0.0687973985F, 0.0697849746F, 0.0707792005F,
+  0.0717800645F, 0.0727875547F, 0.0738016591F, 0.0748223656F,
+  0.0758496620F, 0.0768835359F, 0.0779239751F, 0.0789709668F,
+  0.0800244985F, 0.0810845574F, 0.0821511306F, 0.0832242052F,
+  0.0843037679F, 0.0853898056F, 0.0864823050F, 0.0875812525F,
+  0.0886866347F, 0.0897984378F, 0.0909166480F, 0.0920412513F,
+  0.0931722338F, 0.0943095813F, 0.0954532795F, 0.0966033140F,
+  0.0977596702F, 0.0989223336F, 0.1000912894F, 0.1012665227F,
+  0.1024480185F, 0.1036357616F, 0.1048297369F, 0.1060299290F,
+  0.1072363224F, 0.1084489014F, 0.1096676504F, 0.1108925534F,
+  0.1121235946F, 0.1133607577F, 0.1146040267F, 0.1158533850F,
+  0.1171088163F, 0.1183703040F, 0.1196378312F, 0.1209113812F,
+  0.1221909370F, 0.1234764815F, 0.1247679974F, 0.1260654674F,
+  0.1273688740F, 0.1286781995F, 0.1299934263F, 0.1313145365F,
+  0.1326415121F, 0.1339743349F, 0.1353129866F, 0.1366574490F,
+  0.1380077035F, 0.1393637315F, 0.1407255141F, 0.1420930325F,
+  0.1434662677F, 0.1448452004F, 0.1462298115F, 0.1476200814F,
+  0.1490159906F, 0.1504175195F, 0.1518246482F, 0.1532373569F,
+  0.1546556253F, 0.1560794333F, 0.1575087606F, 0.1589435866F,
+  0.1603838909F, 0.1618296526F, 0.1632808509F, 0.1647374648F,
+  0.1661994731F, 0.1676668546F, 0.1691395880F, 0.1706176516F,
+  0.1721010238F, 0.1735896829F, 0.1750836068F, 0.1765827736F,
+  0.1780871610F, 0.1795967468F, 0.1811115084F, 0.1826314234F,
+  0.1841564689F, 0.1856866221F, 0.1872218600F, 0.1887621595F,
+  0.1903074974F, 0.1918578503F, 0.1934131947F, 0.1949735068F,
+  0.1965387630F, 0.1981089393F, 0.1996840117F, 0.2012639560F,
+  0.2028487479F, 0.2044383630F, 0.2060327766F, 0.2076319642F,
+  0.2092359007F, 0.2108445614F, 0.2124579211F, 0.2140759545F,
+  0.2156986364F, 0.2173259411F, 0.2189578432F, 0.2205943168F,
+  0.2222353361F, 0.2238808751F, 0.2255309076F, 0.2271854073F,
+  0.2288443480F, 0.2305077030F, 0.2321754457F, 0.2338475493F,
+  0.2355239869F, 0.2372047315F, 0.2388897560F, 0.2405790329F,
+  0.2422725350F, 0.2439702347F, 0.2456721043F, 0.2473781159F,
+  0.2490882418F, 0.2508024539F, 0.2525207240F, 0.2542430237F,
+  0.2559693248F, 0.2576995986F, 0.2594338166F, 0.2611719498F,
+  0.2629139695F, 0.2646598466F, 0.2664095520F, 0.2681630564F,
+  0.2699203304F, 0.2716813445F, 0.2734460691F, 0.2752144744F,
+  0.2769865307F, 0.2787622079F, 0.2805414760F, 0.2823243047F,
+  0.2841106637F, 0.2859005227F, 0.2876938509F, 0.2894906179F,
+  0.2912907928F, 0.2930943447F, 0.2949012426F, 0.2967114554F,
+  0.2985249520F, 0.3003417009F, 0.3021616708F, 0.3039848301F,
+  0.3058111471F, 0.3076405901F, 0.3094731273F, 0.3113087266F,
+  0.3131473560F, 0.3149889833F, 0.3168335762F, 0.3186811024F,
+  0.3205315294F, 0.3223848245F, 0.3242409552F, 0.3260998886F,
+  0.3279615918F, 0.3298260319F, 0.3316931758F, 0.3335629903F,
+  0.3354354423F, 0.3373104982F, 0.3391881247F, 0.3410682882F,
+  0.3429509551F, 0.3448360917F, 0.3467236642F, 0.3486136387F,
+  0.3505059811F, 0.3524006575F, 0.3542976336F, 0.3561968753F,
+  0.3580983482F, 0.3600020179F, 0.3619078499F, 0.3638158096F,
+  0.3657258625F, 0.3676379737F, 0.3695521086F, 0.3714682321F,
+  0.3733863094F, 0.3753063055F, 0.3772281852F, 0.3791519134F,
+  0.3810774548F, 0.3830047742F, 0.3849338362F, 0.3868646053F,
+  0.3887970459F, 0.3907311227F, 0.3926667998F, 0.3946040417F,
+  0.3965428125F, 0.3984830765F, 0.4004247978F, 0.4023679403F,
+  0.4043124683F, 0.4062583455F, 0.4082055359F, 0.4101540034F,
+  0.4121037117F, 0.4140546246F, 0.4160067058F, 0.4179599190F,
+  0.4199142277F, 0.4218695956F, 0.4238259861F, 0.4257833627F,
+  0.4277416888F, 0.4297009279F, 0.4316610433F, 0.4336219983F,
+  0.4355837562F, 0.4375462803F, 0.4395095337F, 0.4414734797F,
+  0.4434380815F, 0.4454033021F, 0.4473691046F, 0.4493354521F,
+  0.4513023078F, 0.4532696345F, 0.4552373954F, 0.4572055533F,
+  0.4591740713F, 0.4611429123F, 0.4631120393F, 0.4650814151F,
+  0.4670510028F, 0.4690207650F, 0.4709906649F, 0.4729606651F,
+  0.4749307287F, 0.4769008185F, 0.4788708972F, 0.4808409279F,
+  0.4828108732F, 0.4847806962F, 0.4867503597F, 0.4887198264F,
+  0.4906890593F, 0.4926580213F, 0.4946266753F, 0.4965949840F,
+  0.4985629105F, 0.5005304176F, 0.5024974683F, 0.5044640255F,
+  0.5064300522F, 0.5083955114F, 0.5103603659F, 0.5123245790F,
+  0.5142881136F, 0.5162509328F, 0.5182129997F, 0.5201742774F,
+  0.5221347290F, 0.5240943178F, 0.5260530070F, 0.5280107598F,
+  0.5299675395F, 0.5319233095F, 0.5338780330F, 0.5358316736F,
+  0.5377841946F, 0.5397355596F, 0.5416857320F, 0.5436346755F,
+  0.5455823538F, 0.5475287304F, 0.5494737691F, 0.5514174337F,
+  0.5533596881F, 0.5553004962F, 0.5572398218F, 0.5591776291F,
+  0.5611138821F, 0.5630485449F, 0.5649815818F, 0.5669129570F,
+  0.5688426349F, 0.5707705799F, 0.5726967564F, 0.5746211290F,
+  0.5765436624F, 0.5784643212F, 0.5803830702F, 0.5822998743F,
+  0.5842146984F, 0.5861275076F, 0.5880382669F, 0.5899469416F,
+  0.5918534968F, 0.5937578981F, 0.5956601107F, 0.5975601004F,
+  0.5994578326F, 0.6013532732F, 0.6032463880F, 0.6051371429F,
+  0.6070255039F, 0.6089114372F, 0.6107949090F, 0.6126758856F,
+  0.6145543334F, 0.6164302191F, 0.6183035092F, 0.6201741706F,
+  0.6220421700F, 0.6239074745F, 0.6257700513F, 0.6276298674F,
+  0.6294868903F, 0.6313410873F, 0.6331924262F, 0.6350408745F,
+  0.6368864001F, 0.6387289710F, 0.6405685552F, 0.6424051209F,
+  0.6442386364F, 0.6460690702F, 0.6478963910F, 0.6497205673F,
+  0.6515415682F, 0.6533593625F, 0.6551739194F, 0.6569852082F,
+  0.6587931984F, 0.6605978593F, 0.6623991609F, 0.6641970728F,
+  0.6659915652F, 0.6677826081F, 0.6695701718F, 0.6713542268F,
+  0.6731347437F, 0.6749116932F, 0.6766850461F, 0.6784547736F,
+  0.6802208469F, 0.6819832374F, 0.6837419164F, 0.6854968559F,
+  0.6872480275F, 0.6889954034F, 0.6907389556F, 0.6924786566F,
+  0.6942144788F, 0.6959463950F, 0.6976743780F, 0.6993984008F,
+  0.7011184365F, 0.7028344587F, 0.7045464407F, 0.7062543564F,
+  0.7079581796F, 0.7096578844F, 0.7113534450F, 0.7130448359F,
+  0.7147320316F, 0.7164150070F, 0.7180937371F, 0.7197681970F,
+  0.7214383620F, 0.7231042077F, 0.7247657098F, 0.7264228443F,
+  0.7280755871F, 0.7297239147F, 0.7313678035F, 0.7330072301F,
+  0.7346421715F, 0.7362726046F, 0.7378985069F, 0.7395198556F,
+  0.7411366285F, 0.7427488034F, 0.7443563584F, 0.7459592717F,
+  0.7475575218F, 0.7491510873F, 0.7507399471F, 0.7523240803F,
+  0.7539034661F, 0.7554780839F, 0.7570479136F, 0.7586129349F,
+  0.7601731279F, 0.7617284730F, 0.7632789506F, 0.7648245416F,
+  0.7663652267F, 0.7679009872F, 0.7694318044F, 0.7709576599F,
+  0.7724785354F, 0.7739944130F, 0.7755052749F, 0.7770111035F,
+  0.7785118815F, 0.7800075916F, 0.7814982170F, 0.7829837410F,
+  0.7844641472F, 0.7859394191F, 0.7874095408F, 0.7888744965F,
+  0.7903342706F, 0.7917888476F, 0.7932382124F, 0.7946823501F,
+  0.7961212460F, 0.7975548855F, 0.7989832544F, 0.8004063386F,
+  0.8018241244F, 0.8032365981F, 0.8046437463F, 0.8060455560F,
+  0.8074420141F, 0.8088331080F, 0.8102188253F, 0.8115991536F,
+  0.8129740810F, 0.8143435957F, 0.8157076861F, 0.8170663409F,
+  0.8184195489F, 0.8197672994F, 0.8211095817F, 0.8224463853F,
+  0.8237777001F, 0.8251035161F, 0.8264238235F, 0.8277386129F,
+  0.8290478750F, 0.8303516008F, 0.8316497814F, 0.8329424083F,
+  0.8342294731F, 0.8355109677F, 0.8367868841F, 0.8380572148F,
+  0.8393219523F, 0.8405810893F, 0.8418346190F, 0.8430825345F,
+  0.8443248294F, 0.8455614974F, 0.8467925323F, 0.8480179285F,
+  0.8492376802F, 0.8504517822F, 0.8516602292F, 0.8528630164F,
+  0.8540601391F, 0.8552515928F, 0.8564373733F, 0.8576174766F,
+  0.8587918990F, 0.8599606368F, 0.8611236868F, 0.8622810460F,
+  0.8634327113F, 0.8645786802F, 0.8657189504F, 0.8668535195F,
+  0.8679823857F, 0.8691055472F, 0.8702230025F, 0.8713347503F,
+  0.8724407896F, 0.8735411194F, 0.8746357394F, 0.8757246489F,
+  0.8768078479F, 0.8778853364F, 0.8789571146F, 0.8800231832F,
+  0.8810835427F, 0.8821381942F, 0.8831871387F, 0.8842303777F,
+  0.8852679127F, 0.8862997456F, 0.8873258784F, 0.8883463132F,
+  0.8893610527F, 0.8903700994F, 0.8913734562F, 0.8923711263F,
+  0.8933631129F, 0.8943494196F, 0.8953300500F, 0.8963050083F,
+  0.8972742985F, 0.8982379249F, 0.8991958922F, 0.9001482052F,
+  0.9010948688F, 0.9020358883F, 0.9029712690F, 0.9039010165F,
+  0.9048251367F, 0.9057436357F, 0.9066565195F, 0.9075637946F,
+  0.9084654678F, 0.9093615456F, 0.9102520353F, 0.9111369440F,
+  0.9120162792F, 0.9128900484F, 0.9137582595F, 0.9146209204F,
+  0.9154780394F, 0.9163296248F, 0.9171756853F, 0.9180162296F,
+  0.9188512667F, 0.9196808057F, 0.9205048559F, 0.9213234270F,
+  0.9221365285F, 0.9229441704F, 0.9237463629F, 0.9245431160F,
+  0.9253344404F, 0.9261203465F, 0.9269008453F, 0.9276759477F,
+  0.9284456648F, 0.9292100080F, 0.9299689889F, 0.9307226190F,
+  0.9314709103F, 0.9322138747F, 0.9329515245F, 0.9336838721F,
+  0.9344109300F, 0.9351327108F, 0.9358492275F, 0.9365604931F,
+  0.9372665208F, 0.9379673239F, 0.9386629160F, 0.9393533107F,
+  0.9400385220F, 0.9407185637F, 0.9413934501F, 0.9420631954F,
+  0.9427278141F, 0.9433873208F, 0.9440417304F, 0.9446910576F,
+  0.9453353176F, 0.9459745255F, 0.9466086968F, 0.9472378469F,
+  0.9478619915F, 0.9484811463F, 0.9490953274F, 0.9497045506F,
+  0.9503088323F, 0.9509081888F, 0.9515026365F, 0.9520921921F,
+  0.9526768723F, 0.9532566940F, 0.9538316742F, 0.9544018300F,
+  0.9549671786F, 0.9555277375F, 0.9560835241F, 0.9566345562F,
+  0.9571808513F, 0.9577224275F, 0.9582593027F, 0.9587914949F,
+  0.9593190225F, 0.9598419038F, 0.9603601571F, 0.9608738012F,
+  0.9613828546F, 0.9618873361F, 0.9623872646F, 0.9628826591F,
+  0.9633735388F, 0.9638599227F, 0.9643418303F, 0.9648192808F,
+  0.9652922939F, 0.9657608890F, 0.9662250860F, 0.9666849046F,
+  0.9671403646F, 0.9675914861F, 0.9680382891F, 0.9684807937F,
+  0.9689190202F, 0.9693529890F, 0.9697827203F, 0.9702082347F,
+  0.9706295529F, 0.9710466953F, 0.9714596828F, 0.9718685362F,
+  0.9722732762F, 0.9726739240F, 0.9730705005F, 0.9734630267F,
+  0.9738515239F, 0.9742360134F, 0.9746165163F, 0.9749930540F,
+  0.9753656481F, 0.9757343198F, 0.9760990909F, 0.9764599829F,
+  0.9768170175F, 0.9771702164F, 0.9775196013F, 0.9778651941F,
+  0.9782070167F, 0.9785450909F, 0.9788794388F, 0.9792100824F,
+  0.9795370437F, 0.9798603449F, 0.9801800080F, 0.9804960554F,
+  0.9808085092F, 0.9811173916F, 0.9814227251F, 0.9817245318F,
+  0.9820228343F, 0.9823176549F, 0.9826090160F, 0.9828969402F,
+  0.9831814498F, 0.9834625674F, 0.9837403156F, 0.9840147169F,
+  0.9842857939F, 0.9845535692F, 0.9848180654F, 0.9850793052F,
+  0.9853373113F, 0.9855921062F, 0.9858437127F, 0.9860921535F,
+  0.9863374512F, 0.9865796287F, 0.9868187085F, 0.9870547136F,
+  0.9872876664F, 0.9875175899F, 0.9877445067F, 0.9879684396F,
+  0.9881894112F, 0.9884074444F, 0.9886225619F, 0.9888347863F,
+  0.9890441404F, 0.9892506468F, 0.9894543284F, 0.9896552077F,
+  0.9898533074F, 0.9900486502F, 0.9902412587F, 0.9904311555F,
+  0.9906183633F, 0.9908029045F, 0.9909848019F, 0.9911640779F,
+  0.9913407550F, 0.9915148557F, 0.9916864025F, 0.9918554179F,
+  0.9920219241F, 0.9921859437F, 0.9923474989F, 0.9925066120F,
+  0.9926633054F, 0.9928176012F, 0.9929695218F, 0.9931190891F,
+  0.9932663254F, 0.9934112527F, 0.9935538932F, 0.9936942686F,
+  0.9938324012F, 0.9939683126F, 0.9941020248F, 0.9942335597F,
+  0.9943629388F, 0.9944901841F, 0.9946153170F, 0.9947383593F,
+  0.9948593325F, 0.9949782579F, 0.9950951572F, 0.9952100516F,
+  0.9953229625F, 0.9954339111F, 0.9955429186F, 0.9956500062F,
+  0.9957551948F, 0.9958585056F, 0.9959599593F, 0.9960595769F,
+  0.9961573792F, 0.9962533869F, 0.9963476206F, 0.9964401009F,
+  0.9965308483F, 0.9966198833F, 0.9967072261F, 0.9967928971F,
+  0.9968769164F, 0.9969593041F, 0.9970400804F, 0.9971192651F,
+  0.9971968781F, 0.9972729391F, 0.9973474680F, 0.9974204842F,
+  0.9974920074F, 0.9975620569F, 0.9976306521F, 0.9976978122F,
+  0.9977635565F, 0.9978279039F, 0.9978908736F, 0.9979524842F,
+  0.9980127547F, 0.9980717037F, 0.9981293499F, 0.9981857116F,
+  0.9982408073F, 0.9982946554F, 0.9983472739F, 0.9983986810F,
+  0.9984488947F, 0.9984979328F, 0.9985458132F, 0.9985925534F,
+  0.9986381711F, 0.9986826838F, 0.9987261086F, 0.9987684630F,
+  0.9988097640F, 0.9988500286F, 0.9988892738F, 0.9989275163F,
+  0.9989647727F, 0.9990010597F, 0.9990363938F, 0.9990707911F,
+  0.9991042679F, 0.9991368404F, 0.9991685244F, 0.9991993358F,
+  0.9992292905F, 0.9992584038F, 0.9992866914F, 0.9993141686F,
+  0.9993408506F, 0.9993667526F, 0.9993918895F, 0.9994162761F,
+  0.9994399273F, 0.9994628576F, 0.9994850815F, 0.9995066133F,
+  0.9995274672F, 0.9995476574F, 0.9995671978F, 0.9995861021F,
+  0.9996043841F, 0.9996220573F, 0.9996391352F, 0.9996556310F,
+  0.9996715579F, 0.9996869288F, 0.9997017568F, 0.9997160543F,
+  0.9997298342F, 0.9997431088F, 0.9997558905F, 0.9997681914F,
+  0.9997800236F, 0.9997913990F, 0.9998023292F, 0.9998128261F,
+  0.9998229009F, 0.9998325650F, 0.9998418296F, 0.9998507058F,
+  0.9998592044F, 0.9998673362F, 0.9998751117F, 0.9998825415F,
+  0.9998896358F, 0.9998964047F, 0.9999028584F, 0.9999090066F,
+  0.9999148590F, 0.9999204253F, 0.9999257148F, 0.9999307368F,
+  0.9999355003F, 0.9999400144F, 0.9999442878F, 0.9999483293F,
+  0.9999521472F, 0.9999557499F, 0.9999591457F, 0.9999623426F,
+  0.9999653483F, 0.9999681708F, 0.9999708175F, 0.9999732959F,
+  0.9999756132F, 0.9999777765F, 0.9999797928F, 0.9999816688F,
+  0.9999834113F, 0.9999850266F, 0.9999865211F, 0.9999879009F,
+  0.9999891721F, 0.9999903405F, 0.9999914118F, 0.9999923914F,
+  0.9999932849F, 0.9999940972F, 0.9999948336F, 0.9999954989F,
+  0.9999960978F, 0.9999966349F, 0.9999971146F, 0.9999975411F,
+  0.9999979185F, 0.9999982507F, 0.9999985414F, 0.9999987944F,
+  0.9999990129F, 0.9999992003F, 0.9999993596F, 0.9999994939F,
+  0.9999996059F, 0.9999996981F, 0.9999997732F, 0.9999998333F,
+  0.9999998805F, 0.9999999170F, 0.9999999444F, 0.9999999643F,
+  0.9999999784F, 0.9999999878F, 0.9999999937F, 0.9999999972F,
+  0.9999999990F, 0.9999999997F, 1.0000000000F, 1.0000000000F,
+};
+
+static const float vwin4096[2048] = {
+  0.0000002310F, 0.0000020791F, 0.0000057754F, 0.0000113197F,
+  0.0000187121F, 0.0000279526F, 0.0000390412F, 0.0000519777F,
+  0.0000667623F, 0.0000833949F, 0.0001018753F, 0.0001222036F,
+  0.0001443798F, 0.0001684037F, 0.0001942754F, 0.0002219947F,
+  0.0002515616F, 0.0002829761F, 0.0003162380F, 0.0003513472F,
+  0.0003883038F, 0.0004271076F, 0.0004677584F, 0.0005102563F,
+  0.0005546011F, 0.0006007928F, 0.0006488311F, 0.0006987160F,
+  0.0007504474F, 0.0008040251F, 0.0008594490F, 0.0009167191F,
+  0.0009758351F, 0.0010367969F, 0.0010996044F, 0.0011642574F,
+  0.0012307558F, 0.0012990994F, 0.0013692880F, 0.0014413216F,
+  0.0015151998F, 0.0015909226F, 0.0016684898F, 0.0017479011F,
+  0.0018291565F, 0.0019122556F, 0.0019971983F, 0.0020839845F,
+  0.0021726138F, 0.0022630861F, 0.0023554012F, 0.0024495588F,
+  0.0025455588F, 0.0026434008F, 0.0027430847F, 0.0028446103F,
+  0.0029479772F, 0.0030531853F, 0.0031602342F, 0.0032691238F,
+  0.0033798538F, 0.0034924239F, 0.0036068338F, 0.0037230833F,
+  0.0038411721F, 0.0039610999F, 0.0040828664F, 0.0042064714F,
+  0.0043319145F, 0.0044591954F, 0.0045883139F, 0.0047192696F,
+  0.0048520622F, 0.0049866914F, 0.0051231569F, 0.0052614583F,
+  0.0054015953F, 0.0055435676F, 0.0056873748F, 0.0058330166F,
+  0.0059804926F, 0.0061298026F, 0.0062809460F, 0.0064339226F,
+  0.0065887320F, 0.0067453738F, 0.0069038476F, 0.0070641531F,
+  0.0072262899F, 0.0073902575F, 0.0075560556F, 0.0077236838F,
+  0.0078931417F, 0.0080644288F, 0.0082375447F, 0.0084124891F,
+  0.0085892615F, 0.0087678614F, 0.0089482885F, 0.0091305422F,
+  0.0093146223F, 0.0095005281F, 0.0096882592F, 0.0098778153F,
+  0.0100691958F, 0.0102624002F, 0.0104574281F, 0.0106542791F,
+  0.0108529525F, 0.0110534480F, 0.0112557651F, 0.0114599032F,
+  0.0116658618F, 0.0118736405F, 0.0120832387F, 0.0122946560F,
+  0.0125078917F, 0.0127229454F, 0.0129398166F, 0.0131585046F,
+  0.0133790090F, 0.0136013292F, 0.0138254647F, 0.0140514149F,
+  0.0142791792F, 0.0145087572F, 0.0147401481F, 0.0149733515F,
+  0.0152083667F, 0.0154451932F, 0.0156838304F, 0.0159242777F,
+  0.0161665345F, 0.0164106001F, 0.0166564741F, 0.0169041557F,
+  0.0171536443F, 0.0174049393F, 0.0176580401F, 0.0179129461F,
+  0.0181696565F, 0.0184281708F, 0.0186884883F, 0.0189506084F,
+  0.0192145303F, 0.0194802535F, 0.0197477772F, 0.0200171008F,
+  0.0202882236F, 0.0205611449F, 0.0208358639F, 0.0211123801F,
+  0.0213906927F, 0.0216708011F, 0.0219527043F, 0.0222364019F,
+  0.0225218930F, 0.0228091769F, 0.0230982529F, 0.0233891203F,
+  0.0236817782F, 0.0239762259F, 0.0242724628F, 0.0245704880F,
+  0.0248703007F, 0.0251719002F, 0.0254752858F, 0.0257804565F,
+  0.0260874117F, 0.0263961506F, 0.0267066722F, 0.0270189760F,
+  0.0273330609F, 0.0276489263F, 0.0279665712F, 0.0282859949F,
+  0.0286071966F, 0.0289301753F, 0.0292549303F, 0.0295814607F,
+  0.0299097656F, 0.0302398442F, 0.0305716957F, 0.0309053191F,
+  0.0312407135F, 0.0315778782F, 0.0319168122F, 0.0322575145F,
+  0.0325999844F, 0.0329442209F, 0.0332902231F, 0.0336379900F,
+  0.0339875208F, 0.0343388146F, 0.0346918703F, 0.0350466871F,
+  0.0354032640F, 0.0357616000F, 0.0361216943F, 0.0364835458F,
+  0.0368471535F, 0.0372125166F, 0.0375796339F, 0.0379485046F,
+  0.0383191276F, 0.0386915020F, 0.0390656267F, 0.0394415008F,
+  0.0398191231F, 0.0401984927F, 0.0405796086F, 0.0409624698F,
+  0.0413470751F, 0.0417334235F, 0.0421215141F, 0.0425113457F,
+  0.0429029172F, 0.0432962277F, 0.0436912760F, 0.0440880610F,
+  0.0444865817F, 0.0448868370F, 0.0452888257F, 0.0456925468F,
+  0.0460979992F, 0.0465051816F, 0.0469140931F, 0.0473247325F,
+  0.0477370986F, 0.0481511902F, 0.0485670064F, 0.0489845458F,
+  0.0494038074F, 0.0498247899F, 0.0502474922F, 0.0506719131F,
+  0.0510980514F, 0.0515259060F, 0.0519554756F, 0.0523867590F,
+  0.0528197550F, 0.0532544624F, 0.0536908800F, 0.0541290066F,
+  0.0545688408F, 0.0550103815F, 0.0554536274F, 0.0558985772F,
+  0.0563452297F, 0.0567935837F, 0.0572436377F, 0.0576953907F,
+  0.0581488412F, 0.0586039880F, 0.0590608297F, 0.0595193651F,
+  0.0599795929F, 0.0604415117F, 0.0609051202F, 0.0613704170F,
+  0.0618374009F, 0.0623060704F, 0.0627764243F, 0.0632484611F,
+  0.0637221795F, 0.0641975781F, 0.0646746555F, 0.0651534104F,
+  0.0656338413F, 0.0661159469F, 0.0665997257F, 0.0670851763F,
+  0.0675722973F, 0.0680610873F, 0.0685515448F, 0.0690436684F,
+  0.0695374567F, 0.0700329081F, 0.0705300213F, 0.0710287947F,
+  0.0715292269F, 0.0720313163F, 0.0725350616F, 0.0730404612F,
+  0.0735475136F, 0.0740562172F, 0.0745665707F, 0.0750785723F,
+  0.0755922207F, 0.0761075143F, 0.0766244515F, 0.0771430307F,
+  0.0776632505F, 0.0781851092F, 0.0787086052F, 0.0792337371F,
+  0.0797605032F, 0.0802889018F, 0.0808189315F, 0.0813505905F,
+  0.0818838773F, 0.0824187903F, 0.0829553277F, 0.0834934881F,
+  0.0840332697F, 0.0845746708F, 0.0851176899F, 0.0856623252F,
+  0.0862085751F, 0.0867564379F, 0.0873059119F, 0.0878569954F,
+  0.0884096867F, 0.0889639840F, 0.0895198858F, 0.0900773902F,
+  0.0906364955F, 0.0911972000F, 0.0917595019F, 0.0923233995F,
+  0.0928888909F, 0.0934559745F, 0.0940246485F, 0.0945949110F,
+  0.0951667604F, 0.0957401946F, 0.0963152121F, 0.0968918109F,
+  0.0974699893F, 0.0980497454F, 0.0986310773F, 0.0992139832F,
+  0.0997984614F, 0.1003845098F, 0.1009721267F, 0.1015613101F,
+  0.1021520582F, 0.1027443692F, 0.1033382410F, 0.1039336718F,
+  0.1045306597F, 0.1051292027F, 0.1057292990F, 0.1063309466F,
+  0.1069341435F, 0.1075388878F, 0.1081451776F, 0.1087530108F,
+  0.1093623856F, 0.1099732998F, 0.1105857516F, 0.1111997389F,
+  0.1118152597F, 0.1124323121F, 0.1130508939F, 0.1136710032F,
+  0.1142926379F, 0.1149157960F, 0.1155404755F, 0.1161666742F,
+  0.1167943901F, 0.1174236211F, 0.1180543652F, 0.1186866202F,
+  0.1193203841F, 0.1199556548F, 0.1205924300F, 0.1212307078F,
+  0.1218704860F, 0.1225117624F, 0.1231545349F, 0.1237988013F,
+  0.1244445596F, 0.1250918074F, 0.1257405427F, 0.1263907632F,
+  0.1270424667F, 0.1276956512F, 0.1283503142F, 0.1290064537F,
+  0.1296640674F, 0.1303231530F, 0.1309837084F, 0.1316457312F,
+  0.1323092193F, 0.1329741703F, 0.1336405820F, 0.1343084520F,
+  0.1349777782F, 0.1356485582F, 0.1363207897F, 0.1369944704F,
+  0.1376695979F, 0.1383461700F, 0.1390241842F, 0.1397036384F,
+  0.1403845300F, 0.1410668567F, 0.1417506162F, 0.1424358061F,
+  0.1431224240F, 0.1438104674F, 0.1444999341F, 0.1451908216F,
+  0.1458831274F, 0.1465768492F, 0.1472719844F, 0.1479685308F,
+  0.1486664857F, 0.1493658468F, 0.1500666115F, 0.1507687775F,
+  0.1514723422F, 0.1521773031F, 0.1528836577F, 0.1535914035F,
+  0.1543005380F, 0.1550110587F, 0.1557229631F, 0.1564362485F,
+  0.1571509124F, 0.1578669524F, 0.1585843657F, 0.1593031499F,
+  0.1600233024F, 0.1607448205F, 0.1614677017F, 0.1621919433F,
+  0.1629175428F, 0.1636444975F, 0.1643728047F, 0.1651024619F,
+  0.1658334665F, 0.1665658156F, 0.1672995067F, 0.1680345371F,
+  0.1687709041F, 0.1695086050F, 0.1702476372F, 0.1709879978F,
+  0.1717296843F, 0.1724726938F, 0.1732170237F, 0.1739626711F,
+  0.1747096335F, 0.1754579079F, 0.1762074916F, 0.1769583819F,
+  0.1777105760F, 0.1784640710F, 0.1792188642F, 0.1799749529F,
+  0.1807323340F, 0.1814910049F, 0.1822509628F, 0.1830122046F,
+  0.1837747277F, 0.1845385292F, 0.1853036062F, 0.1860699558F,
+  0.1868375751F, 0.1876064613F, 0.1883766114F, 0.1891480226F,
+  0.1899206919F, 0.1906946164F, 0.1914697932F, 0.1922462194F,
+  0.1930238919F, 0.1938028079F, 0.1945829643F, 0.1953643583F,
+  0.1961469868F, 0.1969308468F, 0.1977159353F, 0.1985022494F,
+  0.1992897859F, 0.2000785420F, 0.2008685145F, 0.2016597005F,
+  0.2024520968F, 0.2032457005F, 0.2040405084F, 0.2048365175F,
+  0.2056337247F, 0.2064321269F, 0.2072317211F, 0.2080325041F,
+  0.2088344727F, 0.2096376240F, 0.2104419547F, 0.2112474618F,
+  0.2120541420F, 0.2128619923F, 0.2136710094F, 0.2144811902F,
+  0.2152925315F, 0.2161050301F, 0.2169186829F, 0.2177334866F,
+  0.2185494381F, 0.2193665340F, 0.2201847712F, 0.2210041465F,
+  0.2218246565F, 0.2226462981F, 0.2234690680F, 0.2242929629F,
+  0.2251179796F, 0.2259441147F, 0.2267713650F, 0.2275997272F,
+  0.2284291979F, 0.2292597739F, 0.2300914518F, 0.2309242283F,
+  0.2317581001F, 0.2325930638F, 0.2334291160F, 0.2342662534F,
+  0.2351044727F, 0.2359437703F, 0.2367841431F, 0.2376255875F,
+  0.2384681001F, 0.2393116776F, 0.2401563165F, 0.2410020134F,
+  0.2418487649F, 0.2426965675F, 0.2435454178F, 0.2443953122F,
+  0.2452462474F, 0.2460982199F, 0.2469512262F, 0.2478052628F,
+  0.2486603262F, 0.2495164129F, 0.2503735194F, 0.2512316421F,
+  0.2520907776F, 0.2529509222F, 0.2538120726F, 0.2546742250F,
+  0.2555373760F, 0.2564015219F, 0.2572666593F, 0.2581327845F,
+  0.2589998939F, 0.2598679840F, 0.2607370510F, 0.2616070916F,
+  0.2624781019F, 0.2633500783F, 0.2642230173F, 0.2650969152F,
+  0.2659717684F, 0.2668475731F, 0.2677243257F, 0.2686020226F,
+  0.2694806601F, 0.2703602344F, 0.2712407419F, 0.2721221789F,
+  0.2730045417F, 0.2738878265F, 0.2747720297F, 0.2756571474F,
+  0.2765431760F, 0.2774301117F, 0.2783179508F, 0.2792066895F,
+  0.2800963240F, 0.2809868505F, 0.2818782654F, 0.2827705647F,
+  0.2836637447F, 0.2845578016F, 0.2854527315F, 0.2863485307F,
+  0.2872451953F, 0.2881427215F, 0.2890411055F, 0.2899403433F,
+  0.2908404312F, 0.2917413654F, 0.2926431418F, 0.2935457567F,
+  0.2944492061F, 0.2953534863F, 0.2962585932F, 0.2971645230F,
+  0.2980712717F, 0.2989788356F, 0.2998872105F, 0.3007963927F,
+  0.3017063781F, 0.3026171629F, 0.3035287430F, 0.3044411145F,
+  0.3053542736F, 0.3062682161F, 0.3071829381F, 0.3080984356F,
+  0.3090147047F, 0.3099317413F, 0.3108495414F, 0.3117681011F,
+  0.3126874163F, 0.3136074830F, 0.3145282972F, 0.3154498548F,
+  0.3163721517F, 0.3172951841F, 0.3182189477F, 0.3191434385F,
+  0.3200686525F, 0.3209945856F, 0.3219212336F, 0.3228485927F,
+  0.3237766585F, 0.3247054271F, 0.3256348943F, 0.3265650560F,
+  0.3274959081F, 0.3284274465F, 0.3293596671F, 0.3302925657F,
+  0.3312261382F, 0.3321603804F, 0.3330952882F, 0.3340308574F,
+  0.3349670838F, 0.3359039634F, 0.3368414919F, 0.3377796651F,
+  0.3387184789F, 0.3396579290F, 0.3405980113F, 0.3415387216F,
+  0.3424800556F, 0.3434220091F, 0.3443645779F, 0.3453077578F,
+  0.3462515446F, 0.3471959340F, 0.3481409217F, 0.3490865036F,
+  0.3500326754F, 0.3509794328F, 0.3519267715F, 0.3528746873F,
+  0.3538231759F, 0.3547722330F, 0.3557218544F, 0.3566720357F,
+  0.3576227727F, 0.3585740610F, 0.3595258964F, 0.3604782745F,
+  0.3614311910F, 0.3623846417F, 0.3633386221F, 0.3642931280F,
+  0.3652481549F, 0.3662036987F, 0.3671597548F, 0.3681163191F,
+  0.3690733870F, 0.3700309544F, 0.3709890167F, 0.3719475696F,
+  0.3729066089F, 0.3738661299F, 0.3748261285F, 0.3757866002F,
+  0.3767475406F, 0.3777089453F, 0.3786708100F, 0.3796331302F,
+  0.3805959014F, 0.3815591194F, 0.3825227796F, 0.3834868777F,
+  0.3844514093F, 0.3854163698F, 0.3863817549F, 0.3873475601F,
+  0.3883137810F, 0.3892804131F, 0.3902474521F, 0.3912148933F,
+  0.3921827325F, 0.3931509650F, 0.3941195865F, 0.3950885925F,
+  0.3960579785F, 0.3970277400F, 0.3979978725F, 0.3989683716F,
+  0.3999392328F, 0.4009104516F, 0.4018820234F, 0.4028539438F,
+  0.4038262084F, 0.4047988125F, 0.4057717516F, 0.4067450214F,
+  0.4077186172F, 0.4086925345F, 0.4096667688F, 0.4106413155F,
+  0.4116161703F, 0.4125913284F, 0.4135667854F, 0.4145425368F,
+  0.4155185780F, 0.4164949044F, 0.4174715116F, 0.4184483949F,
+  0.4194255498F, 0.4204029718F, 0.4213806563F, 0.4223585987F,
+  0.4233367946F, 0.4243152392F, 0.4252939281F, 0.4262728566F,
+  0.4272520202F, 0.4282314144F, 0.4292110345F, 0.4301908760F,
+  0.4311709343F, 0.4321512047F, 0.4331316828F, 0.4341123639F,
+  0.4350932435F, 0.4360743168F, 0.4370555794F, 0.4380370267F,
+  0.4390186540F, 0.4400004567F, 0.4409824303F, 0.4419645701F,
+  0.4429468716F, 0.4439293300F, 0.4449119409F, 0.4458946996F,
+  0.4468776014F, 0.4478606418F, 0.4488438162F, 0.4498271199F,
+  0.4508105483F, 0.4517940967F, 0.4527777607F, 0.4537615355F,
+  0.4547454165F, 0.4557293991F, 0.4567134786F, 0.4576976505F,
+  0.4586819101F, 0.4596662527F, 0.4606506738F, 0.4616351687F,
+  0.4626197328F, 0.4636043614F, 0.4645890499F, 0.4655737936F,
+  0.4665585880F, 0.4675434284F, 0.4685283101F, 0.4695132286F,
+  0.4704981791F, 0.4714831570F, 0.4724681577F, 0.4734531766F,
+  0.4744382089F, 0.4754232501F, 0.4764082956F, 0.4773933406F,
+  0.4783783806F, 0.4793634108F, 0.4803484267F, 0.4813334237F,
+  0.4823183969F, 0.4833033419F, 0.4842882540F, 0.4852731285F,
+  0.4862579608F, 0.4872427462F, 0.4882274802F, 0.4892121580F,
+  0.4901967751F, 0.4911813267F, 0.4921658083F, 0.4931502151F,
+  0.4941345427F, 0.4951187863F, 0.4961029412F, 0.4970870029F,
+  0.4980709667F, 0.4990548280F, 0.5000385822F, 0.5010222245F,
+  0.5020057505F, 0.5029891553F, 0.5039724345F, 0.5049555834F,
+  0.5059385973F, 0.5069214716F, 0.5079042018F, 0.5088867831F,
+  0.5098692110F, 0.5108514808F, 0.5118335879F, 0.5128155277F,
+  0.5137972956F, 0.5147788869F, 0.5157602971F, 0.5167415215F,
+  0.5177225555F, 0.5187033945F, 0.5196840339F, 0.5206644692F,
+  0.5216446956F, 0.5226247086F, 0.5236045035F, 0.5245840759F,
+  0.5255634211F, 0.5265425344F, 0.5275214114F, 0.5285000474F,
+  0.5294784378F, 0.5304565781F, 0.5314344637F, 0.5324120899F,
+  0.5333894522F, 0.5343665461F, 0.5353433670F, 0.5363199102F,
+  0.5372961713F, 0.5382721457F, 0.5392478287F, 0.5402232159F,
+  0.5411983027F, 0.5421730845F, 0.5431475569F, 0.5441217151F,
+  0.5450955548F, 0.5460690714F, 0.5470422602F, 0.5480151169F,
+  0.5489876368F, 0.5499598155F, 0.5509316484F, 0.5519031310F,
+  0.5528742587F, 0.5538450271F, 0.5548154317F, 0.5557854680F,
+  0.5567551314F, 0.5577244174F, 0.5586933216F, 0.5596618395F,
+  0.5606299665F, 0.5615976983F, 0.5625650302F, 0.5635319580F,
+  0.5644984770F, 0.5654645828F, 0.5664302709F, 0.5673955370F,
+  0.5683603765F, 0.5693247850F, 0.5702887580F, 0.5712522912F,
+  0.5722153800F, 0.5731780200F, 0.5741402069F, 0.5751019362F,
+  0.5760632034F, 0.5770240042F, 0.5779843341F, 0.5789441889F,
+  0.5799035639F, 0.5808624549F, 0.5818208575F, 0.5827787673F,
+  0.5837361800F, 0.5846930910F, 0.5856494961F, 0.5866053910F,
+  0.5875607712F, 0.5885156324F, 0.5894699703F, 0.5904237804F,
+  0.5913770586F, 0.5923298004F, 0.5932820016F, 0.5942336578F,
+  0.5951847646F, 0.5961353179F, 0.5970853132F, 0.5980347464F,
+  0.5989836131F, 0.5999319090F, 0.6008796298F, 0.6018267713F,
+  0.6027733292F, 0.6037192993F, 0.6046646773F, 0.6056094589F,
+  0.6065536400F, 0.6074972162F, 0.6084401833F, 0.6093825372F,
+  0.6103242736F, 0.6112653884F, 0.6122058772F, 0.6131457359F,
+  0.6140849604F, 0.6150235464F, 0.6159614897F, 0.6168987862F,
+  0.6178354318F, 0.6187714223F, 0.6197067535F, 0.6206414213F,
+  0.6215754215F, 0.6225087501F, 0.6234414028F, 0.6243733757F,
+  0.6253046646F, 0.6262352654F, 0.6271651739F, 0.6280943862F,
+  0.6290228982F, 0.6299507057F, 0.6308778048F, 0.6318041913F,
+  0.6327298612F, 0.6336548105F, 0.6345790352F, 0.6355025312F,
+  0.6364252945F, 0.6373473211F, 0.6382686070F, 0.6391891483F,
+  0.6401089409F, 0.6410279808F, 0.6419462642F, 0.6428637869F,
+  0.6437805452F, 0.6446965350F, 0.6456117524F, 0.6465261935F,
+  0.6474398544F, 0.6483527311F, 0.6492648197F, 0.6501761165F,
+  0.6510866174F, 0.6519963186F, 0.6529052162F, 0.6538133064F,
+  0.6547205854F, 0.6556270492F, 0.6565326941F, 0.6574375162F,
+  0.6583415117F, 0.6592446769F, 0.6601470079F, 0.6610485009F,
+  0.6619491521F, 0.6628489578F, 0.6637479143F, 0.6646460177F,
+  0.6655432643F, 0.6664396505F, 0.6673351724F, 0.6682298264F,
+  0.6691236087F, 0.6700165157F, 0.6709085436F, 0.6717996889F,
+  0.6726899478F, 0.6735793167F, 0.6744677918F, 0.6753553697F,
+  0.6762420466F, 0.6771278190F, 0.6780126832F, 0.6788966357F,
+  0.6797796728F, 0.6806617909F, 0.6815429866F, 0.6824232562F,
+  0.6833025961F, 0.6841810030F, 0.6850584731F, 0.6859350031F,
+  0.6868105894F, 0.6876852284F, 0.6885589168F, 0.6894316510F,
+  0.6903034275F, 0.6911742430F, 0.6920440939F, 0.6929129769F,
+  0.6937808884F, 0.6946478251F, 0.6955137837F, 0.6963787606F,
+  0.6972427525F, 0.6981057560F, 0.6989677678F, 0.6998287845F,
+  0.7006888028F, 0.7015478194F, 0.7024058309F, 0.7032628340F,
+  0.7041188254F, 0.7049738019F, 0.7058277601F, 0.7066806969F,
+  0.7075326089F, 0.7083834929F, 0.7092333457F, 0.7100821640F,
+  0.7109299447F, 0.7117766846F, 0.7126223804F, 0.7134670291F,
+  0.7143106273F, 0.7151531721F, 0.7159946602F, 0.7168350885F,
+  0.7176744539F, 0.7185127534F, 0.7193499837F, 0.7201861418F,
+  0.7210212247F, 0.7218552293F, 0.7226881526F, 0.7235199914F,
+  0.7243507428F, 0.7251804039F, 0.7260089715F, 0.7268364426F,
+  0.7276628144F, 0.7284880839F, 0.7293122481F, 0.7301353040F,
+  0.7309572487F, 0.7317780794F, 0.7325977930F, 0.7334163868F,
+  0.7342338579F, 0.7350502033F, 0.7358654202F, 0.7366795059F,
+  0.7374924573F, 0.7383042718F, 0.7391149465F, 0.7399244787F,
+  0.7407328655F, 0.7415401041F, 0.7423461920F, 0.7431511261F,
+  0.7439549040F, 0.7447575227F, 0.7455589797F, 0.7463592723F,
+  0.7471583976F, 0.7479563532F, 0.7487531363F, 0.7495487443F,
+  0.7503431745F, 0.7511364244F, 0.7519284913F, 0.7527193726F,
+  0.7535090658F, 0.7542975683F, 0.7550848776F, 0.7558709910F,
+  0.7566559062F, 0.7574396205F, 0.7582221314F, 0.7590034366F,
+  0.7597835334F, 0.7605624194F, 0.7613400923F, 0.7621165495F,
+  0.7628917886F, 0.7636658072F, 0.7644386030F, 0.7652101735F,
+  0.7659805164F, 0.7667496292F, 0.7675175098F, 0.7682841556F,
+  0.7690495645F, 0.7698137341F, 0.7705766622F, 0.7713383463F,
+  0.7720987844F, 0.7728579741F, 0.7736159132F, 0.7743725994F,
+  0.7751280306F, 0.7758822046F, 0.7766351192F, 0.7773867722F,
+  0.7781371614F, 0.7788862848F, 0.7796341401F, 0.7803807253F,
+  0.7811260383F, 0.7818700769F, 0.7826128392F, 0.7833543230F,
+  0.7840945263F, 0.7848334471F, 0.7855710833F, 0.7863074330F,
+  0.7870424941F, 0.7877762647F, 0.7885087428F, 0.7892399264F,
+  0.7899698137F, 0.7906984026F, 0.7914256914F, 0.7921516780F,
+  0.7928763607F, 0.7935997375F, 0.7943218065F, 0.7950425661F,
+  0.7957620142F, 0.7964801492F, 0.7971969692F, 0.7979124724F,
+  0.7986266570F, 0.7993395214F, 0.8000510638F, 0.8007612823F,
+  0.8014701754F, 0.8021777413F, 0.8028839784F, 0.8035888849F,
+  0.8042924592F, 0.8049946997F, 0.8056956048F, 0.8063951727F,
+  0.8070934020F, 0.8077902910F, 0.8084858381F, 0.8091800419F,
+  0.8098729007F, 0.8105644130F, 0.8112545774F, 0.8119433922F,
+  0.8126308561F, 0.8133169676F, 0.8140017251F, 0.8146851272F,
+  0.8153671726F, 0.8160478598F, 0.8167271874F, 0.8174051539F,
+  0.8180817582F, 0.8187569986F, 0.8194308741F, 0.8201033831F,
+  0.8207745244F, 0.8214442966F, 0.8221126986F, 0.8227797290F,
+  0.8234453865F, 0.8241096700F, 0.8247725781F, 0.8254341097F,
+  0.8260942636F, 0.8267530385F, 0.8274104334F, 0.8280664470F,
+  0.8287210782F, 0.8293743259F, 0.8300261889F, 0.8306766662F,
+  0.8313257566F, 0.8319734591F, 0.8326197727F, 0.8332646963F,
+  0.8339082288F, 0.8345503692F, 0.8351911167F, 0.8358304700F,
+  0.8364684284F, 0.8371049907F, 0.8377401562F, 0.8383739238F,
+  0.8390062927F, 0.8396372618F, 0.8402668305F, 0.8408949977F,
+  0.8415217626F, 0.8421471245F, 0.8427710823F, 0.8433936354F,
+  0.8440147830F, 0.8446345242F, 0.8452528582F, 0.8458697844F,
+  0.8464853020F, 0.8470994102F, 0.8477121084F, 0.8483233958F,
+  0.8489332718F, 0.8495417356F, 0.8501487866F, 0.8507544243F,
+  0.8513586479F, 0.8519614568F, 0.8525628505F, 0.8531628283F,
+  0.8537613897F, 0.8543585341F, 0.8549542611F, 0.8555485699F,
+  0.8561414603F, 0.8567329315F, 0.8573229832F, 0.8579116149F,
+  0.8584988262F, 0.8590846165F, 0.8596689855F, 0.8602519327F,
+  0.8608334577F, 0.8614135603F, 0.8619922399F, 0.8625694962F,
+  0.8631453289F, 0.8637197377F, 0.8642927222F, 0.8648642821F,
+  0.8654344172F, 0.8660031272F, 0.8665704118F, 0.8671362708F,
+  0.8677007039F, 0.8682637109F, 0.8688252917F, 0.8693854460F,
+  0.8699441737F, 0.8705014745F, 0.8710573485F, 0.8716117953F,
+  0.8721648150F, 0.8727164073F, 0.8732665723F, 0.8738153098F,
+  0.8743626197F, 0.8749085021F, 0.8754529569F, 0.8759959840F,
+  0.8765375835F, 0.8770777553F, 0.8776164996F, 0.8781538162F,
+  0.8786897054F, 0.8792241670F, 0.8797572013F, 0.8802888082F,
+  0.8808189880F, 0.8813477407F, 0.8818750664F, 0.8824009653F,
+  0.8829254375F, 0.8834484833F, 0.8839701028F, 0.8844902961F,
+  0.8850090636F, 0.8855264054F, 0.8860423218F, 0.8865568131F,
+  0.8870698794F, 0.8875815212F, 0.8880917386F, 0.8886005319F,
+  0.8891079016F, 0.8896138479F, 0.8901183712F, 0.8906214719F,
+  0.8911231503F, 0.8916234067F, 0.8921222417F, 0.8926196556F,
+  0.8931156489F, 0.8936102219F, 0.8941033752F, 0.8945951092F,
+  0.8950854244F, 0.8955743212F, 0.8960618003F, 0.8965478621F,
+  0.8970325071F, 0.8975157359F, 0.8979975490F, 0.8984779471F,
+  0.8989569307F, 0.8994345004F, 0.8999106568F, 0.9003854005F,
+  0.9008587323F, 0.9013306526F, 0.9018011623F, 0.9022702619F,
+  0.9027379521F, 0.9032042337F, 0.9036691074F, 0.9041325739F,
+  0.9045946339F, 0.9050552882F, 0.9055145376F, 0.9059723828F,
+  0.9064288246F, 0.9068838638F, 0.9073375013F, 0.9077897379F,
+  0.9082405743F, 0.9086900115F, 0.9091380503F, 0.9095846917F,
+  0.9100299364F, 0.9104737854F, 0.9109162397F, 0.9113573001F,
+  0.9117969675F, 0.9122352430F, 0.9126721275F, 0.9131076219F,
+  0.9135417273F, 0.9139744447F, 0.9144057750F, 0.9148357194F,
+  0.9152642787F, 0.9156914542F, 0.9161172468F, 0.9165416576F,
+  0.9169646877F, 0.9173863382F, 0.9178066102F, 0.9182255048F,
+  0.9186430232F, 0.9190591665F, 0.9194739359F, 0.9198873324F,
+  0.9202993574F, 0.9207100120F, 0.9211192973F, 0.9215272147F,
+  0.9219337653F, 0.9223389504F, 0.9227427713F, 0.9231452290F,
+  0.9235463251F, 0.9239460607F, 0.9243444371F, 0.9247414557F,
+  0.9251371177F, 0.9255314245F, 0.9259243774F, 0.9263159778F,
+  0.9267062270F, 0.9270951264F, 0.9274826774F, 0.9278688814F,
+  0.9282537398F, 0.9286372540F, 0.9290194254F, 0.9294002555F,
+  0.9297797458F, 0.9301578976F, 0.9305347125F, 0.9309101919F,
+  0.9312843373F, 0.9316571503F, 0.9320286323F, 0.9323987849F,
+  0.9327676097F, 0.9331351080F, 0.9335012816F, 0.9338661320F,
+  0.9342296607F, 0.9345918694F, 0.9349527596F, 0.9353123330F,
+  0.9356705911F, 0.9360275357F, 0.9363831683F, 0.9367374905F,
+  0.9370905042F, 0.9374422108F, 0.9377926122F, 0.9381417099F,
+  0.9384895057F, 0.9388360014F, 0.9391811985F, 0.9395250989F,
+  0.9398677043F, 0.9402090165F, 0.9405490371F, 0.9408877680F,
+  0.9412252110F, 0.9415613678F, 0.9418962402F, 0.9422298301F,
+  0.9425621392F, 0.9428931695F, 0.9432229226F, 0.9435514005F,
+  0.9438786050F, 0.9442045381F, 0.9445292014F, 0.9448525971F,
+  0.9451747268F, 0.9454955926F, 0.9458151963F, 0.9461335399F,
+  0.9464506253F, 0.9467664545F, 0.9470810293F, 0.9473943517F,
+  0.9477064238F, 0.9480172474F, 0.9483268246F, 0.9486351573F,
+  0.9489422475F, 0.9492480973F, 0.9495527087F, 0.9498560837F,
+  0.9501582243F, 0.9504591325F, 0.9507588105F, 0.9510572603F,
+  0.9513544839F, 0.9516504834F, 0.9519452609F, 0.9522388186F,
+  0.9525311584F, 0.9528222826F, 0.9531121932F, 0.9534008923F,
+  0.9536883821F, 0.9539746647F, 0.9542597424F, 0.9545436171F,
+  0.9548262912F, 0.9551077667F, 0.9553880459F, 0.9556671309F,
+  0.9559450239F, 0.9562217272F, 0.9564972429F, 0.9567715733F,
+  0.9570447206F, 0.9573166871F, 0.9575874749F, 0.9578570863F,
+  0.9581255236F, 0.9583927890F, 0.9586588849F, 0.9589238134F,
+  0.9591875769F, 0.9594501777F, 0.9597116180F, 0.9599719003F,
+  0.9602310267F, 0.9604889995F, 0.9607458213F, 0.9610014942F,
+  0.9612560206F, 0.9615094028F, 0.9617616433F, 0.9620127443F,
+  0.9622627083F, 0.9625115376F, 0.9627592345F, 0.9630058016F,
+  0.9632512411F, 0.9634955555F, 0.9637387471F, 0.9639808185F,
+  0.9642217720F, 0.9644616100F, 0.9647003349F, 0.9649379493F,
+  0.9651744556F, 0.9654098561F, 0.9656441534F, 0.9658773499F,
+  0.9661094480F, 0.9663404504F, 0.9665703593F, 0.9667991774F,
+  0.9670269071F, 0.9672535509F, 0.9674791114F, 0.9677035909F,
+  0.9679269921F, 0.9681493174F, 0.9683705694F, 0.9685907506F,
+  0.9688098636F, 0.9690279108F, 0.9692448948F, 0.9694608182F,
+  0.9696756836F, 0.9698894934F, 0.9701022503F, 0.9703139569F,
+  0.9705246156F, 0.9707342291F, 0.9709428000F, 0.9711503309F,
+  0.9713568243F, 0.9715622829F, 0.9717667093F, 0.9719701060F,
+  0.9721724757F, 0.9723738210F, 0.9725741446F, 0.9727734490F,
+  0.9729717369F, 0.9731690109F, 0.9733652737F, 0.9735605279F,
+  0.9737547762F, 0.9739480212F, 0.9741402656F, 0.9743315120F,
+  0.9745217631F, 0.9747110216F, 0.9748992901F, 0.9750865714F,
+  0.9752728681F, 0.9754581829F, 0.9756425184F, 0.9758258775F,
+  0.9760082627F, 0.9761896768F, 0.9763701224F, 0.9765496024F,
+  0.9767281193F, 0.9769056760F, 0.9770822751F, 0.9772579193F,
+  0.9774326114F, 0.9776063542F, 0.9777791502F, 0.9779510023F,
+  0.9781219133F, 0.9782918858F, 0.9784609226F, 0.9786290264F,
+  0.9787962000F, 0.9789624461F, 0.9791277676F, 0.9792921671F,
+  0.9794556474F, 0.9796182113F, 0.9797798615F, 0.9799406009F,
+  0.9801004321F, 0.9802593580F, 0.9804173813F, 0.9805745049F,
+  0.9807307314F, 0.9808860637F, 0.9810405046F, 0.9811940568F,
+  0.9813467232F, 0.9814985065F, 0.9816494095F, 0.9817994351F,
+  0.9819485860F, 0.9820968650F, 0.9822442750F, 0.9823908186F,
+  0.9825364988F, 0.9826813184F, 0.9828252801F, 0.9829683868F,
+  0.9831106413F, 0.9832520463F, 0.9833926048F, 0.9835323195F,
+  0.9836711932F, 0.9838092288F, 0.9839464291F, 0.9840827969F,
+  0.9842183351F, 0.9843530464F, 0.9844869337F, 0.9846199998F,
+  0.9847522475F, 0.9848836798F, 0.9850142993F, 0.9851441090F,
+  0.9852731117F, 0.9854013101F, 0.9855287073F, 0.9856553058F,
+  0.9857811087F, 0.9859061188F, 0.9860303388F, 0.9861537717F,
+  0.9862764202F, 0.9863982872F, 0.9865193756F, 0.9866396882F,
+  0.9867592277F, 0.9868779972F, 0.9869959993F, 0.9871132370F,
+  0.9872297131F, 0.9873454304F, 0.9874603918F, 0.9875746001F,
+  0.9876880581F, 0.9878007688F, 0.9879127348F, 0.9880239592F,
+  0.9881344447F, 0.9882441941F, 0.9883532104F, 0.9884614962F,
+  0.9885690546F, 0.9886758883F, 0.9887820001F, 0.9888873930F,
+  0.9889920697F, 0.9890960331F, 0.9891992859F, 0.9893018312F,
+  0.9894036716F, 0.9895048100F, 0.9896052493F, 0.9897049923F,
+  0.9898040418F, 0.9899024006F, 0.9900000717F, 0.9900970577F,
+  0.9901933616F, 0.9902889862F, 0.9903839343F, 0.9904782087F,
+  0.9905718122F, 0.9906647477F, 0.9907570180F, 0.9908486259F,
+  0.9909395742F, 0.9910298658F, 0.9911195034F, 0.9912084899F,
+  0.9912968281F, 0.9913845208F, 0.9914715708F, 0.9915579810F,
+  0.9916437540F, 0.9917288928F, 0.9918134001F, 0.9918972788F,
+  0.9919805316F, 0.9920631613F, 0.9921451707F, 0.9922265626F,
+  0.9923073399F, 0.9923875052F, 0.9924670615F, 0.9925460114F,
+  0.9926243577F, 0.9927021033F, 0.9927792508F, 0.9928558032F,
+  0.9929317631F, 0.9930071333F, 0.9930819167F, 0.9931561158F,
+  0.9932297337F, 0.9933027728F, 0.9933752362F, 0.9934471264F,
+  0.9935184462F, 0.9935891985F, 0.9936593859F, 0.9937290112F,
+  0.9937980771F, 0.9938665864F, 0.9939345418F, 0.9940019460F,
+  0.9940688018F, 0.9941351118F, 0.9942008789F, 0.9942661057F,
+  0.9943307950F, 0.9943949494F, 0.9944585717F, 0.9945216645F,
+  0.9945842307F, 0.9946462728F, 0.9947077936F, 0.9947687957F,
+  0.9948292820F, 0.9948892550F, 0.9949487174F, 0.9950076719F,
+  0.9950661212F, 0.9951240679F, 0.9951815148F, 0.9952384645F,
+  0.9952949196F, 0.9953508828F, 0.9954063568F, 0.9954613442F,
+  0.9955158476F, 0.9955698697F, 0.9956234132F, 0.9956764806F,
+  0.9957290746F, 0.9957811978F, 0.9958328528F, 0.9958840423F,
+  0.9959347688F, 0.9959850351F, 0.9960348435F, 0.9960841969F,
+  0.9961330977F, 0.9961815486F, 0.9962295521F, 0.9962771108F,
+  0.9963242274F, 0.9963709043F, 0.9964171441F, 0.9964629494F,
+  0.9965083228F, 0.9965532668F, 0.9965977840F, 0.9966418768F,
+  0.9966855479F, 0.9967287998F, 0.9967716350F, 0.9968140559F,
+  0.9968560653F, 0.9968976655F, 0.9969388591F, 0.9969796485F,
+  0.9970200363F, 0.9970600250F, 0.9970996170F, 0.9971388149F,
+  0.9971776211F, 0.9972160380F, 0.9972540683F, 0.9972917142F,
+  0.9973289783F, 0.9973658631F, 0.9974023709F, 0.9974385042F,
+  0.9974742655F, 0.9975096571F, 0.9975446816F, 0.9975793413F,
+  0.9976136386F, 0.9976475759F, 0.9976811557F, 0.9977143803F,
+  0.9977472521F, 0.9977797736F, 0.9978119470F, 0.9978437748F,
+  0.9978752593F, 0.9979064029F, 0.9979372079F, 0.9979676768F,
+  0.9979978117F, 0.9980276151F, 0.9980570893F, 0.9980862367F,
+  0.9981150595F, 0.9981435600F, 0.9981717406F, 0.9981996035F,
+  0.9982271511F, 0.9982543856F, 0.9982813093F, 0.9983079246F,
+  0.9983342336F, 0.9983602386F, 0.9983859418F, 0.9984113456F,
+  0.9984364522F, 0.9984612638F, 0.9984857825F, 0.9985100108F,
+  0.9985339507F, 0.9985576044F, 0.9985809743F, 0.9986040624F,
+  0.9986268710F, 0.9986494022F, 0.9986716583F, 0.9986936413F,
+  0.9987153535F, 0.9987367969F, 0.9987579738F, 0.9987788864F,
+  0.9987995366F, 0.9988199267F, 0.9988400587F, 0.9988599348F,
+  0.9988795572F, 0.9988989278F, 0.9989180487F, 0.9989369222F,
+  0.9989555501F, 0.9989739347F, 0.9989920780F, 0.9990099820F,
+  0.9990276487F, 0.9990450803F, 0.9990622787F, 0.9990792460F,
+  0.9990959841F, 0.9991124952F, 0.9991287812F, 0.9991448440F,
+  0.9991606858F, 0.9991763084F, 0.9991917139F, 0.9992069042F,
+  0.9992218813F, 0.9992366471F, 0.9992512035F, 0.9992655525F,
+  0.9992796961F, 0.9992936361F, 0.9993073744F, 0.9993209131F,
+  0.9993342538F, 0.9993473987F, 0.9993603494F, 0.9993731080F,
+  0.9993856762F, 0.9993980559F, 0.9994102490F, 0.9994222573F,
+  0.9994340827F, 0.9994457269F, 0.9994571918F, 0.9994684793F,
+  0.9994795910F, 0.9994905288F, 0.9995012945F, 0.9995118898F,
+  0.9995223165F, 0.9995325765F, 0.9995426713F, 0.9995526029F,
+  0.9995623728F, 0.9995719829F, 0.9995814349F, 0.9995907304F,
+  0.9995998712F, 0.9996088590F, 0.9996176954F, 0.9996263821F,
+  0.9996349208F, 0.9996433132F, 0.9996515609F, 0.9996596656F,
+  0.9996676288F, 0.9996754522F, 0.9996831375F, 0.9996906862F,
+  0.9996981000F, 0.9997053804F, 0.9997125290F, 0.9997195474F,
+  0.9997264371F, 0.9997331998F, 0.9997398369F, 0.9997463500F,
+  0.9997527406F, 0.9997590103F, 0.9997651606F, 0.9997711930F,
+  0.9997771089F, 0.9997829098F, 0.9997885973F, 0.9997941728F,
+  0.9997996378F, 0.9998049936F, 0.9998102419F, 0.9998153839F,
+  0.9998204211F, 0.9998253550F, 0.9998301868F, 0.9998349182F,
+  0.9998395503F, 0.9998440847F, 0.9998485226F, 0.9998528654F,
+  0.9998571146F, 0.9998612713F, 0.9998653370F, 0.9998693130F,
+  0.9998732007F, 0.9998770012F, 0.9998807159F, 0.9998843461F,
+  0.9998878931F, 0.9998913581F, 0.9998947424F, 0.9998980473F,
+  0.9999012740F, 0.9999044237F, 0.9999074976F, 0.9999104971F,
+  0.9999134231F, 0.9999162771F, 0.9999190601F, 0.9999217733F,
+  0.9999244179F, 0.9999269950F, 0.9999295058F, 0.9999319515F,
+  0.9999343332F, 0.9999366519F, 0.9999389088F, 0.9999411050F,
+  0.9999432416F, 0.9999453196F, 0.9999473402F, 0.9999493044F,
+  0.9999512132F, 0.9999530677F, 0.9999548690F, 0.9999566180F,
+  0.9999583157F, 0.9999599633F, 0.9999615616F, 0.9999631116F,
+  0.9999646144F, 0.9999660709F, 0.9999674820F, 0.9999688487F,
+  0.9999701719F, 0.9999714526F, 0.9999726917F, 0.9999738900F,
+  0.9999750486F, 0.9999761682F, 0.9999772497F, 0.9999782941F,
+  0.9999793021F, 0.9999802747F, 0.9999812126F, 0.9999821167F,
+  0.9999829878F, 0.9999838268F, 0.9999846343F, 0.9999854113F,
+  0.9999861584F, 0.9999868765F, 0.9999875664F, 0.9999882287F,
+  0.9999888642F, 0.9999894736F, 0.9999900577F, 0.9999906172F,
+  0.9999911528F, 0.9999916651F, 0.9999921548F, 0.9999926227F,
+  0.9999930693F, 0.9999934954F, 0.9999939015F, 0.9999942883F,
+  0.9999946564F, 0.9999950064F, 0.9999953390F, 0.9999956547F,
+  0.9999959541F, 0.9999962377F, 0.9999965062F, 0.9999967601F,
+  0.9999969998F, 0.9999972260F, 0.9999974392F, 0.9999976399F,
+  0.9999978285F, 0.9999980056F, 0.9999981716F, 0.9999983271F,
+  0.9999984724F, 0.9999986081F, 0.9999987345F, 0.9999988521F,
+  0.9999989613F, 0.9999990625F, 0.9999991562F, 0.9999992426F,
+  0.9999993223F, 0.9999993954F, 0.9999994625F, 0.9999995239F,
+  0.9999995798F, 0.9999996307F, 0.9999996768F, 0.9999997184F,
+  0.9999997559F, 0.9999997895F, 0.9999998195F, 0.9999998462F,
+  0.9999998698F, 0.9999998906F, 0.9999999088F, 0.9999999246F,
+  0.9999999383F, 0.9999999500F, 0.9999999600F, 0.9999999684F,
+  0.9999999754F, 0.9999999811F, 0.9999999858F, 0.9999999896F,
+  0.9999999925F, 0.9999999948F, 0.9999999965F, 0.9999999978F,
+  0.9999999986F, 0.9999999992F, 0.9999999996F, 0.9999999998F,
+  0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
+};
+
+static const float vwin8192[4096] = {
+  0.0000000578F, 0.0000005198F, 0.0000014438F, 0.0000028299F,
+  0.0000046780F, 0.0000069882F, 0.0000097604F, 0.0000129945F,
+  0.0000166908F, 0.0000208490F, 0.0000254692F, 0.0000305515F,
+  0.0000360958F, 0.0000421021F, 0.0000485704F, 0.0000555006F,
+  0.0000628929F, 0.0000707472F, 0.0000790635F, 0.0000878417F,
+  0.0000970820F, 0.0001067842F, 0.0001169483F, 0.0001275744F,
+  0.0001386625F, 0.0001502126F, 0.0001622245F, 0.0001746984F,
+  0.0001876343F, 0.0002010320F, 0.0002148917F, 0.0002292132F,
+  0.0002439967F, 0.0002592421F, 0.0002749493F, 0.0002911184F,
+  0.0003077493F, 0.0003248421F, 0.0003423967F, 0.0003604132F,
+  0.0003788915F, 0.0003978316F, 0.0004172335F, 0.0004370971F,
+  0.0004574226F, 0.0004782098F, 0.0004994587F, 0.0005211694F,
+  0.0005433418F, 0.0005659759F, 0.0005890717F, 0.0006126292F,
+  0.0006366484F, 0.0006611292F, 0.0006860716F, 0.0007114757F,
+  0.0007373414F, 0.0007636687F, 0.0007904576F, 0.0008177080F,
+  0.0008454200F, 0.0008735935F, 0.0009022285F, 0.0009313250F,
+  0.0009608830F, 0.0009909025F, 0.0010213834F, 0.0010523257F,
+  0.0010837295F, 0.0011155946F, 0.0011479211F, 0.0011807090F,
+  0.0012139582F, 0.0012476687F, 0.0012818405F, 0.0013164736F,
+  0.0013515679F, 0.0013871235F, 0.0014231402F, 0.0014596182F,
+  0.0014965573F, 0.0015339576F, 0.0015718190F, 0.0016101415F,
+  0.0016489251F, 0.0016881698F, 0.0017278754F, 0.0017680421F,
+  0.0018086698F, 0.0018497584F, 0.0018913080F, 0.0019333185F,
+  0.0019757898F, 0.0020187221F, 0.0020621151F, 0.0021059690F,
+  0.0021502837F, 0.0021950591F, 0.0022402953F, 0.0022859921F,
+  0.0023321497F, 0.0023787679F, 0.0024258467F, 0.0024733861F,
+  0.0025213861F, 0.0025698466F, 0.0026187676F, 0.0026681491F,
+  0.0027179911F, 0.0027682935F, 0.0028190562F, 0.0028702794F,
+  0.0029219628F, 0.0029741066F, 0.0030267107F, 0.0030797749F,
+  0.0031332994F, 0.0031872841F, 0.0032417289F, 0.0032966338F,
+  0.0033519988F, 0.0034078238F, 0.0034641089F, 0.0035208539F,
+  0.0035780589F, 0.0036357237F, 0.0036938485F, 0.0037524331F,
+  0.0038114775F, 0.0038709817F, 0.0039309456F, 0.0039913692F,
+  0.0040522524F, 0.0041135953F, 0.0041753978F, 0.0042376599F,
+  0.0043003814F, 0.0043635624F, 0.0044272029F, 0.0044913028F,
+  0.0045558620F, 0.0046208806F, 0.0046863585F, 0.0047522955F,
+  0.0048186919F, 0.0048855473F, 0.0049528619F, 0.0050206356F,
+  0.0050888684F, 0.0051575601F, 0.0052267108F, 0.0052963204F,
+  0.0053663890F, 0.0054369163F, 0.0055079025F, 0.0055793474F,
+  0.0056512510F, 0.0057236133F, 0.0057964342F, 0.0058697137F,
+  0.0059434517F, 0.0060176482F, 0.0060923032F, 0.0061674166F,
+  0.0062429883F, 0.0063190183F, 0.0063955066F, 0.0064724532F,
+  0.0065498579F, 0.0066277207F, 0.0067060416F, 0.0067848205F,
+  0.0068640575F, 0.0069437523F, 0.0070239051F, 0.0071045157F,
+  0.0071855840F, 0.0072671102F, 0.0073490940F, 0.0074315355F,
+  0.0075144345F, 0.0075977911F, 0.0076816052F, 0.0077658768F,
+  0.0078506057F, 0.0079357920F, 0.0080214355F, 0.0081075363F,
+  0.0081940943F, 0.0082811094F, 0.0083685816F, 0.0084565108F,
+  0.0085448970F, 0.0086337401F, 0.0087230401F, 0.0088127969F,
+  0.0089030104F, 0.0089936807F, 0.0090848076F, 0.0091763911F,
+  0.0092684311F, 0.0093609276F, 0.0094538805F, 0.0095472898F,
+  0.0096411554F, 0.0097354772F, 0.0098302552F, 0.0099254894F,
+  0.0100211796F, 0.0101173259F, 0.0102139281F, 0.0103109863F,
+  0.0104085002F, 0.0105064700F, 0.0106048955F, 0.0107037766F,
+  0.0108031133F, 0.0109029056F, 0.0110031534F, 0.0111038565F,
+  0.0112050151F, 0.0113066289F, 0.0114086980F, 0.0115112222F,
+  0.0116142015F, 0.0117176359F, 0.0118215252F, 0.0119258695F,
+  0.0120306686F, 0.0121359225F, 0.0122416312F, 0.0123477944F,
+  0.0124544123F, 0.0125614847F, 0.0126690116F, 0.0127769928F,
+  0.0128854284F, 0.0129943182F, 0.0131036623F, 0.0132134604F,
+  0.0133237126F, 0.0134344188F, 0.0135455790F, 0.0136571929F,
+  0.0137692607F, 0.0138817821F, 0.0139947572F, 0.0141081859F,
+  0.0142220681F, 0.0143364037F, 0.0144511927F, 0.0145664350F,
+  0.0146821304F, 0.0147982791F, 0.0149148808F, 0.0150319355F,
+  0.0151494431F, 0.0152674036F, 0.0153858168F, 0.0155046828F,
+  0.0156240014F, 0.0157437726F, 0.0158639962F, 0.0159846723F,
+  0.0161058007F, 0.0162273814F, 0.0163494142F, 0.0164718991F,
+  0.0165948361F, 0.0167182250F, 0.0168420658F, 0.0169663584F,
+  0.0170911027F, 0.0172162987F, 0.0173419462F, 0.0174680452F,
+  0.0175945956F, 0.0177215974F, 0.0178490504F, 0.0179769545F,
+  0.0181053098F, 0.0182341160F, 0.0183633732F, 0.0184930812F,
+  0.0186232399F, 0.0187538494F, 0.0188849094F, 0.0190164200F,
+  0.0191483809F, 0.0192807923F, 0.0194136539F, 0.0195469656F,
+  0.0196807275F, 0.0198149394F, 0.0199496012F, 0.0200847128F,
+  0.0202202742F, 0.0203562853F, 0.0204927460F, 0.0206296561F,
+  0.0207670157F, 0.0209048245F, 0.0210430826F, 0.0211817899F,
+  0.0213209462F, 0.0214605515F, 0.0216006057F, 0.0217411086F,
+  0.0218820603F, 0.0220234605F, 0.0221653093F, 0.0223076066F,
+  0.0224503521F, 0.0225935459F, 0.0227371879F, 0.0228812779F,
+  0.0230258160F, 0.0231708018F, 0.0233162355F, 0.0234621169F,
+  0.0236084459F, 0.0237552224F, 0.0239024462F, 0.0240501175F,
+  0.0241982359F, 0.0243468015F, 0.0244958141F, 0.0246452736F,
+  0.0247951800F, 0.0249455331F, 0.0250963329F, 0.0252475792F,
+  0.0253992720F, 0.0255514111F, 0.0257039965F, 0.0258570281F,
+  0.0260105057F, 0.0261644293F, 0.0263187987F, 0.0264736139F,
+  0.0266288747F, 0.0267845811F, 0.0269407330F, 0.0270973302F,
+  0.0272543727F, 0.0274118604F, 0.0275697930F, 0.0277281707F,
+  0.0278869932F, 0.0280462604F, 0.0282059723F, 0.0283661287F,
+  0.0285267295F, 0.0286877747F, 0.0288492641F, 0.0290111976F,
+  0.0291735751F, 0.0293363965F, 0.0294996617F, 0.0296633706F,
+  0.0298275231F, 0.0299921190F, 0.0301571583F, 0.0303226409F,
+  0.0304885667F, 0.0306549354F, 0.0308217472F, 0.0309890017F,
+  0.0311566989F, 0.0313248388F, 0.0314934211F, 0.0316624459F,
+  0.0318319128F, 0.0320018220F, 0.0321721732F, 0.0323429663F,
+  0.0325142013F, 0.0326858779F, 0.0328579962F, 0.0330305559F,
+  0.0332035570F, 0.0333769994F, 0.0335508829F, 0.0337252074F,
+  0.0338999728F, 0.0340751790F, 0.0342508259F, 0.0344269134F,
+  0.0346034412F, 0.0347804094F, 0.0349578178F, 0.0351356663F,
+  0.0353139548F, 0.0354926831F, 0.0356718511F, 0.0358514588F,
+  0.0360315059F, 0.0362119924F, 0.0363929182F, 0.0365742831F,
+  0.0367560870F, 0.0369383297F, 0.0371210113F, 0.0373041315F,
+  0.0374876902F, 0.0376716873F, 0.0378561226F, 0.0380409961F,
+  0.0382263077F, 0.0384120571F, 0.0385982443F, 0.0387848691F,
+  0.0389719315F, 0.0391594313F, 0.0393473683F, 0.0395357425F,
+  0.0397245537F, 0.0399138017F, 0.0401034866F, 0.0402936080F,
+  0.0404841660F, 0.0406751603F, 0.0408665909F, 0.0410584576F,
+  0.0412507603F, 0.0414434988F, 0.0416366731F, 0.0418302829F,
+  0.0420243282F, 0.0422188088F, 0.0424137246F, 0.0426090755F,
+  0.0428048613F, 0.0430010819F, 0.0431977371F, 0.0433948269F,
+  0.0435923511F, 0.0437903095F, 0.0439887020F, 0.0441875285F,
+  0.0443867889F, 0.0445864830F, 0.0447866106F, 0.0449871717F,
+  0.0451881661F, 0.0453895936F, 0.0455914542F, 0.0457937477F,
+  0.0459964738F, 0.0461996326F, 0.0464032239F, 0.0466072475F,
+  0.0468117032F, 0.0470165910F, 0.0472219107F, 0.0474276622F,
+  0.0476338452F, 0.0478404597F, 0.0480475056F, 0.0482549827F,
+  0.0484628907F, 0.0486712297F, 0.0488799994F, 0.0490891998F,
+  0.0492988306F, 0.0495088917F, 0.0497193830F, 0.0499303043F,
+  0.0501416554F, 0.0503534363F, 0.0505656468F, 0.0507782867F,
+  0.0509913559F, 0.0512048542F, 0.0514187815F, 0.0516331376F,
+  0.0518479225F, 0.0520631358F, 0.0522787775F, 0.0524948475F,
+  0.0527113455F, 0.0529282715F, 0.0531456252F, 0.0533634066F,
+  0.0535816154F, 0.0538002515F, 0.0540193148F, 0.0542388051F,
+  0.0544587222F, 0.0546790660F, 0.0548998364F, 0.0551210331F,
+  0.0553426561F, 0.0555647051F, 0.0557871801F, 0.0560100807F,
+  0.0562334070F, 0.0564571587F, 0.0566813357F, 0.0569059378F,
+  0.0571309649F, 0.0573564168F, 0.0575822933F, 0.0578085942F,
+  0.0580353195F, 0.0582624689F, 0.0584900423F, 0.0587180396F,
+  0.0589464605F, 0.0591753049F, 0.0594045726F, 0.0596342635F,
+  0.0598643774F, 0.0600949141F, 0.0603258735F, 0.0605572555F,
+  0.0607890597F, 0.0610212862F, 0.0612539346F, 0.0614870049F,
+  0.0617204968F, 0.0619544103F, 0.0621887451F, 0.0624235010F,
+  0.0626586780F, 0.0628942758F, 0.0631302942F, 0.0633667331F,
+  0.0636035923F, 0.0638408717F, 0.0640785710F, 0.0643166901F,
+  0.0645552288F, 0.0647941870F, 0.0650335645F, 0.0652733610F,
+  0.0655135765F, 0.0657542108F, 0.0659952636F, 0.0662367348F,
+  0.0664786242F, 0.0667209316F, 0.0669636570F, 0.0672068000F,
+  0.0674503605F, 0.0676943384F, 0.0679387334F, 0.0681835454F,
+  0.0684287742F, 0.0686744196F, 0.0689204814F, 0.0691669595F,
+  0.0694138536F, 0.0696611637F, 0.0699088894F, 0.0701570307F,
+  0.0704055873F, 0.0706545590F, 0.0709039458F, 0.0711537473F,
+  0.0714039634F, 0.0716545939F, 0.0719056387F, 0.0721570975F,
+  0.0724089702F, 0.0726612565F, 0.0729139563F, 0.0731670694F,
+  0.0734205956F, 0.0736745347F, 0.0739288866F, 0.0741836510F,
+  0.0744388277F, 0.0746944166F, 0.0749504175F, 0.0752068301F,
+  0.0754636543F, 0.0757208899F, 0.0759785367F, 0.0762365946F,
+  0.0764950632F, 0.0767539424F, 0.0770132320F, 0.0772729319F,
+  0.0775330418F, 0.0777935616F, 0.0780544909F, 0.0783158298F,
+  0.0785775778F, 0.0788397349F, 0.0791023009F, 0.0793652755F,
+  0.0796286585F, 0.0798924498F, 0.0801566492F, 0.0804212564F,
+  0.0806862712F, 0.0809516935F, 0.0812175231F, 0.0814837597F,
+  0.0817504031F, 0.0820174532F, 0.0822849097F, 0.0825527724F,
+  0.0828210412F, 0.0830897158F, 0.0833587960F, 0.0836282816F,
+  0.0838981724F, 0.0841684682F, 0.0844391688F, 0.0847102740F,
+  0.0849817835F, 0.0852536973F, 0.0855260150F, 0.0857987364F,
+  0.0860718614F, 0.0863453897F, 0.0866193211F, 0.0868936554F,
+  0.0871683924F, 0.0874435319F, 0.0877190737F, 0.0879950175F,
+  0.0882713632F, 0.0885481105F, 0.0888252592F, 0.0891028091F,
+  0.0893807600F, 0.0896591117F, 0.0899378639F, 0.0902170165F,
+  0.0904965692F, 0.0907765218F, 0.0910568740F, 0.0913376258F,
+  0.0916187767F, 0.0919003268F, 0.0921822756F, 0.0924646230F,
+  0.0927473687F, 0.0930305126F, 0.0933140545F, 0.0935979940F,
+  0.0938823310F, 0.0941670653F, 0.0944521966F, 0.0947377247F,
+  0.0950236494F, 0.0953099704F, 0.0955966876F, 0.0958838007F,
+  0.0961713094F, 0.0964592136F, 0.0967475131F, 0.0970362075F,
+  0.0973252967F, 0.0976147805F, 0.0979046585F, 0.0981949307F,
+  0.0984855967F, 0.0987766563F, 0.0990681093F, 0.0993599555F,
+  0.0996521945F, 0.0999448263F, 0.1002378506F, 0.1005312671F,
+  0.1008250755F, 0.1011192757F, 0.1014138675F, 0.1017088505F,
+  0.1020042246F, 0.1022999895F, 0.1025961450F, 0.1028926909F,
+  0.1031896268F, 0.1034869526F, 0.1037846680F, 0.1040827729F,
+  0.1043812668F, 0.1046801497F, 0.1049794213F, 0.1052790813F,
+  0.1055791294F, 0.1058795656F, 0.1061803894F, 0.1064816006F,
+  0.1067831991F, 0.1070851846F, 0.1073875568F, 0.1076903155F,
+  0.1079934604F, 0.1082969913F, 0.1086009079F, 0.1089052101F,
+  0.1092098975F, 0.1095149699F, 0.1098204270F, 0.1101262687F,
+  0.1104324946F, 0.1107391045F, 0.1110460982F, 0.1113534754F,
+  0.1116612359F, 0.1119693793F, 0.1122779055F, 0.1125868142F,
+  0.1128961052F, 0.1132057781F, 0.1135158328F, 0.1138262690F,
+  0.1141370863F, 0.1144482847F, 0.1147598638F, 0.1150718233F,
+  0.1153841631F, 0.1156968828F, 0.1160099822F, 0.1163234610F,
+  0.1166373190F, 0.1169515559F, 0.1172661714F, 0.1175811654F,
+  0.1178965374F, 0.1182122874F, 0.1185284149F, 0.1188449198F,
+  0.1191618018F, 0.1194790606F, 0.1197966960F, 0.1201147076F,
+  0.1204330953F, 0.1207518587F, 0.1210709976F, 0.1213905118F,
+  0.1217104009F, 0.1220306647F, 0.1223513029F, 0.1226723153F,
+  0.1229937016F, 0.1233154615F, 0.1236375948F, 0.1239601011F,
+  0.1242829803F, 0.1246062319F, 0.1249298559F, 0.1252538518F,
+  0.1255782195F, 0.1259029586F, 0.1262280689F, 0.1265535501F,
+  0.1268794019F, 0.1272056241F, 0.1275322163F, 0.1278591784F,
+  0.1281865099F, 0.1285142108F, 0.1288422805F, 0.1291707190F,
+  0.1294995259F, 0.1298287009F, 0.1301582437F, 0.1304881542F,
+  0.1308184319F, 0.1311490766F, 0.1314800881F, 0.1318114660F,
+  0.1321432100F, 0.1324753200F, 0.1328077955F, 0.1331406364F,
+  0.1334738422F, 0.1338074129F, 0.1341413479F, 0.1344756472F,
+  0.1348103103F, 0.1351453370F, 0.1354807270F, 0.1358164801F,
+  0.1361525959F, 0.1364890741F, 0.1368259145F, 0.1371631167F,
+  0.1375006805F, 0.1378386056F, 0.1381768917F, 0.1385155384F,
+  0.1388545456F, 0.1391939129F, 0.1395336400F, 0.1398737266F,
+  0.1402141724F, 0.1405549772F, 0.1408961406F, 0.1412376623F,
+  0.1415795421F, 0.1419217797F, 0.1422643746F, 0.1426073268F,
+  0.1429506358F, 0.1432943013F, 0.1436383231F, 0.1439827008F,
+  0.1443274342F, 0.1446725229F, 0.1450179667F, 0.1453637652F,
+  0.1457099181F, 0.1460564252F, 0.1464032861F, 0.1467505006F,
+  0.1470980682F, 0.1474459888F, 0.1477942620F, 0.1481428875F,
+  0.1484918651F, 0.1488411942F, 0.1491908748F, 0.1495409065F,
+  0.1498912889F, 0.1502420218F, 0.1505931048F, 0.1509445376F,
+  0.1512963200F, 0.1516484516F, 0.1520009321F, 0.1523537612F,
+  0.1527069385F, 0.1530604638F, 0.1534143368F, 0.1537685571F,
+  0.1541231244F, 0.1544780384F, 0.1548332987F, 0.1551889052F,
+  0.1555448574F, 0.1559011550F, 0.1562577978F, 0.1566147853F,
+  0.1569721173F, 0.1573297935F, 0.1576878135F, 0.1580461771F,
+  0.1584048838F, 0.1587639334F, 0.1591233255F, 0.1594830599F,
+  0.1598431361F, 0.1602035540F, 0.1605643131F, 0.1609254131F,
+  0.1612868537F, 0.1616486346F, 0.1620107555F, 0.1623732160F,
+  0.1627360158F, 0.1630991545F, 0.1634626319F, 0.1638264476F,
+  0.1641906013F, 0.1645550926F, 0.1649199212F, 0.1652850869F,
+  0.1656505892F, 0.1660164278F, 0.1663826024F, 0.1667491127F,
+  0.1671159583F, 0.1674831388F, 0.1678506541F, 0.1682185036F,
+  0.1685866872F, 0.1689552044F, 0.1693240549F, 0.1696932384F,
+  0.1700627545F, 0.1704326029F, 0.1708027833F, 0.1711732952F,
+  0.1715441385F, 0.1719153127F, 0.1722868175F, 0.1726586526F,
+  0.1730308176F, 0.1734033121F, 0.1737761359F, 0.1741492886F,
+  0.1745227698F, 0.1748965792F, 0.1752707164F, 0.1756451812F,
+  0.1760199731F, 0.1763950918F, 0.1767705370F, 0.1771463083F,
+  0.1775224054F, 0.1778988279F, 0.1782755754F, 0.1786526477F,
+  0.1790300444F, 0.1794077651F, 0.1797858094F, 0.1801641771F,
+  0.1805428677F, 0.1809218810F, 0.1813012165F, 0.1816808739F,
+  0.1820608528F, 0.1824411530F, 0.1828217739F, 0.1832027154F,
+  0.1835839770F, 0.1839655584F, 0.1843474592F, 0.1847296790F,
+  0.1851122175F, 0.1854950744F, 0.1858782492F, 0.1862617417F,
+  0.1866455514F, 0.1870296780F, 0.1874141211F, 0.1877988804F,
+  0.1881839555F, 0.1885693461F, 0.1889550517F, 0.1893410721F,
+  0.1897274068F, 0.1901140555F, 0.1905010178F, 0.1908882933F,
+  0.1912758818F, 0.1916637828F, 0.1920519959F, 0.1924405208F,
+  0.1928293571F, 0.1932185044F, 0.1936079625F, 0.1939977308F,
+  0.1943878091F, 0.1947781969F, 0.1951688939F, 0.1955598998F,
+  0.1959512141F, 0.1963428364F, 0.1967347665F, 0.1971270038F,
+  0.1975195482F, 0.1979123990F, 0.1983055561F, 0.1986990190F,
+  0.1990927873F, 0.1994868607F, 0.1998812388F, 0.2002759212F,
+  0.2006709075F, 0.2010661974F, 0.2014617904F, 0.2018576862F,
+  0.2022538844F, 0.2026503847F, 0.2030471865F, 0.2034442897F,
+  0.2038416937F, 0.2042393982F, 0.2046374028F, 0.2050357071F,
+  0.2054343107F, 0.2058332133F, 0.2062324145F, 0.2066319138F,
+  0.2070317110F, 0.2074318055F, 0.2078321970F, 0.2082328852F,
+  0.2086338696F, 0.2090351498F, 0.2094367255F, 0.2098385962F,
+  0.2102407617F, 0.2106432213F, 0.2110459749F, 0.2114490220F,
+  0.2118523621F, 0.2122559950F, 0.2126599202F, 0.2130641373F,
+  0.2134686459F, 0.2138734456F, 0.2142785361F, 0.2146839168F,
+  0.2150895875F, 0.2154955478F, 0.2159017972F, 0.2163083353F,
+  0.2167151617F, 0.2171222761F, 0.2175296780F, 0.2179373670F,
+  0.2183453428F, 0.2187536049F, 0.2191621529F, 0.2195709864F,
+  0.2199801051F, 0.2203895085F, 0.2207991961F, 0.2212091677F,
+  0.2216194228F, 0.2220299610F, 0.2224407818F, 0.2228518850F,
+  0.2232632699F, 0.2236749364F, 0.2240868839F, 0.2244991121F,
+  0.2249116204F, 0.2253244086F, 0.2257374763F, 0.2261508229F,
+  0.2265644481F, 0.2269783514F, 0.2273925326F, 0.2278069911F,
+  0.2282217265F, 0.2286367384F, 0.2290520265F, 0.2294675902F,
+  0.2298834292F, 0.2302995431F, 0.2307159314F, 0.2311325937F,
+  0.2315495297F, 0.2319667388F, 0.2323842207F, 0.2328019749F,
+  0.2332200011F, 0.2336382988F, 0.2340568675F, 0.2344757070F,
+  0.2348948166F, 0.2353141961F, 0.2357338450F, 0.2361537629F,
+  0.2365739493F, 0.2369944038F, 0.2374151261F, 0.2378361156F,
+  0.2382573720F, 0.2386788948F, 0.2391006836F, 0.2395227380F,
+  0.2399450575F, 0.2403676417F, 0.2407904902F, 0.2412136026F,
+  0.2416369783F, 0.2420606171F, 0.2424845185F, 0.2429086820F,
+  0.2433331072F, 0.2437577936F, 0.2441827409F, 0.2446079486F,
+  0.2450334163F, 0.2454591435F, 0.2458851298F, 0.2463113747F,
+  0.2467378779F, 0.2471646389F, 0.2475916573F, 0.2480189325F,
+  0.2484464643F, 0.2488742521F, 0.2493022955F, 0.2497305940F,
+  0.2501591473F, 0.2505879549F, 0.2510170163F, 0.2514463311F,
+  0.2518758989F, 0.2523057193F, 0.2527357916F, 0.2531661157F,
+  0.2535966909F, 0.2540275169F, 0.2544585931F, 0.2548899193F,
+  0.2553214948F, 0.2557533193F, 0.2561853924F, 0.2566177135F,
+  0.2570502822F, 0.2574830981F, 0.2579161608F, 0.2583494697F,
+  0.2587830245F, 0.2592168246F, 0.2596508697F, 0.2600851593F,
+  0.2605196929F, 0.2609544701F, 0.2613894904F, 0.2618247534F,
+  0.2622602586F, 0.2626960055F, 0.2631319938F, 0.2635682230F,
+  0.2640046925F, 0.2644414021F, 0.2648783511F, 0.2653155391F,
+  0.2657529657F, 0.2661906305F, 0.2666285329F, 0.2670666725F,
+  0.2675050489F, 0.2679436616F, 0.2683825101F, 0.2688215940F,
+  0.2692609127F, 0.2697004660F, 0.2701402532F, 0.2705802739F,
+  0.2710205278F, 0.2714610142F, 0.2719017327F, 0.2723426830F,
+  0.2727838644F, 0.2732252766F, 0.2736669191F, 0.2741087914F,
+  0.2745508930F, 0.2749932235F, 0.2754357824F, 0.2758785693F,
+  0.2763215837F, 0.2767648251F, 0.2772082930F, 0.2776519870F,
+  0.2780959066F, 0.2785400513F, 0.2789844207F, 0.2794290143F,
+  0.2798738316F, 0.2803188722F, 0.2807641355F, 0.2812096211F,
+  0.2816553286F, 0.2821012574F, 0.2825474071F, 0.2829937773F,
+  0.2834403673F, 0.2838871768F, 0.2843342053F, 0.2847814523F,
+  0.2852289174F, 0.2856765999F, 0.2861244996F, 0.2865726159F,
+  0.2870209482F, 0.2874694962F, 0.2879182594F, 0.2883672372F,
+  0.2888164293F, 0.2892658350F, 0.2897154540F, 0.2901652858F,
+  0.2906153298F, 0.2910655856F, 0.2915160527F, 0.2919667306F,
+  0.2924176189F, 0.2928687171F, 0.2933200246F, 0.2937715409F,
+  0.2942232657F, 0.2946751984F, 0.2951273386F, 0.2955796856F,
+  0.2960322391F, 0.2964849986F, 0.2969379636F, 0.2973911335F,
+  0.2978445080F, 0.2982980864F, 0.2987518684F, 0.2992058534F,
+  0.2996600409F, 0.3001144305F, 0.3005690217F, 0.3010238139F,
+  0.3014788067F, 0.3019339995F, 0.3023893920F, 0.3028449835F,
+  0.3033007736F, 0.3037567618F, 0.3042129477F, 0.3046693306F,
+  0.3051259102F, 0.3055826859F, 0.3060396572F, 0.3064968236F,
+  0.3069541847F, 0.3074117399F, 0.3078694887F, 0.3083274307F,
+  0.3087855653F, 0.3092438920F, 0.3097024104F, 0.3101611199F,
+  0.3106200200F, 0.3110791103F, 0.3115383902F, 0.3119978592F,
+  0.3124575169F, 0.3129173627F, 0.3133773961F, 0.3138376166F,
+  0.3142980238F, 0.3147586170F, 0.3152193959F, 0.3156803598F,
+  0.3161415084F, 0.3166028410F, 0.3170643573F, 0.3175260566F,
+  0.3179879384F, 0.3184500023F, 0.3189122478F, 0.3193746743F,
+  0.3198372814F, 0.3203000685F, 0.3207630351F, 0.3212261807F,
+  0.3216895048F, 0.3221530069F, 0.3226166865F, 0.3230805430F,
+  0.3235445760F, 0.3240087849F, 0.3244731693F, 0.3249377285F,
+  0.3254024622F, 0.3258673698F, 0.3263324507F, 0.3267977045F,
+  0.3272631306F, 0.3277287286F, 0.3281944978F, 0.3286604379F,
+  0.3291265482F, 0.3295928284F, 0.3300592777F, 0.3305258958F,
+  0.3309926821F, 0.3314596361F, 0.3319267573F, 0.3323940451F,
+  0.3328614990F, 0.3333291186F, 0.3337969033F, 0.3342648525F,
+  0.3347329658F, 0.3352012427F, 0.3356696825F, 0.3361382849F,
+  0.3366070492F, 0.3370759749F, 0.3375450616F, 0.3380143087F,
+  0.3384837156F, 0.3389532819F, 0.3394230071F, 0.3398928905F,
+  0.3403629317F, 0.3408331302F, 0.3413034854F, 0.3417739967F,
+  0.3422446638F, 0.3427154860F, 0.3431864628F, 0.3436575938F,
+  0.3441288782F, 0.3446003158F, 0.3450719058F, 0.3455436478F,
+  0.3460155412F, 0.3464875856F, 0.3469597804F, 0.3474321250F,
+  0.3479046189F, 0.3483772617F, 0.3488500527F, 0.3493229914F,
+  0.3497960774F, 0.3502693100F, 0.3507426887F, 0.3512162131F,
+  0.3516898825F, 0.3521636965F, 0.3526376545F, 0.3531117559F,
+  0.3535860003F, 0.3540603870F, 0.3545349157F, 0.3550095856F,
+  0.3554843964F, 0.3559593474F, 0.3564344381F, 0.3569096680F,
+  0.3573850366F, 0.3578605432F, 0.3583361875F, 0.3588119687F,
+  0.3592878865F, 0.3597639402F, 0.3602401293F, 0.3607164533F,
+  0.3611929117F, 0.3616695038F, 0.3621462292F, 0.3626230873F,
+  0.3631000776F, 0.3635771995F, 0.3640544525F, 0.3645318360F,
+  0.3650093496F, 0.3654869926F, 0.3659647645F, 0.3664426648F,
+  0.3669206930F, 0.3673988484F, 0.3678771306F, 0.3683555390F,
+  0.3688340731F, 0.3693127322F, 0.3697915160F, 0.3702704237F,
+  0.3707494549F, 0.3712286091F, 0.3717078857F, 0.3721872840F,
+  0.3726668037F, 0.3731464441F, 0.3736262047F, 0.3741060850F,
+  0.3745860843F, 0.3750662023F, 0.3755464382F, 0.3760267915F,
+  0.3765072618F, 0.3769878484F, 0.3774685509F, 0.3779493686F,
+  0.3784303010F, 0.3789113475F, 0.3793925076F, 0.3798737809F,
+  0.3803551666F, 0.3808366642F, 0.3813182733F, 0.3817999932F,
+  0.3822818234F, 0.3827637633F, 0.3832458124F, 0.3837279702F,
+  0.3842102360F, 0.3846926093F, 0.3851750897F, 0.3856576764F,
+  0.3861403690F, 0.3866231670F, 0.3871060696F, 0.3875890765F,
+  0.3880721870F, 0.3885554007F, 0.3890387168F, 0.3895221349F,
+  0.3900056544F, 0.3904892748F, 0.3909729955F, 0.3914568160F,
+  0.3919407356F, 0.3924247539F, 0.3929088702F, 0.3933930841F,
+  0.3938773949F, 0.3943618021F, 0.3948463052F, 0.3953309035F,
+  0.3958155966F, 0.3963003838F, 0.3967852646F, 0.3972702385F,
+  0.3977553048F, 0.3982404631F, 0.3987257127F, 0.3992110531F,
+  0.3996964838F, 0.4001820041F, 0.4006676136F, 0.4011533116F,
+  0.4016390976F, 0.4021249710F, 0.4026109313F, 0.4030969779F,
+  0.4035831102F, 0.4040693277F, 0.4045556299F, 0.4050420160F,
+  0.4055284857F, 0.4060150383F, 0.4065016732F, 0.4069883899F,
+  0.4074751879F, 0.4079620665F, 0.4084490252F, 0.4089360635F,
+  0.4094231807F, 0.4099103763F, 0.4103976498F, 0.4108850005F,
+  0.4113724280F, 0.4118599315F, 0.4123475107F, 0.4128351648F,
+  0.4133228934F, 0.4138106959F, 0.4142985716F, 0.4147865201F,
+  0.4152745408F, 0.4157626330F, 0.4162507963F, 0.4167390301F,
+  0.4172273337F, 0.4177157067F, 0.4182041484F, 0.4186926583F,
+  0.4191812359F, 0.4196698805F, 0.4201585915F, 0.4206473685F,
+  0.4211362108F, 0.4216251179F, 0.4221140892F, 0.4226031241F,
+  0.4230922221F, 0.4235813826F, 0.4240706050F, 0.4245598887F,
+  0.4250492332F, 0.4255386379F, 0.4260281022F, 0.4265176256F,
+  0.4270072075F, 0.4274968473F, 0.4279865445F, 0.4284762984F,
+  0.4289661086F, 0.4294559743F, 0.4299458951F, 0.4304358704F,
+  0.4309258996F, 0.4314159822F, 0.4319061175F, 0.4323963050F,
+  0.4328865441F, 0.4333768342F, 0.4338671749F, 0.4343575654F,
+  0.4348480052F, 0.4353384938F, 0.4358290306F, 0.4363196149F,
+  0.4368102463F, 0.4373009241F, 0.4377916478F, 0.4382824168F,
+  0.4387732305F, 0.4392640884F, 0.4397549899F, 0.4402459343F,
+  0.4407369212F, 0.4412279499F, 0.4417190198F, 0.4422101305F,
+  0.4427012813F, 0.4431924717F, 0.4436837010F, 0.4441749686F,
+  0.4446662742F, 0.4451576169F, 0.4456489963F, 0.4461404118F,
+  0.4466318628F, 0.4471233487F, 0.4476148690F, 0.4481064230F,
+  0.4485980103F, 0.4490896302F, 0.4495812821F, 0.4500729654F,
+  0.4505646797F, 0.4510564243F, 0.4515481986F, 0.4520400021F,
+  0.4525318341F, 0.4530236942F, 0.4535155816F, 0.4540074959F,
+  0.4544994365F, 0.4549914028F, 0.4554833941F, 0.4559754100F,
+  0.4564674499F, 0.4569595131F, 0.4574515991F, 0.4579437074F,
+  0.4584358372F, 0.4589279881F, 0.4594201595F, 0.4599123508F,
+  0.4604045615F, 0.4608967908F, 0.4613890383F, 0.4618813034F,
+  0.4623735855F, 0.4628658841F, 0.4633581984F, 0.4638505281F,
+  0.4643428724F, 0.4648352308F, 0.4653276028F, 0.4658199877F,
+  0.4663123849F, 0.4668047940F, 0.4672972143F, 0.4677896451F,
+  0.4682820861F, 0.4687745365F, 0.4692669958F, 0.4697594634F,
+  0.4702519387F, 0.4707444211F, 0.4712369102F, 0.4717294052F,
+  0.4722219056F, 0.4727144109F, 0.4732069204F, 0.4736994336F,
+  0.4741919498F, 0.4746844686F, 0.4751769893F, 0.4756695113F,
+  0.4761620341F, 0.4766545571F, 0.4771470797F, 0.4776396013F,
+  0.4781321213F, 0.4786246392F, 0.4791171544F, 0.4796096663F,
+  0.4801021744F, 0.4805946779F, 0.4810871765F, 0.4815796694F,
+  0.4820721561F, 0.4825646360F, 0.4830571086F, 0.4835495732F,
+  0.4840420293F, 0.4845344763F, 0.4850269136F, 0.4855193407F,
+  0.4860117569F, 0.4865041617F, 0.4869965545F, 0.4874889347F,
+  0.4879813018F, 0.4884736551F, 0.4889659941F, 0.4894583182F,
+  0.4899506268F, 0.4904429193F, 0.4909351952F, 0.4914274538F,
+  0.4919196947F, 0.4924119172F, 0.4929041207F, 0.4933963046F,
+  0.4938884685F, 0.4943806116F, 0.4948727335F, 0.4953648335F,
+  0.4958569110F, 0.4963489656F, 0.4968409965F, 0.4973330032F,
+  0.4978249852F, 0.4983169419F, 0.4988088726F, 0.4993007768F,
+  0.4997926539F, 0.5002845034F, 0.5007763247F, 0.5012681171F,
+  0.5017598801F, 0.5022516132F, 0.5027433157F, 0.5032349871F,
+  0.5037266268F, 0.5042182341F, 0.5047098086F, 0.5052013497F,
+  0.5056928567F, 0.5061843292F, 0.5066757664F, 0.5071671679F,
+  0.5076585330F, 0.5081498613F, 0.5086411520F, 0.5091324047F,
+  0.5096236187F, 0.5101147934F, 0.5106059284F, 0.5110970230F,
+  0.5115880766F, 0.5120790887F, 0.5125700587F, 0.5130609860F,
+  0.5135518700F, 0.5140427102F, 0.5145335059F, 0.5150242566F,
+  0.5155149618F, 0.5160056208F, 0.5164962331F, 0.5169867980F,
+  0.5174773151F, 0.5179677837F, 0.5184582033F, 0.5189485733F,
+  0.5194388931F, 0.5199291621F, 0.5204193798F, 0.5209095455F,
+  0.5213996588F, 0.5218897190F, 0.5223797256F, 0.5228696779F,
+  0.5233595755F, 0.5238494177F, 0.5243392039F, 0.5248289337F,
+  0.5253186063F, 0.5258082213F, 0.5262977781F, 0.5267872760F,
+  0.5272767146F, 0.5277660932F, 0.5282554112F, 0.5287446682F,
+  0.5292338635F, 0.5297229965F, 0.5302120667F, 0.5307010736F,
+  0.5311900164F, 0.5316788947F, 0.5321677079F, 0.5326564554F,
+  0.5331451366F, 0.5336337511F, 0.5341222981F, 0.5346107771F,
+  0.5350991876F, 0.5355875290F, 0.5360758007F, 0.5365640021F,
+  0.5370521327F, 0.5375401920F, 0.5380281792F, 0.5385160939F,
+  0.5390039355F, 0.5394917034F, 0.5399793971F, 0.5404670159F,
+  0.5409545594F, 0.5414420269F, 0.5419294179F, 0.5424167318F,
+  0.5429039680F, 0.5433911261F, 0.5438782053F, 0.5443652051F,
+  0.5448521250F, 0.5453389644F, 0.5458257228F, 0.5463123995F,
+  0.5467989940F, 0.5472855057F, 0.5477719341F, 0.5482582786F,
+  0.5487445387F, 0.5492307137F, 0.5497168031F, 0.5502028063F,
+  0.5506887228F, 0.5511745520F, 0.5516602934F, 0.5521459463F,
+  0.5526315103F, 0.5531169847F, 0.5536023690F, 0.5540876626F,
+  0.5545728649F, 0.5550579755F, 0.5555429937F, 0.5560279189F,
+  0.5565127507F, 0.5569974884F, 0.5574821315F, 0.5579666794F,
+  0.5584511316F, 0.5589354875F, 0.5594197465F, 0.5599039080F,
+  0.5603879716F, 0.5608719367F, 0.5613558026F, 0.5618395689F,
+  0.5623232350F, 0.5628068002F, 0.5632902642F, 0.5637736262F,
+  0.5642568858F, 0.5647400423F, 0.5652230953F, 0.5657060442F,
+  0.5661888883F, 0.5666716272F, 0.5671542603F, 0.5676367870F,
+  0.5681192069F, 0.5686015192F, 0.5690837235F, 0.5695658192F,
+  0.5700478058F, 0.5705296827F, 0.5710114494F, 0.5714931052F,
+  0.5719746497F, 0.5724560822F, 0.5729374023F, 0.5734186094F,
+  0.5738997029F, 0.5743806823F, 0.5748615470F, 0.5753422965F,
+  0.5758229301F, 0.5763034475F, 0.5767838480F, 0.5772641310F,
+  0.5777442960F, 0.5782243426F, 0.5787042700F, 0.5791840778F,
+  0.5796637654F, 0.5801433322F, 0.5806227778F, 0.5811021016F,
+  0.5815813029F, 0.5820603814F, 0.5825393363F, 0.5830181673F,
+  0.5834968737F, 0.5839754549F, 0.5844539105F, 0.5849322399F,
+  0.5854104425F, 0.5858885179F, 0.5863664653F, 0.5868442844F,
+  0.5873219746F, 0.5877995353F, 0.5882769660F, 0.5887542661F,
+  0.5892314351F, 0.5897084724F, 0.5901853776F, 0.5906621500F,
+  0.5911387892F, 0.5916152945F, 0.5920916655F, 0.5925679016F,
+  0.5930440022F, 0.5935199669F, 0.5939957950F, 0.5944714861F,
+  0.5949470396F, 0.5954224550F, 0.5958977317F, 0.5963728692F,
+  0.5968478669F, 0.5973227244F, 0.5977974411F, 0.5982720163F,
+  0.5987464497F, 0.5992207407F, 0.5996948887F, 0.6001688932F,
+  0.6006427537F, 0.6011164696F, 0.6015900405F, 0.6020634657F,
+  0.6025367447F, 0.6030098770F, 0.6034828621F, 0.6039556995F,
+  0.6044283885F, 0.6049009288F, 0.6053733196F, 0.6058455606F,
+  0.6063176512F, 0.6067895909F, 0.6072613790F, 0.6077330152F,
+  0.6082044989F, 0.6086758295F, 0.6091470065F, 0.6096180294F,
+  0.6100888977F, 0.6105596108F, 0.6110301682F, 0.6115005694F,
+  0.6119708139F, 0.6124409011F, 0.6129108305F, 0.6133806017F,
+  0.6138502139F, 0.6143196669F, 0.6147889599F, 0.6152580926F,
+  0.6157270643F, 0.6161958746F, 0.6166645230F, 0.6171330088F,
+  0.6176013317F, 0.6180694910F, 0.6185374863F, 0.6190053171F,
+  0.6194729827F, 0.6199404828F, 0.6204078167F, 0.6208749841F,
+  0.6213419842F, 0.6218088168F, 0.6222754811F, 0.6227419768F,
+  0.6232083032F, 0.6236744600F, 0.6241404465F, 0.6246062622F,
+  0.6250719067F, 0.6255373795F, 0.6260026799F, 0.6264678076F,
+  0.6269327619F, 0.6273975425F, 0.6278621487F, 0.6283265800F,
+  0.6287908361F, 0.6292549163F, 0.6297188201F, 0.6301825471F,
+  0.6306460966F, 0.6311094683F, 0.6315726617F, 0.6320356761F,
+  0.6324985111F, 0.6329611662F, 0.6334236410F, 0.6338859348F,
+  0.6343480472F, 0.6348099777F, 0.6352717257F, 0.6357332909F,
+  0.6361946726F, 0.6366558704F, 0.6371168837F, 0.6375777122F,
+  0.6380383552F, 0.6384988123F, 0.6389590830F, 0.6394191668F,
+  0.6398790631F, 0.6403387716F, 0.6407982916F, 0.6412576228F,
+  0.6417167645F, 0.6421757163F, 0.6426344778F, 0.6430930483F,
+  0.6435514275F, 0.6440096149F, 0.6444676098F, 0.6449254119F,
+  0.6453830207F, 0.6458404356F, 0.6462976562F, 0.6467546820F,
+  0.6472115125F, 0.6476681472F, 0.6481245856F, 0.6485808273F,
+  0.6490368717F, 0.6494927183F, 0.6499483667F, 0.6504038164F,
+  0.6508590670F, 0.6513141178F, 0.6517689684F, 0.6522236185F,
+  0.6526780673F, 0.6531323146F, 0.6535863598F, 0.6540402024F,
+  0.6544938419F, 0.6549472779F, 0.6554005099F, 0.6558535373F,
+  0.6563063598F, 0.6567589769F, 0.6572113880F, 0.6576635927F,
+  0.6581155906F, 0.6585673810F, 0.6590189637F, 0.6594703380F,
+  0.6599215035F, 0.6603724598F, 0.6608232064F, 0.6612737427F,
+  0.6617240684F, 0.6621741829F, 0.6626240859F, 0.6630737767F,
+  0.6635232550F, 0.6639725202F, 0.6644215720F, 0.6648704098F,
+  0.6653190332F, 0.6657674417F, 0.6662156348F, 0.6666636121F,
+  0.6671113731F, 0.6675589174F, 0.6680062445F, 0.6684533538F,
+  0.6689002450F, 0.6693469177F, 0.6697933712F, 0.6702396052F,
+  0.6706856193F, 0.6711314129F, 0.6715769855F, 0.6720223369F,
+  0.6724674664F, 0.6729123736F, 0.6733570581F, 0.6738015194F,
+  0.6742457570F, 0.6746897706F, 0.6751335596F, 0.6755771236F,
+  0.6760204621F, 0.6764635747F, 0.6769064609F, 0.6773491204F,
+  0.6777915525F, 0.6782337570F, 0.6786757332F, 0.6791174809F,
+  0.6795589995F, 0.6800002886F, 0.6804413477F, 0.6808821765F,
+  0.6813227743F, 0.6817631409F, 0.6822032758F, 0.6826431785F,
+  0.6830828485F, 0.6835222855F, 0.6839614890F, 0.6844004585F,
+  0.6848391936F, 0.6852776939F, 0.6857159589F, 0.6861539883F,
+  0.6865917815F, 0.6870293381F, 0.6874666576F, 0.6879037398F,
+  0.6883405840F, 0.6887771899F, 0.6892135571F, 0.6896496850F,
+  0.6900855733F, 0.6905212216F, 0.6909566294F, 0.6913917963F,
+  0.6918267218F, 0.6922614055F, 0.6926958471F, 0.6931300459F,
+  0.6935640018F, 0.6939977141F, 0.6944311825F, 0.6948644066F,
+  0.6952973859F, 0.6957301200F, 0.6961626085F, 0.6965948510F,
+  0.6970268470F, 0.6974585961F, 0.6978900980F, 0.6983213521F,
+  0.6987523580F, 0.6991831154F, 0.6996136238F, 0.7000438828F,
+  0.7004738921F, 0.7009036510F, 0.7013331594F, 0.7017624166F,
+  0.7021914224F, 0.7026201763F, 0.7030486779F, 0.7034769268F,
+  0.7039049226F, 0.7043326648F, 0.7047601531F, 0.7051873870F,
+  0.7056143662F, 0.7060410902F, 0.7064675586F, 0.7068937711F,
+  0.7073197271F, 0.7077454264F, 0.7081708684F, 0.7085960529F,
+  0.7090209793F, 0.7094456474F, 0.7098700566F, 0.7102942066F,
+  0.7107180970F, 0.7111417274F, 0.7115650974F, 0.7119882066F,
+  0.7124110545F, 0.7128336409F, 0.7132559653F, 0.7136780272F,
+  0.7140998264F, 0.7145213624F, 0.7149426348F, 0.7153636433F,
+  0.7157843874F, 0.7162048668F, 0.7166250810F, 0.7170450296F,
+  0.7174647124F, 0.7178841289F, 0.7183032786F, 0.7187221613F,
+  0.7191407765F, 0.7195591239F, 0.7199772030F, 0.7203950135F,
+  0.7208125550F, 0.7212298271F, 0.7216468294F, 0.7220635616F,
+  0.7224800233F, 0.7228962140F, 0.7233121335F, 0.7237277813F,
+  0.7241431571F, 0.7245582604F, 0.7249730910F, 0.7253876484F,
+  0.7258019322F, 0.7262159422F, 0.7266296778F, 0.7270431388F,
+  0.7274563247F, 0.7278692353F, 0.7282818700F, 0.7286942287F,
+  0.7291063108F, 0.7295181160F, 0.7299296440F, 0.7303408944F,
+  0.7307518669F, 0.7311625609F, 0.7315729763F, 0.7319831126F,
+  0.7323929695F, 0.7328025466F, 0.7332118435F, 0.7336208600F,
+  0.7340295955F, 0.7344380499F, 0.7348462226F, 0.7352541134F,
+  0.7356617220F, 0.7360690478F, 0.7364760907F, 0.7368828502F,
+  0.7372893259F, 0.7376955176F, 0.7381014249F, 0.7385070475F,
+  0.7389123849F, 0.7393174368F, 0.7397222029F, 0.7401266829F,
+  0.7405308763F, 0.7409347829F, 0.7413384023F, 0.7417417341F,
+  0.7421447780F, 0.7425475338F, 0.7429500009F, 0.7433521791F,
+  0.7437540681F, 0.7441556674F, 0.7445569769F, 0.7449579960F,
+  0.7453587245F, 0.7457591621F, 0.7461593084F, 0.7465591631F,
+  0.7469587259F, 0.7473579963F, 0.7477569741F, 0.7481556590F,
+  0.7485540506F, 0.7489521486F, 0.7493499526F, 0.7497474623F,
+  0.7501446775F, 0.7505415977F, 0.7509382227F, 0.7513345521F,
+  0.7517305856F, 0.7521263229F, 0.7525217636F, 0.7529169074F,
+  0.7533117541F, 0.7537063032F, 0.7541005545F, 0.7544945076F,
+  0.7548881623F, 0.7552815182F, 0.7556745749F, 0.7560673323F,
+  0.7564597899F, 0.7568519474F, 0.7572438046F, 0.7576353611F,
+  0.7580266166F, 0.7584175708F, 0.7588082235F, 0.7591985741F,
+  0.7595886226F, 0.7599783685F, 0.7603678116F, 0.7607569515F,
+  0.7611457879F, 0.7615343206F, 0.7619225493F, 0.7623104735F,
+  0.7626980931F, 0.7630854078F, 0.7634724171F, 0.7638591209F,
+  0.7642455188F, 0.7646316106F, 0.7650173959F, 0.7654028744F,
+  0.7657880459F, 0.7661729100F, 0.7665574664F, 0.7669417150F,
+  0.7673256553F, 0.7677092871F, 0.7680926100F, 0.7684756239F,
+  0.7688583284F, 0.7692407232F, 0.7696228080F, 0.7700045826F,
+  0.7703860467F, 0.7707671999F, 0.7711480420F, 0.7715285728F,
+  0.7719087918F, 0.7722886989F, 0.7726682938F, 0.7730475762F,
+  0.7734265458F, 0.7738052023F, 0.7741835454F, 0.7745615750F,
+  0.7749392906F, 0.7753166921F, 0.7756937791F, 0.7760705514F,
+  0.7764470087F, 0.7768231508F, 0.7771989773F, 0.7775744880F,
+  0.7779496827F, 0.7783245610F, 0.7786991227F, 0.7790733676F,
+  0.7794472953F, 0.7798209056F, 0.7801941982F, 0.7805671729F,
+  0.7809398294F, 0.7813121675F, 0.7816841869F, 0.7820558873F,
+  0.7824272684F, 0.7827983301F, 0.7831690720F, 0.7835394940F,
+  0.7839095957F, 0.7842793768F, 0.7846488373F, 0.7850179767F,
+  0.7853867948F, 0.7857552914F, 0.7861234663F, 0.7864913191F,
+  0.7868588497F, 0.7872260578F, 0.7875929431F, 0.7879595055F,
+  0.7883257445F, 0.7886916601F, 0.7890572520F, 0.7894225198F,
+  0.7897874635F, 0.7901520827F, 0.7905163772F, 0.7908803468F,
+  0.7912439912F, 0.7916073102F, 0.7919703035F, 0.7923329710F,
+  0.7926953124F, 0.7930573274F, 0.7934190158F, 0.7937803774F,
+  0.7941414120F, 0.7945021193F, 0.7948624991F, 0.7952225511F,
+  0.7955822752F, 0.7959416711F, 0.7963007387F, 0.7966594775F,
+  0.7970178875F, 0.7973759685F, 0.7977337201F, 0.7980911422F,
+  0.7984482346F, 0.7988049970F, 0.7991614292F, 0.7995175310F,
+  0.7998733022F, 0.8002287426F, 0.8005838519F, 0.8009386299F,
+  0.8012930765F, 0.8016471914F, 0.8020009744F, 0.8023544253F,
+  0.8027075438F, 0.8030603298F, 0.8034127831F, 0.8037649035F,
+  0.8041166906F, 0.8044681445F, 0.8048192647F, 0.8051700512F,
+  0.8055205038F, 0.8058706222F, 0.8062204062F, 0.8065698556F,
+  0.8069189702F, 0.8072677499F, 0.8076161944F, 0.8079643036F,
+  0.8083120772F, 0.8086595151F, 0.8090066170F, 0.8093533827F,
+  0.8096998122F, 0.8100459051F, 0.8103916613F, 0.8107370806F,
+  0.8110821628F, 0.8114269077F, 0.8117713151F, 0.8121153849F,
+  0.8124591169F, 0.8128025108F, 0.8131455666F, 0.8134882839F,
+  0.8138306627F, 0.8141727027F, 0.8145144038F, 0.8148557658F,
+  0.8151967886F, 0.8155374718F, 0.8158778154F, 0.8162178192F,
+  0.8165574830F, 0.8168968067F, 0.8172357900F, 0.8175744328F,
+  0.8179127349F, 0.8182506962F, 0.8185883164F, 0.8189255955F,
+  0.8192625332F, 0.8195991295F, 0.8199353840F, 0.8202712967F,
+  0.8206068673F, 0.8209420958F, 0.8212769820F, 0.8216115256F,
+  0.8219457266F, 0.8222795848F, 0.8226131000F, 0.8229462721F,
+  0.8232791009F, 0.8236115863F, 0.8239437280F, 0.8242755260F,
+  0.8246069801F, 0.8249380901F, 0.8252688559F, 0.8255992774F,
+  0.8259293544F, 0.8262590867F, 0.8265884741F, 0.8269175167F,
+  0.8272462141F, 0.8275745663F, 0.8279025732F, 0.8282302344F,
+  0.8285575501F, 0.8288845199F, 0.8292111437F, 0.8295374215F,
+  0.8298633530F, 0.8301889382F, 0.8305141768F, 0.8308390688F,
+  0.8311636141F, 0.8314878124F, 0.8318116637F, 0.8321351678F,
+  0.8324583246F, 0.8327811340F, 0.8331035957F, 0.8334257098F,
+  0.8337474761F, 0.8340688944F, 0.8343899647F, 0.8347106867F,
+  0.8350310605F, 0.8353510857F, 0.8356707624F, 0.8359900904F,
+  0.8363090696F, 0.8366276999F, 0.8369459811F, 0.8372639131F,
+  0.8375814958F, 0.8378987292F, 0.8382156130F, 0.8385321472F,
+  0.8388483316F, 0.8391641662F, 0.8394796508F, 0.8397947853F,
+  0.8401095697F, 0.8404240037F, 0.8407380873F, 0.8410518204F,
+  0.8413652029F, 0.8416782347F, 0.8419909156F, 0.8423032456F,
+  0.8426152245F, 0.8429268523F, 0.8432381289F, 0.8435490541F,
+  0.8438596279F, 0.8441698502F, 0.8444797208F, 0.8447892396F,
+  0.8450984067F, 0.8454072218F, 0.8457156849F, 0.8460237959F,
+  0.8463315547F, 0.8466389612F, 0.8469460154F, 0.8472527170F,
+  0.8475590661F, 0.8478650625F, 0.8481707063F, 0.8484759971F,
+  0.8487809351F, 0.8490855201F, 0.8493897521F, 0.8496936308F,
+  0.8499971564F, 0.8503003286F, 0.8506031474F, 0.8509056128F,
+  0.8512077246F, 0.8515094828F, 0.8518108872F, 0.8521119379F,
+  0.8524126348F, 0.8527129777F, 0.8530129666F, 0.8533126015F,
+  0.8536118822F, 0.8539108087F, 0.8542093809F, 0.8545075988F,
+  0.8548054623F, 0.8551029712F, 0.8554001257F, 0.8556969255F,
+  0.8559933707F, 0.8562894611F, 0.8565851968F, 0.8568805775F,
+  0.8571756034F, 0.8574702743F, 0.8577645902F, 0.8580585509F,
+  0.8583521566F, 0.8586454070F, 0.8589383021F, 0.8592308420F,
+  0.8595230265F, 0.8598148556F, 0.8601063292F, 0.8603974473F,
+  0.8606882098F, 0.8609786167F, 0.8612686680F, 0.8615583636F,
+  0.8618477034F, 0.8621366874F, 0.8624253156F, 0.8627135878F,
+  0.8630015042F, 0.8632890646F, 0.8635762690F, 0.8638631173F,
+  0.8641496096F, 0.8644357457F, 0.8647215257F, 0.8650069495F,
+  0.8652920171F, 0.8655767283F, 0.8658610833F, 0.8661450820F,
+  0.8664287243F, 0.8667120102F, 0.8669949397F, 0.8672775127F,
+  0.8675597293F, 0.8678415894F, 0.8681230929F, 0.8684042398F,
+  0.8686850302F, 0.8689654640F, 0.8692455412F, 0.8695252617F,
+  0.8698046255F, 0.8700836327F, 0.8703622831F, 0.8706405768F,
+  0.8709185138F, 0.8711960940F, 0.8714733174F, 0.8717501840F,
+  0.8720266939F, 0.8723028469F, 0.8725786430F, 0.8728540824F,
+  0.8731291648F, 0.8734038905F, 0.8736782592F, 0.8739522711F,
+  0.8742259261F, 0.8744992242F, 0.8747721653F, 0.8750447496F,
+  0.8753169770F, 0.8755888475F, 0.8758603611F, 0.8761315177F,
+  0.8764023175F, 0.8766727603F, 0.8769428462F, 0.8772125752F,
+  0.8774819474F, 0.8777509626F, 0.8780196209F, 0.8782879224F,
+  0.8785558669F, 0.8788234546F, 0.8790906854F, 0.8793575594F,
+  0.8796240765F, 0.8798902368F, 0.8801560403F, 0.8804214870F,
+  0.8806865768F, 0.8809513099F, 0.8812156863F, 0.8814797059F,
+  0.8817433687F, 0.8820066749F, 0.8822696243F, 0.8825322171F,
+  0.8827944532F, 0.8830563327F, 0.8833178556F, 0.8835790219F,
+  0.8838398316F, 0.8841002848F, 0.8843603815F, 0.8846201217F,
+  0.8848795054F, 0.8851385327F, 0.8853972036F, 0.8856555182F,
+  0.8859134764F, 0.8861710783F, 0.8864283239F, 0.8866852133F,
+  0.8869417464F, 0.8871979234F, 0.8874537443F, 0.8877092090F,
+  0.8879643177F, 0.8882190704F, 0.8884734671F, 0.8887275078F,
+  0.8889811927F, 0.8892345216F, 0.8894874948F, 0.8897401122F,
+  0.8899923738F, 0.8902442798F, 0.8904958301F, 0.8907470248F,
+  0.8909978640F, 0.8912483477F, 0.8914984759F, 0.8917482487F,
+  0.8919976662F, 0.8922467284F, 0.8924954353F, 0.8927437871F,
+  0.8929917837F, 0.8932394252F, 0.8934867118F, 0.8937336433F,
+  0.8939802199F, 0.8942264417F, 0.8944723087F, 0.8947178210F,
+  0.8949629785F, 0.8952077815F, 0.8954522299F, 0.8956963239F,
+  0.8959400634F, 0.8961834486F, 0.8964264795F, 0.8966691561F,
+  0.8969114786F, 0.8971534470F, 0.8973950614F, 0.8976363219F,
+  0.8978772284F, 0.8981177812F, 0.8983579802F, 0.8985978256F,
+  0.8988373174F, 0.8990764556F, 0.8993152405F, 0.8995536720F,
+  0.8997917502F, 0.9000294751F, 0.9002668470F, 0.9005038658F,
+  0.9007405317F, 0.9009768446F, 0.9012128048F, 0.9014484123F,
+  0.9016836671F, 0.9019185693F, 0.9021531191F, 0.9023873165F,
+  0.9026211616F, 0.9028546546F, 0.9030877954F, 0.9033205841F,
+  0.9035530210F, 0.9037851059F, 0.9040168392F, 0.9042482207F,
+  0.9044792507F, 0.9047099293F, 0.9049402564F, 0.9051702323F,
+  0.9053998569F, 0.9056291305F, 0.9058580531F, 0.9060866248F,
+  0.9063148457F, 0.9065427159F, 0.9067702355F, 0.9069974046F,
+  0.9072242233F, 0.9074506917F, 0.9076768100F, 0.9079025782F,
+  0.9081279964F, 0.9083530647F, 0.9085777833F, 0.9088021523F,
+  0.9090261717F, 0.9092498417F, 0.9094731623F, 0.9096961338F,
+  0.9099187561F, 0.9101410295F, 0.9103629540F, 0.9105845297F,
+  0.9108057568F, 0.9110266354F, 0.9112471656F, 0.9114673475F,
+  0.9116871812F, 0.9119066668F, 0.9121258046F, 0.9123445945F,
+  0.9125630367F, 0.9127811314F, 0.9129988786F, 0.9132162785F,
+  0.9134333312F, 0.9136500368F, 0.9138663954F, 0.9140824073F,
+  0.9142980724F, 0.9145133910F, 0.9147283632F, 0.9149429890F,
+  0.9151572687F, 0.9153712023F, 0.9155847900F, 0.9157980319F,
+  0.9160109282F, 0.9162234790F, 0.9164356844F, 0.9166475445F,
+  0.9168590595F, 0.9170702296F, 0.9172810548F, 0.9174915354F,
+  0.9177016714F, 0.9179114629F, 0.9181209102F, 0.9183300134F,
+  0.9185387726F, 0.9187471879F, 0.9189552595F, 0.9191629876F,
+  0.9193703723F, 0.9195774136F, 0.9197841119F, 0.9199904672F,
+  0.9201964797F, 0.9204021495F, 0.9206074767F, 0.9208124616F,
+  0.9210171043F, 0.9212214049F, 0.9214253636F, 0.9216289805F,
+  0.9218322558F, 0.9220351896F, 0.9222377821F, 0.9224400335F,
+  0.9226419439F, 0.9228435134F, 0.9230447423F, 0.9232456307F,
+  0.9234461787F, 0.9236463865F, 0.9238462543F, 0.9240457822F,
+  0.9242449704F, 0.9244438190F, 0.9246423282F, 0.9248404983F,
+  0.9250383293F, 0.9252358214F, 0.9254329747F, 0.9256297896F,
+  0.9258262660F, 0.9260224042F, 0.9262182044F, 0.9264136667F,
+  0.9266087913F, 0.9268035783F, 0.9269980280F, 0.9271921405F,
+  0.9273859160F, 0.9275793546F, 0.9277724566F, 0.9279652221F,
+  0.9281576513F, 0.9283497443F, 0.9285415014F, 0.9287329227F,
+  0.9289240084F, 0.9291147586F, 0.9293051737F, 0.9294952536F,
+  0.9296849987F, 0.9298744091F, 0.9300634850F, 0.9302522266F,
+  0.9304406340F, 0.9306287074F, 0.9308164471F, 0.9310038532F,
+  0.9311909259F, 0.9313776654F, 0.9315640719F, 0.9317501455F,
+  0.9319358865F, 0.9321212951F, 0.9323063713F, 0.9324911155F,
+  0.9326755279F, 0.9328596085F, 0.9330433577F, 0.9332267756F,
+  0.9334098623F, 0.9335926182F, 0.9337750434F, 0.9339571380F,
+  0.9341389023F, 0.9343203366F, 0.9345014409F, 0.9346822155F,
+  0.9348626606F, 0.9350427763F, 0.9352225630F, 0.9354020207F,
+  0.9355811498F, 0.9357599503F, 0.9359384226F, 0.9361165667F,
+  0.9362943830F, 0.9364718716F, 0.9366490327F, 0.9368258666F,
+  0.9370023733F, 0.9371785533F, 0.9373544066F, 0.9375299335F,
+  0.9377051341F, 0.9378800087F, 0.9380545576F, 0.9382287809F,
+  0.9384026787F, 0.9385762515F, 0.9387494993F, 0.9389224223F,
+  0.9390950209F, 0.9392672951F, 0.9394392453F, 0.9396108716F,
+  0.9397821743F, 0.9399531536F, 0.9401238096F, 0.9402941427F,
+  0.9404641530F, 0.9406338407F, 0.9408032061F, 0.9409722495F,
+  0.9411409709F, 0.9413093707F, 0.9414774491F, 0.9416452062F,
+  0.9418126424F, 0.9419797579F, 0.9421465528F, 0.9423130274F,
+  0.9424791819F, 0.9426450166F, 0.9428105317F, 0.9429757274F,
+  0.9431406039F, 0.9433051616F, 0.9434694005F, 0.9436333209F,
+  0.9437969232F, 0.9439602074F, 0.9441231739F, 0.9442858229F,
+  0.9444481545F, 0.9446101691F, 0.9447718669F, 0.9449332481F,
+  0.9450943129F, 0.9452550617F, 0.9454154945F, 0.9455756118F,
+  0.9457354136F, 0.9458949003F, 0.9460540721F, 0.9462129292F,
+  0.9463714719F, 0.9465297003F, 0.9466876149F, 0.9468452157F,
+  0.9470025031F, 0.9471594772F, 0.9473161384F, 0.9474724869F,
+  0.9476285229F, 0.9477842466F, 0.9479396584F, 0.9480947585F,
+  0.9482495470F, 0.9484040243F, 0.9485581906F, 0.9487120462F,
+  0.9488655913F, 0.9490188262F, 0.9491717511F, 0.9493243662F,
+  0.9494766718F, 0.9496286683F, 0.9497803557F, 0.9499317345F,
+  0.9500828047F, 0.9502335668F, 0.9503840209F, 0.9505341673F,
+  0.9506840062F, 0.9508335380F, 0.9509827629F, 0.9511316810F,
+  0.9512802928F, 0.9514285984F, 0.9515765982F, 0.9517242923F,
+  0.9518716810F, 0.9520187646F, 0.9521655434F, 0.9523120176F,
+  0.9524581875F, 0.9526040534F, 0.9527496154F, 0.9528948739F,
+  0.9530398292F, 0.9531844814F, 0.9533288310F, 0.9534728780F,
+  0.9536166229F, 0.9537600659F, 0.9539032071F, 0.9540460470F,
+  0.9541885858F, 0.9543308237F, 0.9544727611F, 0.9546143981F,
+  0.9547557351F, 0.9548967723F, 0.9550375100F, 0.9551779485F,
+  0.9553180881F, 0.9554579290F, 0.9555974714F, 0.9557367158F,
+  0.9558756623F, 0.9560143112F, 0.9561526628F, 0.9562907174F,
+  0.9564284752F, 0.9565659366F, 0.9567031017F, 0.9568399710F,
+  0.9569765446F, 0.9571128229F, 0.9572488061F, 0.9573844944F,
+  0.9575198883F, 0.9576549879F, 0.9577897936F, 0.9579243056F,
+  0.9580585242F, 0.9581924497F, 0.9583260824F, 0.9584594226F,
+  0.9585924705F, 0.9587252264F, 0.9588576906F, 0.9589898634F,
+  0.9591217452F, 0.9592533360F, 0.9593846364F, 0.9595156465F,
+  0.9596463666F, 0.9597767971F, 0.9599069382F, 0.9600367901F,
+  0.9601663533F, 0.9602956279F, 0.9604246143F, 0.9605533128F,
+  0.9606817236F, 0.9608098471F, 0.9609376835F, 0.9610652332F,
+  0.9611924963F, 0.9613194733F, 0.9614461644F, 0.9615725699F,
+  0.9616986901F, 0.9618245253F, 0.9619500757F, 0.9620753418F,
+  0.9622003238F, 0.9623250219F, 0.9624494365F, 0.9625735679F,
+  0.9626974163F, 0.9628209821F, 0.9629442656F, 0.9630672671F,
+  0.9631899868F, 0.9633124251F, 0.9634345822F, 0.9635564585F,
+  0.9636780543F, 0.9637993699F, 0.9639204056F, 0.9640411616F,
+  0.9641616383F, 0.9642818359F, 0.9644017549F, 0.9645213955F,
+  0.9646407579F, 0.9647598426F, 0.9648786497F, 0.9649971797F,
+  0.9651154328F, 0.9652334092F, 0.9653511095F, 0.9654685337F,
+  0.9655856823F, 0.9657025556F, 0.9658191538F, 0.9659354773F,
+  0.9660515263F, 0.9661673013F, 0.9662828024F, 0.9663980300F,
+  0.9665129845F, 0.9666276660F, 0.9667420750F, 0.9668562118F,
+  0.9669700766F, 0.9670836698F, 0.9671969917F, 0.9673100425F,
+  0.9674228227F, 0.9675353325F, 0.9676475722F, 0.9677595422F,
+  0.9678712428F, 0.9679826742F, 0.9680938368F, 0.9682047309F,
+  0.9683153569F, 0.9684257150F, 0.9685358056F, 0.9686456289F,
+  0.9687551853F, 0.9688644752F, 0.9689734987F, 0.9690822564F,
+  0.9691907483F, 0.9692989750F, 0.9694069367F, 0.9695146337F,
+  0.9696220663F, 0.9697292349F, 0.9698361398F, 0.9699427813F,
+  0.9700491597F, 0.9701552754F, 0.9702611286F, 0.9703667197F,
+  0.9704720490F, 0.9705771169F, 0.9706819236F, 0.9707864695F,
+  0.9708907549F, 0.9709947802F, 0.9710985456F, 0.9712020514F,
+  0.9713052981F, 0.9714082859F, 0.9715110151F, 0.9716134862F,
+  0.9717156993F, 0.9718176549F, 0.9719193532F, 0.9720207946F,
+  0.9721219794F, 0.9722229080F, 0.9723235806F, 0.9724239976F,
+  0.9725241593F, 0.9726240661F, 0.9727237183F, 0.9728231161F,
+  0.9729222601F, 0.9730211503F, 0.9731197873F, 0.9732181713F,
+  0.9733163027F, 0.9734141817F, 0.9735118088F, 0.9736091842F,
+  0.9737063083F, 0.9738031814F, 0.9738998039F, 0.9739961760F,
+  0.9740922981F, 0.9741881706F, 0.9742837938F, 0.9743791680F,
+  0.9744742935F, 0.9745691707F, 0.9746637999F, 0.9747581814F,
+  0.9748523157F, 0.9749462029F, 0.9750398435F, 0.9751332378F,
+  0.9752263861F, 0.9753192887F, 0.9754119461F, 0.9755043585F,
+  0.9755965262F, 0.9756884496F, 0.9757801291F, 0.9758715650F,
+  0.9759627575F, 0.9760537071F, 0.9761444141F, 0.9762348789F,
+  0.9763251016F, 0.9764150828F, 0.9765048228F, 0.9765943218F,
+  0.9766835802F, 0.9767725984F, 0.9768613767F, 0.9769499154F,
+  0.9770382149F, 0.9771262755F, 0.9772140976F, 0.9773016815F,
+  0.9773890275F, 0.9774761360F, 0.9775630073F, 0.9776496418F,
+  0.9777360398F, 0.9778222016F, 0.9779081277F, 0.9779938182F,
+  0.9780792736F, 0.9781644943F, 0.9782494805F, 0.9783342326F,
+  0.9784187509F, 0.9785030359F, 0.9785870877F, 0.9786709069F,
+  0.9787544936F, 0.9788378484F, 0.9789209714F, 0.9790038631F,
+  0.9790865238F, 0.9791689538F, 0.9792511535F, 0.9793331232F,
+  0.9794148633F, 0.9794963742F, 0.9795776561F, 0.9796587094F,
+  0.9797395345F, 0.9798201316F, 0.9799005013F, 0.9799806437F,
+  0.9800605593F, 0.9801402483F, 0.9802197112F, 0.9802989483F,
+  0.9803779600F, 0.9804567465F, 0.9805353082F, 0.9806136455F,
+  0.9806917587F, 0.9807696482F, 0.9808473143F, 0.9809247574F,
+  0.9810019778F, 0.9810789759F, 0.9811557519F, 0.9812323064F,
+  0.9813086395F, 0.9813847517F, 0.9814606433F, 0.9815363147F,
+  0.9816117662F, 0.9816869981F, 0.9817620108F, 0.9818368047F,
+  0.9819113801F, 0.9819857374F, 0.9820598769F, 0.9821337989F,
+  0.9822075038F, 0.9822809920F, 0.9823542638F, 0.9824273195F,
+  0.9825001596F, 0.9825727843F, 0.9826451940F, 0.9827173891F,
+  0.9827893700F, 0.9828611368F, 0.9829326901F, 0.9830040302F,
+  0.9830751574F, 0.9831460720F, 0.9832167745F, 0.9832872652F,
+  0.9833575444F, 0.9834276124F, 0.9834974697F, 0.9835671166F,
+  0.9836365535F, 0.9837057806F, 0.9837747983F, 0.9838436071F,
+  0.9839122072F, 0.9839805990F, 0.9840487829F, 0.9841167591F,
+  0.9841845282F, 0.9842520903F, 0.9843194459F, 0.9843865953F,
+  0.9844535389F, 0.9845202771F, 0.9845868101F, 0.9846531383F,
+  0.9847192622F, 0.9847851820F, 0.9848508980F, 0.9849164108F,
+  0.9849817205F, 0.9850468276F, 0.9851117324F, 0.9851764352F,
+  0.9852409365F, 0.9853052366F, 0.9853693358F, 0.9854332344F,
+  0.9854969330F, 0.9855604317F, 0.9856237309F, 0.9856868310F,
+  0.9857497325F, 0.9858124355F, 0.9858749404F, 0.9859372477F,
+  0.9859993577F, 0.9860612707F, 0.9861229871F, 0.9861845072F,
+  0.9862458315F, 0.9863069601F, 0.9863678936F, 0.9864286322F,
+  0.9864891764F, 0.9865495264F, 0.9866096826F, 0.9866696454F,
+  0.9867294152F, 0.9867889922F, 0.9868483769F, 0.9869075695F,
+  0.9869665706F, 0.9870253803F, 0.9870839991F, 0.9871424273F,
+  0.9872006653F, 0.9872587135F, 0.9873165721F, 0.9873742415F,
+  0.9874317222F, 0.9874890144F, 0.9875461185F, 0.9876030348F,
+  0.9876597638F, 0.9877163057F, 0.9877726610F, 0.9878288300F,
+  0.9878848130F, 0.9879406104F, 0.9879962225F, 0.9880516497F,
+  0.9881068924F, 0.9881619509F, 0.9882168256F, 0.9882715168F,
+  0.9883260249F, 0.9883803502F, 0.9884344931F, 0.9884884539F,
+  0.9885422331F, 0.9885958309F, 0.9886492477F, 0.9887024838F,
+  0.9887555397F, 0.9888084157F, 0.9888611120F, 0.9889136292F,
+  0.9889659675F, 0.9890181273F, 0.9890701089F, 0.9891219128F,
+  0.9891735392F, 0.9892249885F, 0.9892762610F, 0.9893273572F,
+  0.9893782774F, 0.9894290219F, 0.9894795911F, 0.9895299853F,
+  0.9895802049F, 0.9896302502F, 0.9896801217F, 0.9897298196F,
+  0.9897793443F, 0.9898286961F, 0.9898778755F, 0.9899268828F,
+  0.9899757183F, 0.9900243823F, 0.9900728753F, 0.9901211976F,
+  0.9901693495F, 0.9902173314F, 0.9902651436F, 0.9903127865F,
+  0.9903602605F, 0.9904075659F, 0.9904547031F, 0.9905016723F,
+  0.9905484740F, 0.9905951086F, 0.9906415763F, 0.9906878775F,
+  0.9907340126F, 0.9907799819F, 0.9908257858F, 0.9908714247F,
+  0.9909168988F, 0.9909622086F, 0.9910073543F, 0.9910523364F,
+  0.9910971552F, 0.9911418110F, 0.9911863042F, 0.9912306351F,
+  0.9912748042F, 0.9913188117F, 0.9913626580F, 0.9914063435F,
+  0.9914498684F, 0.9914932333F, 0.9915364383F, 0.9915794839F,
+  0.9916223703F, 0.9916650981F, 0.9917076674F, 0.9917500787F,
+  0.9917923323F, 0.9918344286F, 0.9918763679F, 0.9919181505F,
+  0.9919597769F, 0.9920012473F, 0.9920425621F, 0.9920837217F,
+  0.9921247263F, 0.9921655765F, 0.9922062724F, 0.9922468145F,
+  0.9922872030F, 0.9923274385F, 0.9923675211F, 0.9924074513F,
+  0.9924472294F, 0.9924868557F, 0.9925263306F, 0.9925656544F,
+  0.9926048275F, 0.9926438503F, 0.9926827230F, 0.9927214461F,
+  0.9927600199F, 0.9927984446F, 0.9928367208F, 0.9928748486F,
+  0.9929128285F, 0.9929506608F, 0.9929883459F, 0.9930258841F,
+  0.9930632757F, 0.9931005211F, 0.9931376207F, 0.9931745747F,
+  0.9932113836F, 0.9932480476F, 0.9932845671F, 0.9933209425F,
+  0.9933571742F, 0.9933932623F, 0.9934292074F, 0.9934650097F,
+  0.9935006696F, 0.9935361874F, 0.9935715635F, 0.9936067982F,
+  0.9936418919F, 0.9936768448F, 0.9937116574F, 0.9937463300F,
+  0.9937808629F, 0.9938152565F, 0.9938495111F, 0.9938836271F,
+  0.9939176047F, 0.9939514444F, 0.9939851465F, 0.9940187112F,
+  0.9940521391F, 0.9940854303F, 0.9941185853F, 0.9941516044F,
+  0.9941844879F, 0.9942172361F, 0.9942498495F, 0.9942823283F,
+  0.9943146729F, 0.9943468836F, 0.9943789608F, 0.9944109047F,
+  0.9944427158F, 0.9944743944F, 0.9945059408F, 0.9945373553F,
+  0.9945686384F, 0.9945997902F, 0.9946308112F, 0.9946617017F,
+  0.9946924621F, 0.9947230926F, 0.9947535937F, 0.9947839656F,
+  0.9948142086F, 0.9948443232F, 0.9948743097F, 0.9949041683F,
+  0.9949338995F, 0.9949635035F, 0.9949929807F, 0.9950223315F,
+  0.9950515561F, 0.9950806549F, 0.9951096282F, 0.9951384764F,
+  0.9951671998F, 0.9951957987F, 0.9952242735F, 0.9952526245F,
+  0.9952808520F, 0.9953089564F, 0.9953369380F, 0.9953647971F,
+  0.9953925340F, 0.9954201491F, 0.9954476428F, 0.9954750153F,
+  0.9955022670F, 0.9955293981F, 0.9955564092F, 0.9955833003F,
+  0.9956100720F, 0.9956367245F, 0.9956632582F, 0.9956896733F,
+  0.9957159703F, 0.9957421494F, 0.9957682110F, 0.9957941553F,
+  0.9958199828F, 0.9958456937F, 0.9958712884F, 0.9958967672F,
+  0.9959221305F, 0.9959473784F, 0.9959725115F, 0.9959975300F,
+  0.9960224342F, 0.9960472244F, 0.9960719011F, 0.9960964644F,
+  0.9961209148F, 0.9961452525F, 0.9961694779F, 0.9961935913F,
+  0.9962175930F, 0.9962414834F, 0.9962652627F, 0.9962889313F,
+  0.9963124895F, 0.9963359377F, 0.9963592761F, 0.9963825051F,
+  0.9964056250F, 0.9964286361F, 0.9964515387F, 0.9964743332F,
+  0.9964970198F, 0.9965195990F, 0.9965420709F, 0.9965644360F,
+  0.9965866946F, 0.9966088469F, 0.9966308932F, 0.9966528340F,
+  0.9966746695F, 0.9966964001F, 0.9967180260F, 0.9967395475F,
+  0.9967609651F, 0.9967822789F, 0.9968034894F, 0.9968245968F,
+  0.9968456014F, 0.9968665036F, 0.9968873037F, 0.9969080019F,
+  0.9969285987F, 0.9969490942F, 0.9969694889F, 0.9969897830F,
+  0.9970099769F, 0.9970300708F, 0.9970500651F, 0.9970699601F,
+  0.9970897561F, 0.9971094533F, 0.9971290522F, 0.9971485531F,
+  0.9971679561F, 0.9971872617F, 0.9972064702F, 0.9972255818F,
+  0.9972445968F, 0.9972635157F, 0.9972823386F, 0.9973010659F,
+  0.9973196980F, 0.9973382350F, 0.9973566773F, 0.9973750253F,
+  0.9973932791F, 0.9974114392F, 0.9974295059F, 0.9974474793F,
+  0.9974653599F, 0.9974831480F, 0.9975008438F, 0.9975184476F,
+  0.9975359598F, 0.9975533806F, 0.9975707104F, 0.9975879495F,
+  0.9976050981F, 0.9976221566F, 0.9976391252F, 0.9976560043F,
+  0.9976727941F, 0.9976894950F, 0.9977061073F, 0.9977226312F,
+  0.9977390671F, 0.9977554152F, 0.9977716759F, 0.9977878495F,
+  0.9978039361F, 0.9978199363F, 0.9978358501F, 0.9978516780F,
+  0.9978674202F, 0.9978830771F, 0.9978986488F, 0.9979141358F,
+  0.9979295383F, 0.9979448566F, 0.9979600909F, 0.9979752417F,
+  0.9979903091F, 0.9980052936F, 0.9980201952F, 0.9980350145F,
+  0.9980497515F, 0.9980644067F, 0.9980789804F, 0.9980934727F,
+  0.9981078841F, 0.9981222147F, 0.9981364649F, 0.9981506350F,
+  0.9981647253F, 0.9981787360F, 0.9981926674F, 0.9982065199F,
+  0.9982202936F, 0.9982339890F, 0.9982476062F, 0.9982611456F,
+  0.9982746074F, 0.9982879920F, 0.9983012996F, 0.9983145304F,
+  0.9983276849F, 0.9983407632F, 0.9983537657F, 0.9983666926F,
+  0.9983795442F, 0.9983923208F, 0.9984050226F, 0.9984176501F,
+  0.9984302033F, 0.9984426827F, 0.9984550884F, 0.9984674208F,
+  0.9984796802F, 0.9984918667F, 0.9985039808F, 0.9985160227F,
+  0.9985279926F, 0.9985398909F, 0.9985517177F, 0.9985634734F,
+  0.9985751583F, 0.9985867727F, 0.9985983167F, 0.9986097907F,
+  0.9986211949F, 0.9986325297F, 0.9986437953F, 0.9986549919F,
+  0.9986661199F, 0.9986771795F, 0.9986881710F, 0.9986990946F,
+  0.9987099507F, 0.9987207394F, 0.9987314611F, 0.9987421161F,
+  0.9987527045F, 0.9987632267F, 0.9987736829F, 0.9987840734F,
+  0.9987943985F, 0.9988046584F, 0.9988148534F, 0.9988249838F,
+  0.9988350498F, 0.9988450516F, 0.9988549897F, 0.9988648641F,
+  0.9988746753F, 0.9988844233F, 0.9988941086F, 0.9989037313F,
+  0.9989132918F, 0.9989227902F, 0.9989322269F, 0.9989416021F,
+  0.9989509160F, 0.9989601690F, 0.9989693613F, 0.9989784931F,
+  0.9989875647F, 0.9989965763F, 0.9990055283F, 0.9990144208F,
+  0.9990232541F, 0.9990320286F, 0.9990407443F, 0.9990494016F,
+  0.9990580008F, 0.9990665421F, 0.9990750257F, 0.9990834519F,
+  0.9990918209F, 0.9991001331F, 0.9991083886F, 0.9991165877F,
+  0.9991247307F, 0.9991328177F, 0.9991408491F, 0.9991488251F,
+  0.9991567460F, 0.9991646119F, 0.9991724232F, 0.9991801801F,
+  0.9991878828F, 0.9991955316F, 0.9992031267F, 0.9992106684F,
+  0.9992181569F, 0.9992255925F, 0.9992329753F, 0.9992403057F,
+  0.9992475839F, 0.9992548101F, 0.9992619846F, 0.9992691076F,
+  0.9992761793F, 0.9992832001F, 0.9992901701F, 0.9992970895F,
+  0.9993039587F, 0.9993107777F, 0.9993175470F, 0.9993242667F,
+  0.9993309371F, 0.9993375583F, 0.9993441307F, 0.9993506545F,
+  0.9993571298F, 0.9993635570F, 0.9993699362F, 0.9993762678F,
+  0.9993825519F, 0.9993887887F, 0.9993949785F, 0.9994011216F,
+  0.9994072181F, 0.9994132683F, 0.9994192725F, 0.9994252307F,
+  0.9994311434F, 0.9994370107F, 0.9994428327F, 0.9994486099F,
+  0.9994543423F, 0.9994600303F, 0.9994656739F, 0.9994712736F,
+  0.9994768294F, 0.9994823417F, 0.9994878105F, 0.9994932363F,
+  0.9994986191F, 0.9995039592F, 0.9995092568F, 0.9995145122F,
+  0.9995197256F, 0.9995248971F, 0.9995300270F, 0.9995351156F,
+  0.9995401630F, 0.9995451695F, 0.9995501352F, 0.9995550604F,
+  0.9995599454F, 0.9995647903F, 0.9995695953F, 0.9995743607F,
+  0.9995790866F, 0.9995837734F, 0.9995884211F, 0.9995930300F,
+  0.9995976004F, 0.9996021324F, 0.9996066263F, 0.9996110822F,
+  0.9996155004F, 0.9996198810F, 0.9996242244F, 0.9996285306F,
+  0.9996327999F, 0.9996370326F, 0.9996412287F, 0.9996453886F,
+  0.9996495125F, 0.9996536004F, 0.9996576527F, 0.9996616696F,
+  0.9996656512F, 0.9996695977F, 0.9996735094F, 0.9996773865F,
+  0.9996812291F, 0.9996850374F, 0.9996888118F, 0.9996925523F,
+  0.9996962591F, 0.9996999325F, 0.9997035727F, 0.9997071798F,
+  0.9997107541F, 0.9997142957F, 0.9997178049F, 0.9997212818F,
+  0.9997247266F, 0.9997281396F, 0.9997315209F, 0.9997348708F,
+  0.9997381893F, 0.9997414767F, 0.9997447333F, 0.9997479591F,
+  0.9997511544F, 0.9997543194F, 0.9997574542F, 0.9997605591F,
+  0.9997636342F, 0.9997666797F, 0.9997696958F, 0.9997726828F,
+  0.9997756407F, 0.9997785698F, 0.9997814703F, 0.9997843423F,
+  0.9997871860F, 0.9997900016F, 0.9997927894F, 0.9997955494F,
+  0.9997982818F, 0.9998009869F, 0.9998036648F, 0.9998063157F,
+  0.9998089398F, 0.9998115373F, 0.9998141082F, 0.9998166529F,
+  0.9998191715F, 0.9998216642F, 0.9998241311F, 0.9998265724F,
+  0.9998289884F, 0.9998313790F, 0.9998337447F, 0.9998360854F,
+  0.9998384015F, 0.9998406930F, 0.9998429602F, 0.9998452031F,
+  0.9998474221F, 0.9998496171F, 0.9998517885F, 0.9998539364F,
+  0.9998560610F, 0.9998581624F, 0.9998602407F, 0.9998622962F,
+  0.9998643291F, 0.9998663394F, 0.9998683274F, 0.9998702932F,
+  0.9998722370F, 0.9998741589F, 0.9998760591F, 0.9998779378F,
+  0.9998797952F, 0.9998816313F, 0.9998834464F, 0.9998852406F,
+  0.9998870141F, 0.9998887670F, 0.9998904995F, 0.9998922117F,
+  0.9998939039F, 0.9998955761F, 0.9998972285F, 0.9998988613F,
+  0.9999004746F, 0.9999020686F, 0.9999036434F, 0.9999051992F,
+  0.9999067362F, 0.9999082544F, 0.9999097541F, 0.9999112354F,
+  0.9999126984F, 0.9999141433F, 0.9999155703F, 0.9999169794F,
+  0.9999183709F, 0.9999197449F, 0.9999211014F, 0.9999224408F,
+  0.9999237631F, 0.9999250684F, 0.9999263570F, 0.9999276289F,
+  0.9999288843F, 0.9999301233F, 0.9999313461F, 0.9999325529F,
+  0.9999337437F, 0.9999349187F, 0.9999360780F, 0.9999372218F,
+  0.9999383503F, 0.9999394635F, 0.9999405616F, 0.9999416447F,
+  0.9999427129F, 0.9999437665F, 0.9999448055F, 0.9999458301F,
+  0.9999468404F, 0.9999478365F, 0.9999488185F, 0.9999497867F,
+  0.9999507411F, 0.9999516819F, 0.9999526091F, 0.9999535230F,
+  0.9999544236F, 0.9999553111F, 0.9999561856F, 0.9999570472F,
+  0.9999578960F, 0.9999587323F, 0.9999595560F, 0.9999603674F,
+  0.9999611666F, 0.9999619536F, 0.9999627286F, 0.9999634917F,
+  0.9999642431F, 0.9999649828F, 0.9999657110F, 0.9999664278F,
+  0.9999671334F, 0.9999678278F, 0.9999685111F, 0.9999691835F,
+  0.9999698451F, 0.9999704960F, 0.9999711364F, 0.9999717662F,
+  0.9999723858F, 0.9999729950F, 0.9999735942F, 0.9999741834F,
+  0.9999747626F, 0.9999753321F, 0.9999758919F, 0.9999764421F,
+  0.9999769828F, 0.9999775143F, 0.9999780364F, 0.9999785495F,
+  0.9999790535F, 0.9999795485F, 0.9999800348F, 0.9999805124F,
+  0.9999809813F, 0.9999814417F, 0.9999818938F, 0.9999823375F,
+  0.9999827731F, 0.9999832005F, 0.9999836200F, 0.9999840316F,
+  0.9999844353F, 0.9999848314F, 0.9999852199F, 0.9999856008F,
+  0.9999859744F, 0.9999863407F, 0.9999866997F, 0.9999870516F,
+  0.9999873965F, 0.9999877345F, 0.9999880656F, 0.9999883900F,
+  0.9999887078F, 0.9999890190F, 0.9999893237F, 0.9999896220F,
+  0.9999899140F, 0.9999901999F, 0.9999904796F, 0.9999907533F,
+  0.9999910211F, 0.9999912830F, 0.9999915391F, 0.9999917896F,
+  0.9999920345F, 0.9999922738F, 0.9999925077F, 0.9999927363F,
+  0.9999929596F, 0.9999931777F, 0.9999933907F, 0.9999935987F,
+  0.9999938018F, 0.9999940000F, 0.9999941934F, 0.9999943820F,
+  0.9999945661F, 0.9999947456F, 0.9999949206F, 0.9999950912F,
+  0.9999952575F, 0.9999954195F, 0.9999955773F, 0.9999957311F,
+  0.9999958807F, 0.9999960265F, 0.9999961683F, 0.9999963063F,
+  0.9999964405F, 0.9999965710F, 0.9999966979F, 0.9999968213F,
+  0.9999969412F, 0.9999970576F, 0.9999971707F, 0.9999972805F,
+  0.9999973871F, 0.9999974905F, 0.9999975909F, 0.9999976881F,
+  0.9999977824F, 0.9999978738F, 0.9999979624F, 0.9999980481F,
+  0.9999981311F, 0.9999982115F, 0.9999982892F, 0.9999983644F,
+  0.9999984370F, 0.9999985072F, 0.9999985750F, 0.9999986405F,
+  0.9999987037F, 0.9999987647F, 0.9999988235F, 0.9999988802F,
+  0.9999989348F, 0.9999989873F, 0.9999990379F, 0.9999990866F,
+  0.9999991334F, 0.9999991784F, 0.9999992217F, 0.9999992632F,
+  0.9999993030F, 0.9999993411F, 0.9999993777F, 0.9999994128F,
+  0.9999994463F, 0.9999994784F, 0.9999995091F, 0.9999995384F,
+  0.9999995663F, 0.9999995930F, 0.9999996184F, 0.9999996426F,
+  0.9999996657F, 0.9999996876F, 0.9999997084F, 0.9999997282F,
+  0.9999997469F, 0.9999997647F, 0.9999997815F, 0.9999997973F,
+  0.9999998123F, 0.9999998265F, 0.9999998398F, 0.9999998524F,
+  0.9999998642F, 0.9999998753F, 0.9999998857F, 0.9999998954F,
+  0.9999999045F, 0.9999999130F, 0.9999999209F, 0.9999999282F,
+  0.9999999351F, 0.9999999414F, 0.9999999472F, 0.9999999526F,
+  0.9999999576F, 0.9999999622F, 0.9999999664F, 0.9999999702F,
+  0.9999999737F, 0.9999999769F, 0.9999999798F, 0.9999999824F,
+  0.9999999847F, 0.9999999868F, 0.9999999887F, 0.9999999904F,
+  0.9999999919F, 0.9999999932F, 0.9999999943F, 0.9999999953F,
+  0.9999999961F, 0.9999999969F, 0.9999999975F, 0.9999999980F,
+  0.9999999985F, 0.9999999988F, 0.9999999991F, 0.9999999993F,
+  0.9999999995F, 0.9999999997F, 0.9999999998F, 0.9999999999F,
+  0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
+  1.0000000000F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
+};
+
+static const float *const vwin[8] = {
+  vwin64,
+  vwin128,
+  vwin256,
+  vwin512,
+  vwin1024,
+  vwin2048,
+  vwin4096,
+  vwin8192,
+};
+
+const float *_vorbis_window_get(int n){
+  return vwin[n];
 }
 
-void _vorbis_apply_window(float *d,float *window[2],long *blocksizes,
-			  int lW,int W,int nW){
+void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
+                          int lW,int W,int nW){
   lW=(W?lW:0);
   nW=(W?nW:0);
 
   {
+    const float *windowLW=vwin[winno[lW]];
+    const float *windowNW=vwin[winno[nW]];
+
     long n=blocksizes[W];
     long ln=blocksizes[lW];
     long rn=blocksizes[nW];
-    
+
     long leftbegin=n/4-ln/4;
     long leftend=leftbegin+ln/2;
-    
+
     long rightbegin=n/2+n/4-rn/4;
     long rightend=rightbegin+rn/2;
-    
+
     int i,p;
-    
+
     for(i=0;i<leftbegin;i++)
       d[i]=0.f;
-    
+
     for(p=0;i<leftend;i++,p++)
-      d[i]*=window[lW][p];
-    
+      d[i]*=windowLW[p];
+
     for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
-      d[i]*=window[nW][p];
-    
+      d[i]*=windowNW[p];
+
     for(;i<n;i++)
       d[i]=0.f;
   }
--- a/sys/src/cmd/audio/libvorbis/window.h
+++ b/sys/src/cmd/audio/libvorbis/window.h
@@ -5,13 +5,13 @@
  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
- * by the XIPHOPHORUS Company http://www.xiph.org/                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: window functions
- last mod: $Id: window.h,v 1.10 2002/01/22 11:59:00 xiphmont Exp $
+ last mod: $Id: window.h 19028 2013-12-02 23:23:39Z tterribe $
 
  ********************************************************************/
 
@@ -18,9 +18,9 @@
 #ifndef _V_WINDOW_
 #define _V_WINDOW_
 
-extern float *_vorbis_window(int type,int left);
-extern void _vorbis_apply_window(float *d,float *window[2],long *blocksizes,
-				 int lW,int W,int nW);
+extern const float *_vorbis_window_get(int n);
+extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
+                          int lW,int W,int nW);
 
 
 #endif