static void decode(Real288_internal *glob, unsigned int input)
{
  unsigned int x,y;
  float f;
  double sum,sumsum;
  float *p1,*p2;
  float buffer[5];
  const float *table;
  for (x=36;x--;glob->sb[x+5]=glob->sb[x]);
  for (x=5;x--;) {
    p1=glob->sb+x;p2=glob->pr1;
    for (sum=0,y=36;y--;sum-=(*(++p1))*(*(p2++)));
    glob->sb[x]=sum;
  }
  f=amptable[input&7];
  table=codetable+(input>>3)*5;
  for (sum=32,x=10;x--;sum-=glob->pr2[x]*glob->lhist[x]);
  if (sum<0) sum=0; else if (sum>60) sum=60;
  sumsum=exp(sum*0.1151292546497)*f;
  for (sum=0,x=5;x--;) { buffer[x]=table[x]*sumsum; sum+=buffer[x]*buffer[x]; }
  if ((sum/=5)<1) sum=1;
  for (x=10;--x;glob->lhist[x]=glob->lhist[x-1]);
  *glob->lhist=glob->history[glob->phase]=10*log10(sum)-32;
  for (x=1;x<5;x++) for (y=x;y--;buffer[x]-=glob->pr1[x-y-1]*buffer[y]);
  for (x=0;x<5;x++) {
    f=glob->sb[4-x]+buffer[x];
    if (f>4095) f=4095; else if (f<-4095) f=-4095;
    glob->output[glob->phasep+x]=glob->sb[4-x]=f;
  }
}
['static void decode(Real288_internal *glob, unsigned int input)\n{\n  unsigned int x,y;\n  float f;\n  double sum,sumsum;\n  float *p1,*p2;\n  float buffer[5];\n  const float *table;\n  for (x=36;x--;glob->sb[x+5]=glob->sb[x]);\n  for (x=5;x--;) {\n    p1=glob->sb+x;p2=glob->pr1;\n    for (sum=0,y=36;y--;sum-=(*(++p1))*(*(p2++)));\n    glob->sb[x]=sum;\n  }\n  f=amptable[input&7];\n  table=codetable+(input>>3)*5;\n  for (sum=32,x=10;x--;sum-=glob->pr2[x]*glob->lhist[x]);\n  if (sum<0) sum=0; else if (sum>60) sum=60;\n  sumsum=exp(sum*0.1151292546497)*f;\n  for (sum=0,x=5;x--;) { buffer[x]=table[x]*sumsum; sum+=buffer[x]*buffer[x]; }\n  if ((sum/=5)<1) sum=1;\n  for (x=10;--x;glob->lhist[x]=glob->lhist[x-1]);\n  *glob->lhist=glob->history[glob->phase]=10*log10(sum)-32;\n  for (x=1;x<5;x++) for (y=x;y--;buffer[x]-=glob->pr1[x-y-1]*buffer[y]);\n  for (x=0;x<5;x++) {\n    f=glob->sb[4-x]+buffer[x];\n    if (f>4095) f=4095; else if (f<-4095) f=-4095;\n    glob->output[glob->phasep+x]=glob->sb[4-x]=f;\n  }\n}']