home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Sound / DelfMPEG / src / MP2.a56 < prev    next >
Text File  |  1999-10-27  |  60KB  |  1,558 lines

  1. ;*****************************************************************************
  2. ;
  3. ;    DelfMPEG - MPEG audio player for Delfina DSP
  4. ;    Copyright (C) 1999  Michael Henke
  5. ;
  6. ;    This program is free software; you can redistribute it and/or modify
  7. ;    it under the terms of the GNU General Public License as published by
  8. ;    the Free Software Foundation; either version 2 of the License, or
  9. ;    (at your option) any later version.
  10. ;
  11. ;    This program is distributed in the hope that it will be useful,
  12. ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ;    GNU General Public License for more details.
  15. ;
  16. ;    You should have received a copy of the GNU General Public License
  17. ;    along with this program; if not, write to the Free Software
  18. ;    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. ;
  20. ;*****************************************************************************
  21.  
  22.  
  23.  
  24. ;Delfina object DSP56K_MP2
  25. ;memory map (for Amiga access)
  26. ;
  27. ; prog
  28. ;   0 .. init (x1=mem_mp2, x0=mem_mp2p, y1=/, y0=/)
  29. ;  +2 .. decode MP2 frame (x1=mono, x0=outbuf, y1=translate, y0=jsbound)
  30. ;
  31. ; xdata
  32. ; +2048 .. inbuf (Amiga write)
  33. ;
  34. ; ydata
  35. ;   /
  36.  
  37.  
  38.  
  39.  
  40. DELFINA_SAMPLES    equ    1152
  41.  
  42.  
  43.     include 'delfequ.inc'
  44.  
  45.     org    p:
  46.  
  47. ;->prog
  48.     jmp    init
  49.  
  50. ;->prog+2
  51.  
  52. ;*****************************************************************************
  53. ;
  54. ; **** MPEG layer II frame decoder ****
  55. ;
  56. ; parameters
  57. ;  x1 - mono          (mono: not_zero, stereo: zero)
  58. ;  x0 - output buffer (mono: x: only,  stereo: x: left, y: right)
  59. ;  y1 - translate     (for sblimit, bitalloc, quantization)
  60. ;  y0 - jsbound
  61. ;
  62. ;  xdata+2048 - input buffer (frame data without header, max. 1800 bytes)
  63. ;
  64. ;
  65. ; based on the mp2 player for Atari Falcon by Fredrik Noring
  66. ;
  67. ; Delfina DSP coding by Smack/Infect!
  68. ;
  69. ;
  70. ; (Thu 07-Oct-1999) - first beta version, mono decoding doesn't work
  71. ; (Fri 15-Oct-1999) - code cleanup+optimizing, little speedup
  72. ;                     (getbits loop, rsinx_rcosx table to internal mem)
  73. ;                     fixed mono decoding (decode_subbands bug: #>2+3)
  74. ;
  75. ;*****************************************************************************
  76.  
  77.  
  78.     move    x0,x:out_p        ;store output pointer
  79.  
  80.     tfr    x1,a    #>1,x0        ;a=mono
  81.     tst    a    #>2,a
  82.     tne    x0,a
  83.     move    a,x:channels        ;store channels
  84.  
  85.     move    y1,n0            ;translate
  86.     move    #table_translate_sblimit,r0
  87.  
  88.     move    y1,x:translate
  89.  
  90.     move    y0,x:jsbound        ;store jsbound
  91.  
  92.     move    y:(r0+n0),y1
  93.     move    #table_translate_alloc,r0
  94.     move    y1,x:sblimit
  95.     move    y:(r0+n0),y1
  96.     move    #table_translate_quantizations,r0
  97.     move    y1,x:decoder_nbals
  98.     move    y:(r0+n0),y1
  99.     move    y1,x:decoder_quantizations
  100.  
  101. ;    ** compute audio buffer modifiers
  102.     move    #>$7ff,x0
  103.     move    #>128,x1
  104.     move    #>2,y0
  105.     move    x:channels,b
  106.     move    #>$3ff,a
  107.     cmp    y0,b    #>64,b
  108.     teq    x0,a
  109.     teq    x1,b
  110.     move    a,x:decoder_audio_mask
  111.     move    b,x:decoder_audio_delta
  112.  
  113. ;    ** calculate deltas for the cosine transform
  114.     move    x:channels,a
  115.     lsl    a    a,y0
  116.     add    y0,a
  117.     move    a,x:decoder_imfct_delta
  118.  
  119.  
  120.     clr    a    #decoder_fraction,r0
  121.     do    #2*32*3,clear_fraction
  122.     move    a,x:(r0)+
  123. clear_fraction
  124.  
  125.     move    x:getbits_temp_p,r0
  126.     move    #inbuf,x0
  127.     move    x0,x:getbits_stream_p
  128.     move    a,x:(r0)+
  129.     move    a,x:(r0)    ;initialize 'current bitstream word'
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ;******************************************************************
  137. ;decode_scales
  138. ;    ** getbits_init
  139.     move    x:getbits_stream_p,r7
  140.     move    x:getbits_temp_p,r6
  141.     move    x:decoder_getbits_loop_p,r5
  142.  
  143. ;    **
  144. ;    ** fetch bit allocation table
  145. ;    **
  146.     clr    b    x:channels,y0    ; count scfsis
  147.     move    x:decoder_nbals,r0
  148.     move    #decoder_bitalloc,r1
  149.  
  150. ;    ** loop until jsbound
  151.     move    y:(r0)+,x0        ; nbal
  152.     move    x:jsbound,a
  153.     do    a,sb_loop0
  154.     do    y0,ch_loop0
  155.  
  156.     clr    a    b1,x:(r6)+    ;save b1
  157.     move    x:(r6),b1        ;current bitstream word
  158.     jsr    (r5)            ; read nbal bits
  159.     move    b1,x:(r6)
  160.     move    x:-(r6),b1        ;restore b1
  161.  
  162.     move    #>1,x1
  163.     add    x1,b    b,x1
  164.     tst    a    a,x:(r1)+
  165.     teq    x1,b
  166. ch_loop0
  167.     move    y:(r0)+,x0        ; nbal
  168. sb_loop0
  169. ;    ** loop until sblimit (for joint-stereo only)
  170.     move    x:sblimit,a
  171.     move    x:jsbound,y0
  172.     sub    y0,a
  173.     jeq    sb_loop1        ; not joint-stereo
  174.     move    #>2,x1
  175.     do    a,sb_loop1
  176.  
  177.     clr    a    b1,x:(r6)+    ;save b1
  178.     move    x:(r6),b1        ;current bitstream word
  179.     jsr    (r5)            ; read nbal bits
  180.     move    b1,x:(r6)
  181.     move    x:-(r6),b1        ;restore b1
  182.  
  183.     add    x1,b    a,x:(r1)+    b,y0
  184.     tst    a    a,x:(r1)+
  185.     teq    y0,b
  186.     move    y:(r0)+,x0        ; nbal
  187. sb_loop1
  188.  
  189.     tst    b    x:(r6)+,x0    b,y0    ;update r6 (getbits nosave b1)
  190.  
  191.     jeq    exit            ;invalid frame!!!
  192.  
  193.  
  194. ;    **
  195. ;    ** fetch scalefactor selection information
  196. ;    **
  197.     move    #decoder_scfsi,r0
  198.     move    #>2,x0            ; 2 bit scfsi
  199.     clr    a    x:(r6),b1    ;current bitstream word
  200.     do    y0,sf_loop0
  201.     jsr    (r5)
  202.     clr    a    a,x:(r0)+
  203. sf_loop0
  204.     move    b1,x:(r6)
  205.  
  206. ;    **
  207. ;    ** fetch scale factors
  208. ;    **
  209.     move    #decoder_scfsi,r0
  210.     move    #decoder_scalefactor,r1
  211.     move    #>6,x0            ; 6 bit scalefactors
  212.     do    y0,sf_loop1
  213.     clr    a    x:(r0)+,y0
  214.  
  215.     cmp    y0,a    #>1,a
  216.     jne    sf_c1
  217.     clr    a    x:(r6),b1    ;current bitstream word
  218.     jsr    (r5)            ; all three
  219.     clr    a    a,x:(r1)+
  220.     jsr    (r5)
  221.     clr    a    a,x:(r1)+
  222.     jsr    (r5)
  223.     move    a,x:(r1)+
  224.     jmp    sf_resume
  225.  
  226. sf_c1    cmp    y0,a    #>2,a
  227.     jne    sf_c2
  228.     clr    a    x:(r6),b1    ;current bitstream word
  229.     jsr    (r5)            ; 1 + 3
  230.     move    a,x:(r1)+
  231.     clr    a    a,x:(r1)+
  232.     jsr    (r5)
  233.     move    a,x:(r1)+
  234.     jmp    sf_resume
  235.  
  236. sf_c2    cmp    y0,a
  237.     jne    sf_c3
  238.     clr    a    x:(r6),b1    ;current bitstream word
  239.     jsr    (r5)            ; just one
  240.     move    a,x:(r1)+
  241.     move    a,x:(r1)+
  242.     move    a,x:(r1)+
  243.     jmp    sf_resume
  244.  
  245. sf_c3
  246.     clr    a    x:(r6),b1    ;current bitstream word
  247.     jsr    (r5)            ; 1 + 2
  248.     clr    a    a,x:(r1)+
  249.     jsr    (r5)
  250.     move    a,x:(r1)+
  251.     move    a,x:(r1)+
  252.  
  253. sf_resume
  254.     move    b1,x:(r6)
  255. sf_loop1
  256. ;    ** getbits_exit
  257.     move    r7,x:getbits_stream_p
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.     move    #decoder_scalefactor+0,x0
  265.     move    x0,x:decoder_sf_granule
  266.     move    #decode_return00,x0
  267.     jmp    decode_samples        ;avoid stack overflow!
  268. decode_return00
  269.     move    #decode_return01,x0
  270.     jmp    decode_samples        ;avoid stack overflow!
  271. decode_return01
  272.     move    #decode_return02,x0
  273.     jmp    decode_samples        ;avoid stack overflow!
  274. decode_return02
  275.     move    #decode_return03,x0
  276.     jmp    decode_samples        ;avoid stack overflow!
  277. decode_return03
  278.  
  279.     move    #decoder_scalefactor+1,x0
  280.     move    x0,x:decoder_sf_granule
  281.     move    #decode_return10,x0
  282.     jmp    decode_samples        ;avoid stack overflow!
  283. decode_return10
  284.     move    #decode_return11,x0
  285.     jmp    decode_samples        ;avoid stack overflow!
  286. decode_return11
  287.     move    #decode_return12,x0
  288.     jmp    decode_samples        ;avoid stack overflow!
  289. decode_return12
  290.     move    #decode_return13,x0
  291.     jmp    decode_samples        ;avoid stack overflow!
  292. decode_return13
  293.  
  294.     move    #decoder_scalefactor+2,x0
  295.     move    x0,x:decoder_sf_granule
  296.     move    #decode_return20,x0
  297.     jmp    decode_samples        ;avoid stack overflow!
  298. decode_return20
  299.     move    #decode_return21,x0
  300.     jmp    decode_samples        ;avoid stack overflow!
  301. decode_return21
  302.     move    #decode_return22,x0
  303.     jmp    decode_samples        ;avoid stack overflow!
  304. decode_return22
  305.     move    #decode_return23,x0
  306.     jmp    decode_samples        ;avoid stack overflow!
  307. decode_return23
  308.  
  309.  
  310. exit    move    #0,x0
  311.     rts
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322. ;******************************************************************
  323. decode_samples
  324.     move    x0,x:decode_rts_p
  325.  
  326. ;    ** getbits_init
  327.     move    x:getbits_stream_p,r7
  328.     move    x:getbits_temp_p,r6
  329.     move    x:decoder_getbits_loop_p,r5
  330.     move    (r6)+                ;update r6 (getbits nosave b1)
  331.  
  332.  
  333.     move    #decoder_bitalloc,r0
  334.     move    #decoder_fraction,r1
  335.     move    #2,n1
  336.     move    x:decoder_quantizations,r2
  337.     move    #16,n2
  338.  
  339.     move    x:jsbound,a
  340.     lsl    a    x:decoder_sf_granule,x0
  341.     move    x0,x:decoder_sfp
  342.     move    a,x:decoder_joint_countdown
  343.  
  344. ;    **
  345. ;    ** read+decode samples from bitstream
  346. ;    **
  347.     move    x:sblimit,x0
  348.     move    x0,x:decode_ds_sblimit_count
  349. ds_sb_loop_head
  350.     move    x:decode_ds_sblimit_count,a
  351.     move    #>1,x0
  352.     sub    x0,a
  353.     jeq    ds_sb_loop        ;avoid stack overflow!
  354.     move    a,x:decode_ds_sblimit_count
  355.  
  356.  
  357.     move    x:channels,x0
  358.     do    x0,ds_ch_loop
  359.  
  360. ;    ** update joint-stereo counter and check bitalloc
  361.     move    #>1,x0
  362.     move    x:decoder_joint_countdown,b
  363.     sub    x0,b    x:(r0)+,a
  364.     tst    a    b,x:decoder_joint_countdown
  365.     jne    ds_samples
  366.  
  367. ;    ** fill with zeroes
  368.     move    a,x:(r1)+
  369.     move    a,x:(r1)+
  370.     move    a,x:(r1)+
  371.     jmp    ds_resume
  372.  
  373. ds_samples
  374. ;    ** check if joint-stereo applies
  375.     move    #decoder_old_samples,r3
  376.     jclr    #23,b1,ds_no_joint
  377.     jset    #0,b1,ds_no_joint
  378.  
  379. ;    ** copy old samples for joint-stereo
  380.     move    x:(r3)+,x0
  381.     move    x0,x:(r1)+
  382.     move    x:(r3)+,x0
  383.     move    x0,x:(r1)+
  384.     move    x:(r3)+,x0
  385.     move    x0,x:(r1)-n1
  386.     jmp    ds_scalefactor_adjust
  387.  
  388. ds_no_joint
  389. ;    ** decode samples
  390.     move    a,n2
  391.     move    #table_bits,r3
  392.     move    y:(r2+n2),n3        ; quantization
  393.     move    #16,n2
  394.     move    y:(r3+n3),x0        ; bits
  395.  
  396.     clr    a    n3,y0
  397.     cmp    y0,a    #>1,a
  398.     jeq    ds_fetch_grouping
  399.     cmp    y0,a    #>3,a
  400.     jeq    ds_fetch_grouping
  401.     cmp    y0,a    n3,a
  402.     jeq    ds_fetch_grouping
  403.  
  404. ;    ** no grouping, fetch triplet
  405.     lsl    a    x:(r6),b1    ;current bitstream word
  406.     lsl    a    #table_xmdc,r3
  407.     clr    a    a,n3
  408.     jsr    (r5)
  409.     move    b1,x:(r6)
  410.     move    (r3)+n3
  411.     move    #3,n3
  412.  
  413. ;    ** 'do #3'-loop unrolled to avoid stack overflow!
  414.  
  415. ;    ** remove greatest bit and check
  416. ;    ** if the accumulator should be 0.0 or -1.0
  417.     clr    b    a,x1    y:(r3)+,y0    ; x
  418.     and    y0,a    #-0.5,y1
  419.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  420.     teq    y1,b
  421. ;    ** add constant `d', multiply with
  422. ;    ** the inverse, thus normalize sample,
  423. ;    ** and multiply with the constant `c'
  424.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  425.     add    y0,b    a0,y1
  426.     add    y1,b    y:(r3)-n3,y0        ; c
  427.     move    b,y1
  428.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  429.     move    b,x:(r1)+
  430.  
  431.     clr    a    x:(r6),b1    ;current bitstream word
  432.     jsr    (r5)
  433.     move    b1,x:(r6)
  434. ;    ** remove greatest bit and check
  435. ;    ** if the accumulator should be 0.0 or -1.0
  436.     clr    b    a,x1    y:(r3)+,y0    ; x
  437.     and    y0,a    #-0.5,y1
  438.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  439.     teq    y1,b
  440. ;    ** add constant `d', multiply with
  441. ;    ** the inverse, thus normalize sample,
  442. ;    ** and multiply with the constant `c'
  443.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  444.     add    y0,b    a0,y1
  445.     add    y1,b    y:(r3)-n3,y0        ; c
  446.     move    b,y1
  447.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  448.     move    b,x:(r1)+
  449.  
  450.     clr    a    x:(r6),b1    ;current bitstream word
  451.     jsr    (r5)
  452.     move    b1,x:(r6)
  453. ;    ** remove greatest bit and check
  454. ;    ** if the accumulator should be 0.0 or -1.0
  455.     clr    b    a,x1    y:(r3)+,y0    ; x
  456.     and    y0,a    #-0.5,y1
  457.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  458.     teq    y1,b
  459. ;    ** add constant `d', multiply with
  460. ;    ** the inverse, thus normalize sample,
  461. ;    ** and multiply with the constant `c'
  462.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  463.     add    y0,b    a0,y1
  464.     add    y1,b    y:(r3)-n3,y0        ; c
  465.     move    b,y1
  466.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  467.     move    b,x:(r1)-n1
  468.  
  469.     jmp    ds_scalefactor_adjust
  470.  
  471.  
  472. ds_fetch_grouping
  473. ;    ** fetch grouped triplet
  474.     move    #table_grouping,r3
  475.  
  476.     clr    a    x:(r6),b1    ;current bitstream word
  477.     jsr    (r5)
  478.  
  479.     lsl    a    a,x0
  480.     add    x0,a    y:(r3+n3),r4
  481.     move    a,n4
  482.  
  483.     move    b1,x:(r6)
  484.  
  485.     move    (r4)+n4
  486.     move    y:(r4)+,a
  487.     move    a,x:(r1)+    y:(r4)+,a
  488.     move    a,x:(r1)+    y:(r4)+,a
  489.     move    a,x:(r1)-n1
  490.  
  491.  
  492. ds_scalefactor_adjust
  493. ;    ** multiply samples with the
  494. ;    ** corresponding scalefactors
  495.  
  496.     move    x:decoder_sfp,r3
  497.     move    #3,n3
  498.     nop
  499.     move    x:(r3)+n3,n3
  500.     move    r3,x:decoder_sfp
  501.     move    #table_multiple,r3
  502.     move        x:(r1)+,x1
  503.     move        y:(r3+n3),y0
  504.     move    #decoder_old_samples,r3
  505.     mpyr    x1,y0,a    x:(r1)-,x0
  506.     move        x1,x:(r3)+        ; old samples
  507.     move        x0,x:(r3)+        ; old samples
  508.     mpyr    x0,y0,a    a,x:(r1)+n1
  509.     move        x:(r1)-,x0
  510.     move        x0,x:(r3)+        ; old samples
  511.     mpyr    x0,y0,a    a,x:(r1)+
  512.     move        a,x:(r1)+
  513.  
  514. ds_resume
  515.     nop
  516. ds_ch_loop
  517.     move    (r2)+n2        ; update next to quantization
  518.     jmp    ds_sb_loop_head
  519. ds_sb_loop
  520. ;    ** getbits_exit
  521.     move    r7,x:getbits_stream_p
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529. ;******************************************************************
  530. ;decode_subbands
  531.  
  532.     move    #decoder_fraction,x0
  533.     move    x0,x:decoder_imfct_fractionp
  534.  
  535.     move    #>3,x0
  536.     move    x0,x:decode_tr3_count
  537. tr_loop_head
  538.  
  539.     move    x:decoder_imfct_fractionp,r0
  540.  
  541.     move    #decoder_pcm64,x0
  542.     move    x0,x:decoder_pcmp
  543.  
  544.     move    x:channels,b            ;1 or 2
  545. ch_loop_head
  546.     lsr    b
  547.     move    b,x:decode_channels_count    ;0 or 1
  548.     
  549. ;    **
  550. ;    ** perform inverse modified fast cosine transform
  551. ;    **
  552.     move    x:decoder_imfct_delta,n0
  553.  
  554. ;    ** first butterfly pass
  555.     move    x:decoder_imfct_p,r1
  556.     move    r1,r5
  557.     move    #0.7071067812,y0        ; cos(pi/4)
  558.     move            x:(r0)+n0,x0
  559.     do    #8,bfy1
  560.     mpyr     x0,y0,a    x:(r0)+n0,x0
  561.     mpyr    -x0,y0,a    a,x:(r1)+    a,y:(r5)+
  562.     move            a,x:(r1)+
  563.     mpyr     x0,y0,a    x:(r0)+n0,x0
  564.     mpyr    -x0,y0,a    x:(r0)+n0,x0    a,y:(r5)+
  565.     mpyr     x0,y0,a    a,x:(r1)+    a,y:(r5)+
  566.     mpyr    -x0,y0,a    a,x:(r1)+
  567.     move            x:(r0)+n0,x0    a,y:(r5)+
  568. bfy1
  569.  
  570. ;    ** second butterfly pass
  571.     move    x:decoder_imfct_p,r0
  572.     move    x:decoder_imfct_p16,r4
  573.     move    x:decoder_imfct_p32,r6
  574.     move    x:decoder_imfct_p48,r5
  575.     do    #16,bfy2
  576.     move            x:(r0),b    y:(r4),y0
  577.     add    y0,b        x:(r4),x1    y:(r0),a
  578.     sub    x1,a        b,x:(r5)    y:(r0),b
  579.     add    x1,b        x:(r0),a    a,y:(r5)+
  580.     sub    y0,a        x:(r0),b    b,y:(r6)
  581.     sub    x1,b        a,x:(r6)+    y:(r0),a
  582.     sub    y0,a        b,x:(r4)    y:(r0),b
  583.     add    y0,b        x:(r0),a    a,y:(r4)+
  584.     add    x1,a        b,y:(r0)
  585.     move            a,x:(r0)+
  586. bfy2
  587.  
  588. ;    ** perform the rest of the butterfly passes
  589. ;    ** 'do #4'-loop unrolled to avoid stack overflow!
  590.  
  591.  
  592. ;    ** pass 3
  593.     move    x:decoder_imfct_p,r0
  594.     move    x:decoder_tab_rsincosx_p,r1
  595.     move    r1,r6
  596.     move    #8,n0
  597.     do    #4,grp3
  598.     lua    (r0)+n0,r5
  599.     move    r0,r4
  600.     move    r5,r2
  601.     move            x:(r1)+,x0
  602.     move            x:(r0),b    y:(r5),y1
  603.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  604. ;    ** butterfly kernel
  605.     do    n0,bfy3
  606.     macr    y0,x1,b        x:(r0),a
  607.     subl    b,a        b,x:(r0)    y:(r4)+,b
  608.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  609.     macr    x0,x1,b                y:(r0),a
  610.     subl    b,a        x:(r4),b    b,y:(r0)+
  611.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  612. bfy3    move    (r0)+n0
  613. grp3
  614.  
  615.  
  616. ;    ** pass 4
  617.     move    x:decoder_imfct_p,r0
  618.     move    x:decoder_tab_rsincosx_p,r1
  619.     move    r1,r6
  620.     move    #4,n0
  621.     do    #8,grp4
  622.     lua    (r0)+n0,r5
  623.     move    r0,r4
  624.     move    r5,r2
  625.     move            x:(r1)+,x0
  626.     move            x:(r0),b    y:(r5),y1
  627.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  628. ;    ** butterfly kernel
  629.     do    n0,bfy4
  630.     macr    y0,x1,b        x:(r0),a
  631.     subl    b,a        b,x:(r0)    y:(r4)+,b
  632.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  633.     macr    x0,x1,b                y:(r0),a
  634.     subl    b,a        x:(r4),b    b,y:(r0)+
  635.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  636. bfy4    move    (r0)+n0
  637. grp4
  638.  
  639.  
  640. ;    ** pass 5
  641.     move    x:decoder_imfct_p,r0
  642.     move    x:decoder_tab_rsincosx_p,r1
  643.     move    r1,r6
  644.     move    #2,n0
  645.     do    #16,grp5
  646.     lua    (r0)+n0,r5
  647.     move    r0,r4
  648.     move    r5,r2
  649.     move            x:(r1)+,x0
  650.     move            x:(r0),b    y:(r5),y1
  651.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  652. ;    ** butterfly kernel
  653.     do    n0,bfy5
  654.     macr    y0,x1,b        x:(r0),a
  655.     subl    b,a        b,x:(r0)    y:(r4)+,b
  656.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  657.     macr    x0,x1,b                y:(r0),a
  658.     subl    b,a        x:(r4),b    b,y:(r0)+
  659.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  660. bfy5    move    (r0)+n0
  661. grp5
  662.  
  663.  
  664. ;    ** pass 6
  665.     move    x:decoder_imfct_p,r0
  666.     move    x:decoder_tab_rsincosx_p,r1
  667.     move    r1,r6
  668.     move    #1,n0
  669.     do    #32,grp6
  670.     lua    (r0)+n0,r5
  671.     move    r0,r4
  672.     move    r5,r2
  673.     move            x:(r1)+,x0
  674.     move            x:(r0),b    y:(r5),y1
  675.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  676. ;    ** butterfly kernel
  677. ;;;;;    do    n0,bfy6
  678.     macr    y0,x1,b        x:(r0),a
  679.     subl    b,a        b,x:(r0)    y:(r4)+,b
  680.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  681.     macr    x0,x1,b                y:(r0),a
  682.     subl    b,a        x:(r4),b    b,y:(r0)+
  683.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  684. bfy6    move    (r0)+n0
  685. grp6
  686.  
  687. ;    ** unscrambling and final adjustments
  688.     move    x:decoder_imfct_p,r0
  689.     move    x:decoder_audiop,r1
  690.     move    #table_cosx,r4
  691.     move    #table_sinx,r6
  692.     movec    #0,m0            ; bit-reversed addressing
  693.     move    #64/2,n0
  694.     move    x:(r0),x1    y:(r6)+,y0
  695.     move    y:(r4)+,y1
  696.     do    #64,unscramble_loop
  697.     mpy    y1,x1,a                y:(r0)+n0,y1
  698.     macr    -y0,y1,a    x:(r0),x1    y:(r6)+,y0
  699.     move            a,x:(r1)+    y:(r4)+,y1
  700. unscramble_loop
  701.     movec    #$ffff,m0        ; linear addressing
  702.  
  703.  
  704. ;    ** window audio data
  705.     move    x:decoder_audiop,r0
  706.     move    r0,r1
  707.     move    x:decoder_pcmp,r5
  708.     movec    x:decoder_audio_mask,m0
  709.     movec    m0,m1
  710.  
  711.     move    #>32,x0
  712.     move    x:decoder_audio_delta,a
  713.     add    x0,a        a,b
  714.     move    a,n1
  715.     lsl    b        #table_window,r4
  716.     move    (r1)+n1
  717.  
  718.     move    x:decoder_window_loop_p,r3
  719.  
  720.     move    b1,n0
  721.     move    b1,n1
  722.  
  723.     jsr    (r3)
  724.  
  725.     move    r5,x:decoder_pcmp
  726.     movec    #$ffff,m0        ; linear addressing
  727.     movec    m0,m1
  728.  
  729.  
  730.     
  731. ;    ** update pointer to next channel
  732.     move    #>3,x0
  733.     move    x:decoder_imfct_fractionp,a
  734.     add    x0,a        #>64,y0
  735.     move    a,r0
  736.  
  737.     move    x:decoder_audiop,a
  738.     add    y0,a        x:decode_channels_count,b
  739.     move    a,x:decoder_audiop
  740.  
  741.     tst    b
  742.     jne    ch_loop_head        ;avoid stack overflow!
  743. ;ch_loop
  744.  
  745. ;    ** finally: write audio data to output buffer
  746.     move    x:out_p,r4
  747.     move    #decoder_pcm64,r0
  748.     move    #decoder_pcm64+32,r1
  749.     move    #>3,y1
  750.     do    #32,out_loop
  751.     move    x:(r0)+,x1
  752.     mpy    x1,y1,b        x:(r1)+,x1
  753.     mpy    x1,y1,b        b0,x:(r4)
  754.     move    b0,y:(r4)+
  755. out_loop
  756.     move    r4,x:out_p
  757.  
  758.  
  759.  
  760. ;    ** fraction pointer to next triplet
  761. ;    ** and update audio buffer pointers
  762.     move    x:decoder_imfct_fractionp,a
  763.     move    #>1,x0
  764.     move    x:decoder_audiop,r0
  765.     add    x0,a        x:decoder_audio_delta,n0
  766.     move    a,x:decoder_imfct_fractionp
  767.     move    (r0)-n0
  768.     movec    x:decoder_audio_mask,m0
  769.  
  770.     move    x:decode_tr3_count,a
  771.  
  772.     sub    x0,a    (r0)-n0
  773.     move    a,x:decode_tr3_count
  774.  
  775.     movec    #$ffff,m0
  776.     tst    a    r0,x:decoder_audiop
  777.     jne    tr_loop_head        ;avoid stack overflow!
  778. ;tr_loop
  779.  
  780.  
  781.     move    x:decode_rts_p,r0
  782.     nop
  783.     jmp    (r0)            ;'rts'-replacement
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795. window_loop_start
  796.     do    #32,window_loop
  797.     move            x:(r0)+n0,x0    y:(r4)+,y0
  798.     mpy    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  799.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  800.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  801.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  802.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  803.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  804.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  805.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  806.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  807.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  808.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  809.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  810.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  811.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  812.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  813.     macr    x0,y0,a        (r0)+
  814.     move            a,x:(r5)+    y:(r1)+,y0    ;update r1
  815. window_loop
  816.     rts
  817. window_loop_end
  818. ;        ** 21 words
  819.  
  820.  
  821.  
  822. getbits_loop_start
  823.     do    x0,getbits_loop
  824.     lsl    b
  825.     jne    getbits_ne    ;(patch for short jump)
  826. getbits_cp
  827.     move    x:(r7)+,b1
  828.     lsl    b
  829.     rol    a
  830.     bset    #0,b1        ;append -end- bit
  831.     ror    a
  832. getbits_ne
  833.     rol    a
  834. getbits_loop
  835.     rts
  836. getbits_loop_end
  837. ;        ** 12 words (11 words with 'jne' short jump)
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848. ;*** initialize ************************
  849. ; parameters
  850. ;  x1 - mem_mp2 (96 words in INTERNAL L-memory)
  851. ;  x0 - mem_mp2p (32 words in INTERNAL P-memory)
  852. ;  y1 - /
  853. ;  y0 - /
  854. init
  855.  
  856. ;    ** fast L-data buffer for IMFCT routine
  857.     tfr    x1,a    #>16,x1
  858.     tst    a
  859.     jeq    init_no_lmem
  860.     add    x1,a    a,x:decoder_imfct_p
  861.     add    x1,a    a,x:decoder_imfct_p16
  862.     add    x1,a    a,x:decoder_imfct_p32
  863.     add    x1,a    a,x:decoder_imfct_p48
  864.  
  865. ;    ** rsinx_rcosx table to fast L-data memory
  866.     move    a,x:decoder_tab_rsincosx_p
  867.     move    #table_rsinx_rcosx,r0
  868.     move    a,r4
  869.     move    x:(r0),a
  870.     do    #32,init_loop0
  871.     move    a,x:(r4)    y:(r0)+,a
  872.     move    x:(r0),a    a,y:(r4)+
  873. init_loop0
  874.  
  875. init_no_lmem
  876.  
  877.  
  878.     tfr    x0,a    #window_loop_start,r0
  879.     tst    a    x0,r1
  880.     jeq    init_no_pmem
  881.  
  882.  
  883. ;    ** sample window loop to fast program memory
  884.     move    x0,x:decoder_window_loop_p
  885.     move    x0,r2
  886.     do    #window_loop_end-window_loop_start,init_loop1
  887.     movem    p:(r0)+,x1
  888.     movem    x1,p:(r1)+
  889. init_loop1
  890.     tfr    x0,a    (r2)+
  891.     move    #>window_loop-window_loop_start-1,x0
  892.     add    x0,a            ;patch absolute address 
  893.     movem    a,p:(r2)        ;in 'do'-instruction
  894.  
  895.  
  896. ;    ** getbits loop to fast program memory
  897.     move    #getbits_loop_start,r0
  898.     move    r1,x:decoder_getbits_loop_p
  899.     move    r1,a
  900.     move    r1,b
  901.  
  902.     movem    p:(r0)+,x1
  903.     movem    x1,p:(r1)+        ;copy first word of 'do'
  904.     move    #>getbits_loop-getbits_loop_start-1-1,x0
  905.     add    x0,a        (r0)+
  906.     movem    a,p:(r1)+        ;second word of 'do' (absolute address)
  907.  
  908.     movem    p:(r0)+,x1
  909.     movem    x1,p:(r1)+        ;copy 'lsl b'
  910.  
  911.     move    #>getbits_ne-getbits_loop_start-1,x0
  912.     add    x0,b        (r0)+
  913.     move    #$0e2000,x0
  914.     or    x0,b        (r0)+
  915.     movem    b,p:(r1)+        ;short jump 'jne getbits_ne'
  916.  
  917.     do    #getbits_loop_end-getbits_cp,init_loop2
  918.     movem    p:(r0)+,x1
  919.     movem    x1,p:(r1)+        ;copy the rest
  920. init_loop2
  921.  
  922. init_no_pmem
  923.  
  924.     rts
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.     org    l:
  933.     align    64
  934. decoder_imfct_slow    ds    64
  935.  
  936. table_rsinx_rcosx
  937. ;    **    x:rsinx        y:rcosx
  938.     dcl    0.000000,     0.999999
  939.     dcl    0.999999,     0.000000
  940.     dcl    0.707107,     0.707107
  941.     dcl    0.707107,    -0.707107
  942.     dcl    0.382683,     0.923880
  943.     dcl    0.923880,    -0.382683
  944.     dcl    0.923880,     0.382683
  945.     dcl    0.382683,    -0.923880
  946.     dcl    0.195090,     0.980785
  947.     dcl    0.980785,    -0.195090
  948.     dcl    0.831470,     0.555570
  949.     dcl    0.555570,    -0.831470
  950.     dcl    0.555570,     0.831470
  951.     dcl    0.831470,    -0.555570
  952.     dcl    0.980785,     0.195090
  953.     dcl    0.195090,    -0.980785
  954.     dcl    0.098017,     0.995185
  955.     dcl    0.995185,    -0.098017
  956.     dcl    0.773010,     0.634393
  957.     dcl    0.634393,    -0.773010
  958.     dcl    0.471397,     0.881921
  959.     dcl    0.881921,    -0.471397
  960.     dcl    0.956940,     0.290285
  961.     dcl    0.290285,    -0.956940
  962.     dcl    0.290285,     0.956940
  963.     dcl    0.956940,    -0.290285
  964.     dcl    0.881921,     0.471397
  965.     dcl    0.471397,    -0.881921
  966.     dcl    0.634393,     0.773010
  967.     dcl    0.773010,    -0.634393
  968.     dcl    0.995185,     0.098017
  969.     dcl    0.098017,    -0.995185
  970.  
  971.  
  972.  
  973.  
  974. ;;vars
  975.  
  976.     org    x:
  977.     align    2048
  978. decoder_audio    ds    2048
  979.  
  980. ;->xdata+2048
  981. inbuf    ds    600    ;MPG_MAXFRAMESIZE=1792
  982.  
  983.  
  984. channels    ds    1
  985. out_p        ds    1
  986. translate    ds    1
  987. sblimit        ds    1
  988. jsbound        ds    1
  989.  
  990. getbits_stream_p    ds    1
  991. getbits_temp_p        dc    getbits_temp_slow
  992. getbits_temp_slow    ds    2
  993.  
  994. decode_rts_p        ds    1
  995. decode_ds_sblimit_count    ds    1
  996. decode_tr3_count    ds    1
  997. decode_channels_count    ds    1
  998.  
  999. decoder_bitalloc    ds    2*32
  1000. decoder_scfsi        ds    2*32
  1001. decoder_scalefactor    ds    2*32*3
  1002. decoder_fraction    ds    2*32*3
  1003. decoder_old_samples    ds    3
  1004.  
  1005. decoder_sfp        ds    1
  1006. decoder_sf_granule    ds    1
  1007. decoder_quantizations    ds    1
  1008. decoder_nbals        ds    1
  1009. decoder_joint_countdown    ds    1
  1010.  
  1011. decoder_audiop        dc    decoder_audio
  1012. decoder_audio_mask    ds    1
  1013. decoder_audio_delta    ds    1
  1014.  
  1015. decoder_pcmp        ds    1
  1016.  
  1017. decoder_imfct_p        dc    decoder_imfct_slow
  1018. decoder_imfct_p16    dc    decoder_imfct_slow+16
  1019. decoder_imfct_p32    dc    decoder_imfct_slow+32
  1020. decoder_imfct_p48    dc    decoder_imfct_slow+48
  1021.  
  1022. decoder_window_loop_p    dc    window_loop_start
  1023. decoder_getbits_loop_p    dc    getbits_loop_start
  1024. decoder_tab_rsincosx_p    dc    table_rsinx_rcosx
  1025.  
  1026. decoder_imfct_fractionp    ds    1
  1027. decoder_imfct_delta    ds    1
  1028.  
  1029. decoder_pcm64        ds    64
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.     org    y:
  1036. table_window
  1037.     dc    $000000,$fff8c1,$003540,$ff8d41,$01fd40,$faf7c1,$066b80,$db63c1
  1038.     dc    $494780,$249c40,$066b80,$050840,$01fd40,$0072c0,$003540,$000740
  1039.     dc    $ffffc1,$fff841,$003680,$ff7e41,$01f400,$fa9cc1,$05d1c0,$d99601
  1040.     dc    $493c00,$22ce00,$06f780,$04ad00,$0203c0,$006440,$003400,$000680
  1041.     dc    $ffffc1,$fff741,$003780,$ff6ec1,$01e800,$fa4241,$052a00,$d7ca01
  1042.     dc    $491a00,$20ffc0,$077600,$045240,$020800,$0056c0,$003280,$000600
  1043.     dc    $ffffc1,$fff681,$003840,$ff5ec1,$01d940,$f9e8c1,$047440,$d60081
  1044.     dc    $48e180,$1f32c0,$07e700,$03f7c0,$0209c0,$004980,$003100,$000540
  1045.     dc    $ffffc1,$fff5c1,$0038c0,$ff4e41,$01c780,$f990c1,$03b000,$d43ac1
  1046.     dc    $489240,$1d6800,$084b00,$039e40,$020940,$003d00,$002f80,$0004c0
  1047.     dc    $ffffc1,$fff4c1,$003900,$ff3d41,$01b2c0,$f93a41,$02ddc0,$d279c1
  1048.     dc    $482d00,$1ba040,$08a200,$0345c0,$0206c0,$003140,$002dc0,$000440
  1049.     dc    $ffffc1,$fff3c1,$003900,$ff2c01,$019b00,$f8e641,$01fd40,$d0be81
  1050.     dc    $47b1c0,$19dc80,$08ecc0,$02ef00,$020240,$002640,$002c00,$000400
  1051.     dc    $ffff81,$fff2c1,$0038c0,$ff1a41,$017fc0,$f894c1,$010e80,$cf09c1
  1052.     dc    $4720c0,$181d80,$092b40,$0299c0,$01fc00,$001bc0,$002a40,$000380
  1053.     dc    $ffff81,$fff181,$003800,$ff0841,$016180,$f84681,$001180,$cd5cc1
  1054.     dc    $467a40,$166440,$095e00,$024680,$01f440,$001200,$002840,$000340
  1055.     dc    $ffff81,$fff041,$003740,$fef601,$014000,$f7fbc1,$ff0681,$cbb881
  1056.     dc    $45bf00,$14b140,$098580,$01f580,$01ea80,$000900,$002680,$0002c0
  1057.     dc    $ffff81,$ffef01,$0035c0,$fee3c1,$011ac0,$f7b541,$fded81,$ca1d81
  1058.     dc    $44ef80,$130580,$09a1c0,$01a700,$01dfc0,$000080,$0024c0,$000280
  1059.     dc    $ffff41,$ffedc1,$003400,$fed181,$00f280,$f77341,$fcc701,$c88d81
  1060.     dc    $440bc0,$1161c0,$09b3c0,$015b00,$01d380,$fff8c1,$0022c0,$000240
  1061.     dc    $ffff41,$ffec41,$003200,$febf41,$00c680,$f73681,$fb92c1,$c708c1
  1062.     dc    $431500,$0fc6c0,$09bb80,$0111c0,$01c640,$fff1c1,$002100,$000200
  1063.     dc    $ffff01,$ffeac1,$002f40,$fead01,$009740,$f6ff41,$fa5181,$c59081
  1064.     dc    $420b40,$0e3500,$09b9c0,$00cb80,$01b7c0,$ffeb41,$001f40,$0001c0
  1065.     dc    $ffff01,$ffe941,$002c40,$fe9b01,$006480,$f6ce01,$f90381,$c425c1
  1066.     dc    $40ef80,$0cad00,$09af00,$008840,$01a880,$ffe581,$001d40,$0001c0
  1067.     dc    $fffec1,$ffe7c1,$0028c0,$fe8981,$002e40,$f6a3c1,$f7a901,$c2c901
  1068.     dc    $3fc280,$0b2fc0,$099b80,$004800,$019880,$ffe041,$001bc0,$000180
  1069.     dc    $fffec1,$ffe601,$002480,$fe7841,$fff4c1,$f68041,$f64241,$c17b41
  1070.     dc    $3e84c0,$09bdc0,$097fc0,$000b40,$0187c0,$ffdb81,$001a00,$000140
  1071.     dc    $fffe81,$ffe441,$001fc0,$fe6781,$ffb801,$f66481,$f4d041,$c03d81
  1072.     dc    $3d3700,$085700,$095c40,$ffd1c1,$017680,$ffd741,$001840,$000140
  1073.     dc    $fffe41,$ffe2c1,$001a80,$fe5781,$ff77c1,$f65101,$f35301,$bf1081
  1074.     dc    $3bda40,$06fc80,$093200,$ff9b81,$016500,$ffd3c1,$0016c0,$000100
  1075.     dc    $fffe41,$ffe0c1,$0014c0,$fe4841,$ff3481,$f64641,$f1cb01,$bdf4c1
  1076.     dc    $3a6f80,$05ae80,$0900c0,$ff68c1,$015300,$ffd0c1,$001540,$000100
  1077.     dc    $fffe01,$ffdf01,$000e40,$fe39c1,$feee41,$f64481,$f03941,$bceb01
  1078.     dc    $38f740,$046d40,$08c980,$ff3981,$0140c0,$ffce01,$0013c0,$0000c0
  1079.     dc    $fffdc1,$ffdd41,$000740,$fe2c81,$fea501,$f64c41,$ee9e41,$bbf441
  1080.     dc    $377280,$033900,$088cc0,$ff0d81,$012e80,$ffcc01,$001240,$0000c0
  1081.     dc    $fffd81,$ffdb41,$ffff81,$fe2041,$fe5901,$f65e41,$ecfa81,$bb1081
  1082.     dc    $35e280,$021280,$084ac0,$fee541,$011c40,$ffca41,$001100,$000080
  1083.     dc    $fffd41,$ffd981,$fff701,$fe1581,$fe0a81,$f67a81,$eb4ec1,$ba4101
  1084.     dc    $344780,$00f980,$080440,$fec001,$010a00,$ffc8c1,$000fc0,$000080
  1085.     dc    $fffcc1,$ffd7c1,$ffee01,$fe0bc1,$fdb981,$f6a201,$e99bc1,$b985c1
  1086.     dc    $32a340,$ffee81,$07b980,$fe9e81,$00f7c0,$ffc801,$000e80,$000080
  1087.     dc    $fffc81,$ffd5c1,$ffe441,$fe0401,$fd6641,$f6d4c1,$e7e281,$b8df41
  1088.     dc    $30f640,$fef181,$076b40,$fe8041,$00e5c0,$ffc741,$000d40,$000080
  1089.     dc    $fffc01,$ffd401,$ffd9c1,$fdfdc1,$fd1101,$f71341,$e62381,$b84e41
  1090.     dc    $2f4180,$fe02c1,$0719c0,$fe6501,$00d400,$ffc701,$000c40,$000040
  1091.     dc    $fffbc1,$ffd241,$ffcec1,$fdf941,$fcba41,$f75e01,$e45fc1,$b7d301
  1092.     dc    $2d8640,$fd2241,$06c5c0,$fe4d41,$00c2c0,$ffc701,$000b40,$000040
  1093.     dc    $fffb41,$ffd081,$ffc301,$fdf6c1,$fc61c1,$f7b501,$e29801,$b76dc1
  1094.     dc    $2bc540,$fc5001,$066f40,$fe3881,$00b1c0,$ffc741,$000a40,$000040
  1095.     dc    $fffac1,$ffcf01,$ffb681,$fdf641,$fc0841,$f81901,$e0cd41,$b71e81
  1096.     dc    $29ff80,$fb8bc1,$061740,$fe26c1,$00a140,$ffc7c1,$000980,$000040
  1097.     dc    $fffa01,$ffcd81,$ffa941,$fdf801,$fbadc1,$f88a01,$df0041,$b6e601
  1098.     dc    $283600,$fad601,$05bdc0,$fe1801,$009140,$ffc881,$0008c0,$000040
  1099.     dc    $fff981,$ffcc01,$ff9bc1,$fdfc41,$fb5301,$f90881,$dd3201,$b6c401
  1100.     dc    $266a00,$fa2e41,$056340,$fe0c01,$0081c0,$ffc981,$0007c0,$000040
  1101. table_sinx
  1102.     dc    0.000000,0.049068,0.098017,0.146730
  1103.     dc    0.195090,0.242980,0.290285,0.336890
  1104.     dc    0.382683,0.427555,0.471397,0.514103
  1105.     dc    0.555570,0.595699,0.634393,0.671559
  1106.     dc    0.707107,0.740951,0.773010,0.803208
  1107.     dc    0.831470,0.857729,0.881921,0.903989
  1108.     dc    0.923880,0.941544,0.956940,0.970031
  1109.     dc    0.980785,0.989177,0.995185,0.998795
  1110.     dc    0.999999,0.998795,0.995185,0.989177
  1111.     dc    0.980785,0.970031,0.956940,0.941544
  1112.     dc    0.923880,0.903989,0.881921,0.857729
  1113.     dc    0.831470,0.803208,0.773010,0.740951
  1114.     dc    0.707107,0.671559,0.634393,0.595699
  1115.     dc    0.555570,0.514103,0.471397,0.427555
  1116.     dc    0.382683,0.336890,0.290285,0.242980
  1117.     dc    0.195090,0.146730,0.098017,0.049068
  1118. table_cosx
  1119.     dc    0.999999,0.998795,0.995185,0.989177
  1120.     dc    0.980785,0.970031,0.956940,0.941544
  1121.     dc    0.923880,0.903989,0.881921,0.857729
  1122.     dc    0.831470,0.803208,0.773010,0.740951
  1123.     dc    0.707107,0.671559,0.634393,0.595699
  1124.     dc    0.555570,0.514103,0.471397,0.427555
  1125.     dc    0.382683,0.336890,0.290285,0.242980
  1126.     dc    0.195090,0.146730,0.098017,0.049068
  1127.     dc    0.000000,-0.049068,-0.098017,-0.146730
  1128.     dc    -0.195090,-0.242980,-0.290285,-0.336890
  1129.     dc    -0.382683,-0.427555,-0.471397,-0.514103
  1130.     dc    -0.555570,-0.595699,-0.634393,-0.671559
  1131.     dc    -0.707107,-0.740951,-0.773010,-0.803208
  1132.     dc    -0.831470,-0.857729,-0.881921,-0.903989
  1133.     dc    -0.923880,-0.941544,-0.956940,-0.970031
  1134.     dc    -0.980785,-0.989177,-0.995185,-0.998795
  1135.  
  1136.  
  1137. ;; Sampling grouping tables.
  1138. table_grouping
  1139.     dc    table_quantization_group_0
  1140.     dc    table_quantization_group_1
  1141.     dc    0
  1142.     dc    table_quantization_group_3
  1143. table_quantization_group_0
  1144.     dc    $d55557,$d55557,$d55557,$000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557
  1145.     dc    $000000,$000000,$d55557,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557
  1146.     dc    $2aaaaa,$2aaaaa,$d55557,$d55557,$d55557,$000000,$000000,$d55557,$000000,$2aaaaa,$d55557,$000000
  1147.     dc    $d55557,$000000,$000000,$000000,$000000,$000000,$2aaaaa,$000000,$000000,$d55557,$2aaaaa,$000000
  1148.     dc    $000000,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$000000,$d55557,$2aaaaa
  1149.     dc    $2aaaaa,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$000000,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa
  1150.     dc    $d55557,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$d55557,$d55557,$d55557
  1151.     dc    $000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557,$000000,$000000,$d55557
  1152. table_quantization_group_1
  1153.     dc    $ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce,$199999,$ccccce,$ccccce
  1154.     dc    $333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$e66668,$e66668,$ccccce,$000000,$e66668,$ccccce
  1155.     dc    $199999,$e66668,$ccccce,$333333,$e66668,$ccccce,$ccccce,$000000,$ccccce,$e66668,$000000,$ccccce
  1156.     dc    $000000,$000000,$ccccce,$199999,$000000,$ccccce,$333333,$000000,$ccccce,$ccccce,$199999,$ccccce
  1157.     dc    $e66668,$199999,$ccccce,$000000,$199999,$ccccce,$199999,$199999,$ccccce,$333333,$199999,$ccccce
  1158.     dc    $ccccce,$333333,$ccccce,$e66668,$333333,$ccccce,$000000,$333333,$ccccce,$199999,$333333,$ccccce
  1159.     dc    $333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$e66668,$ccccce,$e66668,$000000,$ccccce,$e66668
  1160.     dc    $199999,$ccccce,$e66668,$333333,$ccccce,$e66668,$ccccce,$e66668,$e66668,$e66668,$e66668,$e66668
  1161.     dc    $000000,$e66668,$e66668,$199999,$e66668,$e66668,$333333,$e66668,$e66668,$ccccce,$000000,$e66668
  1162.     dc    $e66668,$000000,$e66668,$000000,$000000,$e66668,$199999,$000000,$e66668,$333333,$000000,$e66668
  1163.     dc    $ccccce,$199999,$e66668,$e66668,$199999,$e66668,$000000,$199999,$e66668,$199999,$199999,$e66668
  1164.     dc    $333333,$199999,$e66668,$ccccce,$333333,$e66668,$e66668,$333333,$e66668,$000000,$333333,$e66668
  1165.     dc    $199999,$333333,$e66668,$333333,$333333,$e66668,$ccccce,$ccccce,$000000,$e66668,$ccccce,$000000
  1166.     dc    $000000,$ccccce,$000000,$199999,$ccccce,$000000,$333333,$ccccce,$000000,$ccccce,$e66668,$000000
  1167.     dc    $e66668,$e66668,$000000,$000000,$e66668,$000000,$199999,$e66668,$000000,$333333,$e66668,$000000
  1168.     dc    $ccccce,$000000,$000000,$e66668,$000000,$000000,$000000,$000000,$000000,$199999,$000000,$000000
  1169.     dc    $333333,$000000,$000000,$ccccce,$199999,$000000,$e66668,$199999,$000000,$000000,$199999,$000000
  1170.     dc    $199999,$199999,$000000,$333333,$199999,$000000,$ccccce,$333333,$000000,$e66668,$333333,$000000
  1171.     dc    $000000,$333333,$000000,$199999,$333333,$000000,$333333,$333333,$000000,$ccccce,$ccccce,$199999
  1172.     dc    $e66668,$ccccce,$199999,$000000,$ccccce,$199999,$199999,$ccccce,$199999,$333333,$ccccce,$199999
  1173.     dc    $ccccce,$e66668,$199999,$e66668,$e66668,$199999,$000000,$e66668,$199999,$199999,$e66668,$199999
  1174.     dc    $333333,$e66668,$199999,$ccccce,$000000,$199999,$e66668,$000000,$199999,$000000,$000000,$199999
  1175.     dc    $199999,$000000,$199999,$333333,$000000,$199999,$ccccce,$199999,$199999,$e66668,$199999,$199999
  1176.     dc    $000000,$199999,$199999,$199999,$199999,$199999,$333333,$199999,$199999,$ccccce,$333333,$199999
  1177.     dc    $e66668,$333333,$199999,$000000,$333333,$199999,$199999,$333333,$199999,$333333,$333333,$199999
  1178.     dc    $ccccce,$ccccce,$333333,$e66668,$ccccce,$333333,$000000,$ccccce,$333333,$199999,$ccccce,$333333
  1179.     dc    $333333,$ccccce,$333333,$ccccce,$e66668,$333333,$e66668,$e66668,$333333,$000000,$e66668,$333333
  1180.     dc    $199999,$e66668,$333333,$333333,$e66668,$333333,$ccccce,$000000,$333333,$e66668,$000000,$333333
  1181.     dc    $000000,$000000,$333333,$199999,$000000,$333333,$333333,$000000,$333333,$ccccce,$199999,$333333
  1182.     dc    $e66668,$199999,$333333,$000000,$199999,$333333,$199999,$199999,$333333,$333333,$199999,$333333
  1183.     dc    $ccccce,$333333,$333333,$e66668,$333333,$333333,$000000,$333333,$333333,$199999,$333333,$333333
  1184.     dc    $333333,$333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce
  1185. table_quantization_group_3
  1186.     dc    $c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73,$c71c73
  1187.     dc    $000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73,$c71c73
  1188.     dc    $38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73,$e38e3a,$d55557,$c71c73
  1189.     dc    $f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557,$c71c73
  1190.     dc    $2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a,$c71c73
  1191.     dc    $e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a,$c71c73
  1192.     dc    $1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73
  1193.     dc    $d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e,$c71c73
  1194.     dc    $0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e,$c71c73
  1195.     dc    $c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73,$f1c71e,$000000,$c71c73
  1196.     dc    $000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73,$2aaaaa,$000000,$c71c73
  1197.     dc    $38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3,$c71c73
  1198.     dc    $f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3,$c71c73
  1199.     dc    $2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7,$c71c73
  1200.     dc    $e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7,$c71c73
  1201.     dc    $1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73
  1202.     dc    $d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa,$c71c73
  1203.     dc    $0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa,$c71c73
  1204.     dc    $c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e,$c71c73
  1205.     dc    $000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e,$c71c73
  1206.     dc    $38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557,$e38e3a,$c71c73,$d55557
  1207.     dc    $f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557,$1c71c7,$c71c73,$d55557
  1208.     dc    $2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557,$d55557,$d55557,$d55557
  1209.     dc    $e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557,$0e38e3,$d55557,$d55557
  1210.     dc    $1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557,$c71c73,$e38e3a,$d55557
  1211.     dc    $d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557,$000000,$e38e3a,$d55557
  1212.     dc    $0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557,$38e38e,$e38e3a,$d55557
  1213.     dc    $c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557,$f1c71e,$f1c71e,$d55557
  1214.     dc    $000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557,$2aaaaa,$f1c71e,$d55557
  1215.     dc    $38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557,$e38e3a,$000000,$d55557
  1216.     dc    $f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557,$1c71c7,$000000,$d55557
  1217.     dc    $2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557,$d55557,$0e38e3,$d55557
  1218.     dc    $e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557,$0e38e3,$0e38e3,$d55557
  1219.     dc    $1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557
  1220.     dc    $d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557,$000000,$1c71c7,$d55557
  1221.     dc    $0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557,$38e38e,$1c71c7,$d55557
  1222.     dc    $c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557,$f1c71e,$2aaaaa,$d55557
  1223.     dc    $000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557,$2aaaaa,$2aaaaa,$d55557
  1224.     dc    $38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557,$e38e3a,$38e38e,$d55557
  1225.     dc    $f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557,$1c71c7,$38e38e,$d55557
  1226.     dc    $2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$d55557,$c71c73,$e38e3a
  1227.     dc    $e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a,$0e38e3,$c71c73,$e38e3a
  1228.     dc    $1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a
  1229.     dc    $d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a,$000000,$d55557,$e38e3a
  1230.     dc    $0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a,$38e38e,$d55557,$e38e3a
  1231.     dc    $c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$f1c71e,$e38e3a,$e38e3a
  1232.     dc    $000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$2aaaaa,$e38e3a,$e38e3a
  1233.     dc    $38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a,$e38e3a,$f1c71e,$e38e3a
  1234.     dc    $f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$1c71c7,$f1c71e,$e38e3a
  1235.     dc    $2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$d55557,$000000,$e38e3a
  1236.     dc    $e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a,$0e38e3,$000000,$e38e3a
  1237.     dc    $1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a
  1238.     dc    $d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$000000,$0e38e3,$e38e3a
  1239.     dc    $0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$38e38e,$0e38e3,$e38e3a
  1240.     dc    $c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$f1c71e,$1c71c7,$e38e3a
  1241.     dc    $000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$2aaaaa,$1c71c7,$e38e3a
  1242.     dc    $38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa,$e38e3a
  1243.     dc    $f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa,$e38e3a
  1244.     dc    $2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$d55557,$38e38e,$e38e3a
  1245.     dc    $e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a,$0e38e3,$38e38e,$e38e3a
  1246.     dc    $1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e
  1247.     dc    $d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e,$000000,$c71c73,$f1c71e
  1248.     dc    $0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e,$38e38e,$c71c73,$f1c71e
  1249.     dc    $c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e,$f1c71e,$d55557,$f1c71e
  1250.     dc    $000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e,$2aaaaa,$d55557,$f1c71e
  1251.     dc    $38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e,$e38e3a,$e38e3a,$f1c71e
  1252.     dc    $f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$1c71c7,$e38e3a,$f1c71e
  1253.     dc    $2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$d55557,$f1c71e,$f1c71e
  1254.     dc    $e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e,$0e38e3,$f1c71e,$f1c71e
  1255.     dc    $1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e
  1256.     dc    $d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e,$000000,$000000,$f1c71e
  1257.     dc    $0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e,$38e38e,$000000,$f1c71e
  1258.     dc    $c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$f1c71e,$0e38e3,$f1c71e
  1259.     dc    $000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$2aaaaa,$0e38e3,$f1c71e
  1260.     dc    $38e38e,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$d55557,$1c71c7,$f1c71e,$e38e3a,$1c71c7,$f1c71e
  1261.     dc    $f1c71e,$1c71c7,$f1c71e,$000000,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$1c71c7,$1c71c7,$f1c71e
  1262.     dc    $2aaaaa,$1c71c7,$f1c71e,$38e38e,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$d55557,$2aaaaa,$f1c71e
  1263.     dc    $e38e3a,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$000000,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa,$f1c71e
  1264.     dc    $1c71c7,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e
  1265.     dc    $d55557,$38e38e,$f1c71e,$e38e3a,$38e38e,$f1c71e,$f1c71e,$38e38e,$f1c71e,$000000,$38e38e,$f1c71e
  1266.     dc    $0e38e3,$38e38e,$f1c71e,$1c71c7,$38e38e,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$38e38e,$38e38e,$f1c71e
  1267.     dc    $c71c73,$c71c73,$000000,$d55557,$c71c73,$000000,$e38e3a,$c71c73,$000000,$f1c71e,$c71c73,$000000
  1268.     dc    $000000,$c71c73,$000000,$0e38e3,$c71c73,$000000,$1c71c7,$c71c73,$000000,$2aaaaa,$c71c73,$000000
  1269.     dc    $38e38e,$c71c73,$000000,$c71c73,$d55557,$000000,$d55557,$d55557,$000000,$e38e3a,$d55557,$000000
  1270.     dc    $f1c71e,$d55557,$000000,$000000,$d55557,$000000,$0e38e3,$d55557,$000000,$1c71c7,$d55557,$000000
  1271.     dc    $2aaaaa,$d55557,$000000,$38e38e,$d55557,$000000,$c71c73,$e38e3a,$000000,$d55557,$e38e3a,$000000
  1272.     dc    $e38e3a,$e38e3a,$000000,$f1c71e,$e38e3a,$000000,$000000,$e38e3a,$000000,$0e38e3,$e38e3a,$000000
  1273.     dc    $1c71c7,$e38e3a,$000000,$2aaaaa,$e38e3a,$000000,$38e38e,$e38e3a,$000000,$c71c73,$f1c71e,$000000
  1274.     dc    $d55557,$f1c71e,$000000,$e38e3a,$f1c71e,$000000,$f1c71e,$f1c71e,$000000,$000000,$f1c71e,$000000
  1275.     dc    $0e38e3,$f1c71e,$000000,$1c71c7,$f1c71e,$000000,$2aaaaa,$f1c71e,$000000,$38e38e,$f1c71e,$000000
  1276.     dc    $c71c73,$000000,$000000,$d55557,$000000,$000000,$e38e3a,$000000,$000000,$f1c71e,$000000,$000000
  1277.     dc    $000000,$000000,$000000,$0e38e3,$000000,$000000,$1c71c7,$000000,$000000,$2aaaaa,$000000,$000000
  1278.     dc    $38e38e,$000000,$000000,$c71c73,$0e38e3,$000000,$d55557,$0e38e3,$000000,$e38e3a,$0e38e3,$000000
  1279.     dc    $f1c71e,$0e38e3,$000000,$000000,$0e38e3,$000000,$0e38e3,$0e38e3,$000000,$1c71c7,$0e38e3,$000000
  1280.     dc    $2aaaaa,$0e38e3,$000000,$38e38e,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$d55557,$1c71c7,$000000
  1281.     dc    $e38e3a,$1c71c7,$000000,$f1c71e,$1c71c7,$000000,$000000,$1c71c7,$000000,$0e38e3,$1c71c7,$000000
  1282.     dc    $1c71c7,$1c71c7,$000000,$2aaaaa,$1c71c7,$000000,$38e38e,$1c71c7,$000000,$c71c73,$2aaaaa,$000000
  1283.     dc    $d55557,$2aaaaa,$000000,$e38e3a,$2aaaaa,$000000,$f1c71e,$2aaaaa,$000000,$000000,$2aaaaa,$000000
  1284.     dc    $0e38e3,$2aaaaa,$000000,$1c71c7,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$38e38e,$2aaaaa,$000000
  1285.     dc    $c71c73,$38e38e,$000000,$d55557,$38e38e,$000000,$e38e3a,$38e38e,$000000,$f1c71e,$38e38e,$000000
  1286.     dc    $000000,$38e38e,$000000,$0e38e3,$38e38e,$000000,$1c71c7,$38e38e,$000000,$2aaaaa,$38e38e,$000000
  1287.     dc    $38e38e,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$d55557,$c71c73,$0e38e3,$e38e3a,$c71c73,$0e38e3
  1288.     dc    $f1c71e,$c71c73,$0e38e3,$000000,$c71c73,$0e38e3,$0e38e3,$c71c73,$0e38e3,$1c71c7,$c71c73,$0e38e3
  1289.     dc    $2aaaaa,$c71c73,$0e38e3,$38e38e,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$d55557,$d55557,$0e38e3
  1290.     dc    $e38e3a,$d55557,$0e38e3,$f1c71e,$d55557,$0e38e3,$000000,$d55557,$0e38e3,$0e38e3,$d55557,$0e38e3
  1291.     dc    $1c71c7,$d55557,$0e38e3,$2aaaaa,$d55557,$0e38e3,$38e38e,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3
  1292.     dc    $d55557,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$000000,$e38e3a,$0e38e3
  1293.     dc    $0e38e3,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$38e38e,$e38e3a,$0e38e3
  1294.     dc    $c71c73,$f1c71e,$0e38e3,$d55557,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$f1c71e,$f1c71e,$0e38e3
  1295.     dc    $000000,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$2aaaaa,$f1c71e,$0e38e3
  1296.     dc    $38e38e,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$d55557,$000000,$0e38e3,$e38e3a,$000000,$0e38e3
  1297.     dc    $f1c71e,$000000,$0e38e3,$000000,$000000,$0e38e3,$0e38e3,$000000,$0e38e3,$1c71c7,$000000,$0e38e3
  1298.     dc    $2aaaaa,$000000,$0e38e3,$38e38e,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$d55557,$0e38e3,$0e38e3
  1299.     dc    $e38e3a,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$000000,$0e38e3,$0e38e3,$0e38e3,$0e38e3,$0e38e3
  1300.     dc    $1c71c7,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$38e38e,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3
  1301.     dc    $d55557,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$000000,$1c71c7,$0e38e3
  1302.     dc    $0e38e3,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$38e38e,$1c71c7,$0e38e3
  1303.     dc    $c71c73,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa,$0e38e3
  1304.     dc    $000000,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3
  1305.     dc    $38e38e,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$d55557,$38e38e,$0e38e3,$e38e3a,$38e38e,$0e38e3
  1306.     dc    $f1c71e,$38e38e,$0e38e3,$000000,$38e38e,$0e38e3,$0e38e3,$38e38e,$0e38e3,$1c71c7,$38e38e,$0e38e3
  1307.     dc    $2aaaaa,$38e38e,$0e38e3,$38e38e,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$d55557,$c71c73,$1c71c7
  1308.     dc    $e38e3a,$c71c73,$1c71c7,$f1c71e,$c71c73,$1c71c7,$000000,$c71c73,$1c71c7,$0e38e3,$c71c73,$1c71c7
  1309.     dc    $1c71c7,$c71c73,$1c71c7,$2aaaaa,$c71c73,$1c71c7,$38e38e,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7
  1310.     dc    $d55557,$d55557,$1c71c7,$e38e3a,$d55557,$1c71c7,$f1c71e,$d55557,$1c71c7,$000000,$d55557,$1c71c7
  1311.     dc    $0e38e3,$d55557,$1c71c7,$1c71c7,$d55557,$1c71c7,$2aaaaa,$d55557,$1c71c7,$38e38e,$d55557,$1c71c7
  1312.     dc    $c71c73,$e38e3a,$1c71c7,$d55557,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$f1c71e,$e38e3a,$1c71c7
  1313.     dc    $000000,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$2aaaaa,$e38e3a,$1c71c7
  1314.     dc    $38e38e,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$d55557,$f1c71e,$1c71c7,$e38e3a,$f1c71e,$1c71c7
  1315.     dc    $f1c71e,$f1c71e,$1c71c7,$000000,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$1c71c7,$f1c71e,$1c71c7
  1316.     dc    $2aaaaa,$f1c71e,$1c71c7,$38e38e,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$d55557,$000000,$1c71c7
  1317.     dc    $e38e3a,$000000,$1c71c7,$f1c71e,$000000,$1c71c7,$000000,$000000,$1c71c7,$0e38e3,$000000,$1c71c7
  1318.     dc    $1c71c7,$000000,$1c71c7,$2aaaaa,$000000,$1c71c7,$38e38e,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7
  1319.     dc    $d55557,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$000000,$0e38e3,$1c71c7
  1320.     dc    $0e38e3,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$38e38e,$0e38e3,$1c71c7
  1321.     dc    $c71c73,$1c71c7,$1c71c7,$d55557,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$f1c71e,$1c71c7,$1c71c7
  1322.     dc    $000000,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$2aaaaa,$1c71c7,$1c71c7
  1323.     dc    $38e38e,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa,$1c71c7
  1324.     dc    $f1c71e,$2aaaaa,$1c71c7,$000000,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa,$1c71c7
  1325.     dc    $2aaaaa,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$d55557,$38e38e,$1c71c7
  1326.     dc    $e38e3a,$38e38e,$1c71c7,$f1c71e,$38e38e,$1c71c7,$000000,$38e38e,$1c71c7,$0e38e3,$38e38e,$1c71c7
  1327.     dc    $1c71c7,$38e38e,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$38e38e,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa
  1328.     dc    $d55557,$c71c73,$2aaaaa,$e38e3a,$c71c73,$2aaaaa,$f1c71e,$c71c73,$2aaaaa,$000000,$c71c73,$2aaaaa
  1329.     dc    $0e38e3,$c71c73,$2aaaaa,$1c71c7,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$2aaaaa,$38e38e,$c71c73,$2aaaaa
  1330.     dc    $c71c73,$d55557,$2aaaaa,$d55557,$d55557,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$f1c71e,$d55557,$2aaaaa
  1331.     dc    $000000,$d55557,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$2aaaaa,$d55557,$2aaaaa
  1332.     dc    $38e38e,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa
  1333.     dc    $f1c71e,$e38e3a,$2aaaaa,$000000,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa
  1334.     dc    $2aaaaa,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$d55557,$f1c71e,$2aaaaa
  1335.     dc    $e38e3a,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$000000,$f1c71e,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa
  1336.     dc    $1c71c7,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa
  1337.     dc    $d55557,$000000,$2aaaaa,$e38e3a,$000000,$2aaaaa,$f1c71e,$000000,$2aaaaa,$000000,$000000,$2aaaaa
  1338.     dc    $0e38e3,$000000,$2aaaaa,$1c71c7,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$38e38e,$000000,$2aaaaa
  1339.     dc    $c71c73,$0e38e3,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa
  1340.     dc    $000000,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa
  1341.     dc    $38e38e,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa
  1342.     dc    $f1c71e,$1c71c7,$2aaaaa,$000000,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa
  1343.     dc    $2aaaaa,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$d55557,$2aaaaa,$2aaaaa
  1344.     dc    $e38e3a,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa
  1345.     dc    $1c71c7,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa
  1346.     dc    $d55557,$38e38e,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$000000,$38e38e,$2aaaaa
  1347.     dc    $0e38e3,$38e38e,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$38e38e,$38e38e,$2aaaaa
  1348.     dc    $c71c73,$c71c73,$38e38e,$d55557,$c71c73,$38e38e,$e38e3a,$c71c73,$38e38e,$f1c71e,$c71c73,$38e38e
  1349.     dc    $000000,$c71c73,$38e38e,$0e38e3,$c71c73,$38e38e,$1c71c7,$c71c73,$38e38e,$2aaaaa,$c71c73,$38e38e
  1350.     dc    $38e38e,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$d55557,$d55557,$38e38e,$e38e3a,$d55557,$38e38e
  1351.     dc    $f1c71e,$d55557,$38e38e,$000000,$d55557,$38e38e,$0e38e3,$d55557,$38e38e,$1c71c7,$d55557,$38e38e
  1352.     dc    $2aaaaa,$d55557,$38e38e,$38e38e,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$d55557,$e38e3a,$38e38e
  1353.     dc    $e38e3a,$e38e3a,$38e38e,$f1c71e,$e38e3a,$38e38e,$000000,$e38e3a,$38e38e,$0e38e3,$e38e3a,$38e38e
  1354.     dc    $1c71c7,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$38e38e,$38e38e,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e
  1355.     dc    $d55557,$f1c71e,$38e38e,$e38e3a,$f1c71e,$38e38e,$f1c71e,$f1c71e,$38e38e,$000000,$f1c71e,$38e38e
  1356.     dc    $0e38e3,$f1c71e,$38e38e,$1c71c7,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$38e38e,$38e38e,$f1c71e,$38e38e
  1357.     dc    $c71c73,$000000,$38e38e,$d55557,$000000,$38e38e,$e38e3a,$000000,$38e38e,$f1c71e,$000000,$38e38e
  1358.     dc    $000000,$000000,$38e38e,$0e38e3,$000000,$38e38e,$1c71c7,$000000,$38e38e,$2aaaaa,$000000,$38e38e
  1359.     dc    $38e38e,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$d55557,$0e38e3,$38e38e,$e38e3a,$0e38e3,$38e38e
  1360.     dc    $f1c71e,$0e38e3,$38e38e,$000000,$0e38e3,$38e38e,$0e38e3,$0e38e3,$38e38e,$1c71c7,$0e38e3,$38e38e
  1361.     dc    $2aaaaa,$0e38e3,$38e38e,$38e38e,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$d55557,$1c71c7,$38e38e
  1362.     dc    $e38e3a,$1c71c7,$38e38e,$f1c71e,$1c71c7,$38e38e,$000000,$1c71c7,$38e38e,$0e38e3,$1c71c7,$38e38e
  1363.     dc    $1c71c7,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$38e38e,$38e38e,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e
  1364.     dc    $d55557,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$38e38e,$000000,$2aaaaa,$38e38e
  1365.     dc    $0e38e3,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$38e38e,$2aaaaa,$38e38e
  1366.     dc    $c71c73,$38e38e,$38e38e,$d55557,$38e38e,$38e38e,$e38e3a,$38e38e,$38e38e,$f1c71e,$38e38e,$38e38e
  1367.     dc    $000000,$38e38e,$38e38e,$0e38e3,$38e38e,$38e38e,$1c71c7,$38e38e,$38e38e,$2aaaaa,$38e38e,$38e38e
  1368.     dc    $38e38e,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73
  1369.     dc    $f1c71e,$c71c73,$c71c73,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73
  1370.     dc    $2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73
  1371.     dc    $e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73
  1372.     dc    $1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73
  1373.     dc    $d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73
  1374.     dc    $0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73
  1375.     dc    $c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73
  1376.     dc    $000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73
  1377.     dc    $38e38e,$f1c71e,$c71c73,$c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73
  1378.     dc    $f1c71e,$000000,$c71c73,$000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73
  1379.     dc    $2aaaaa,$000000,$c71c73,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73
  1380.     dc    $e38e3a,$0e38e3,$c71c73,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73
  1381.     dc    $1c71c7,$0e38e3,$c71c73,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73
  1382.     dc    $d55557,$1c71c7,$c71c73,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73
  1383.     dc    $0e38e3,$1c71c7,$c71c73,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73
  1384.     dc    $c71c73,$2aaaaa,$c71c73,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73
  1385.     dc    $000000,$2aaaaa,$c71c73,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73
  1386.     dc    $38e38e,$2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73
  1387.     dc    $f1c71e,$38e38e,$c71c73,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73
  1388.     dc    $2aaaaa,$38e38e,$c71c73,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557
  1389.     dc    $e38e3a,$c71c73,$d55557,$f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557
  1390.     dc    $1c71c7,$c71c73,$d55557,$2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557
  1391.     dc    $d55557,$d55557,$d55557,$e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557
  1392.     dc    $0e38e3,$d55557,$d55557,$1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557
  1393.     dc    $c71c73,$e38e3a,$d55557,$d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557
  1394.     dc    $000000,$e38e3a,$d55557,$0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557
  1395.     dc    $38e38e,$e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557
  1396.     dc    $f1c71e,$f1c71e,$d55557,$000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557
  1397.     dc    $2aaaaa,$f1c71e,$d55557,$38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557
  1398.     dc    $e38e3a,$000000,$d55557,$f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557
  1399.     dc    $1c71c7,$000000,$d55557,$2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557
  1400.     dc    $d55557,$0e38e3,$d55557,$e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557
  1401.     dc    $0e38e3,$0e38e3,$d55557,$1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557
  1402.     dc    $c71c73,$1c71c7,$d55557,$d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557
  1403.     dc    $000000,$1c71c7,$d55557,$0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557
  1404.     dc    $38e38e,$1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557
  1405.     dc    $f1c71e,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557
  1406.     dc    $2aaaaa,$2aaaaa,$d55557,$38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557
  1407.     dc    $e38e3a,$38e38e,$d55557,$f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557
  1408.     dc    $1c71c7,$38e38e,$d55557,$2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a
  1409.     dc    $d55557,$c71c73,$e38e3a,$e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a
  1410.     dc    $0e38e3,$c71c73,$e38e3a,$1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a
  1411.     dc    $c71c73,$d55557,$e38e3a,$d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a
  1412.     dc    $000000,$d55557,$e38e3a,$0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a
  1413.     dc    $38e38e,$d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a
  1414.     dc    $f1c71e,$e38e3a,$e38e3a,$000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a
  1415.     dc    $2aaaaa,$e38e3a,$e38e3a,$38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a
  1416.     dc    $e38e3a,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a
  1417.     dc    $1c71c7,$f1c71e,$e38e3a,$2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a
  1418.     dc    $d55557,$000000,$e38e3a,$e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a
  1419.     dc    $0e38e3,$000000,$e38e3a,$1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a
  1420.     dc    $c71c73,$0e38e3,$e38e3a,$d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a
  1421.     dc    $000000,$0e38e3,$e38e3a,$0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a
  1422.     dc    $38e38e,$0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a
  1423.     dc    $f1c71e,$1c71c7,$e38e3a,$000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a
  1424.     dc    $2aaaaa,$1c71c7,$e38e3a,$38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a
  1425.     dc    $e38e3a,$2aaaaa,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a
  1426.     dc    $1c71c7,$2aaaaa,$e38e3a,$2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a
  1427.     dc    $d55557,$38e38e,$e38e3a,$e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a
  1428.     dc    $0e38e3,$38e38e,$e38e3a,$1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a
  1429.     dc    $c71c73,$c71c73,$f1c71e,$d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e
  1430.     dc    $000000,$c71c73,$f1c71e,$0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e
  1431.     dc    $38e38e,$c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e
  1432.     dc    $f1c71e,$d55557,$f1c71e,$000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e
  1433.     dc    $2aaaaa,$d55557,$f1c71e,$38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e
  1434.     dc    $e38e3a,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e
  1435.     dc    $1c71c7,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e
  1436.     dc    $d55557,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e
  1437.     dc    $0e38e3,$f1c71e,$f1c71e,$1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e
  1438.     dc    $c71c73,$000000,$f1c71e,$d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e
  1439.     dc    $000000,$000000,$f1c71e,$0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e
  1440.     dc    $38e38e,$000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e
  1441.     dc    $f1c71e,$0e38e3,$f1c71e,$000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e
  1442.  
  1443. ;; Sampling tables
  1444. table_quantizations_01
  1445.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1446.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1447.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1448.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1449.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1450.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1451.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1452.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1453.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1454.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1455.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1456.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1457. table_quantizations_23
  1458.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1459.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1460.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1461.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1462.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1463.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1464.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1465.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1466.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1467.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1468.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1469.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1470.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1471.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1472.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1473.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1474.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1475.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1476.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1477.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1478.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1479.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1480.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1481.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1482.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1483.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1484.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1485.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1486.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1487.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1488.  
  1489. ;; A combination of the x, d and c tables. The `m' stands
  1490. ;; for the multiplicator using 1.0/x. NOTE: Table c is
  1491. ;; subtracted by 1.0.
  1492. table_xmdc
  1493.     dc    $000001,$100000,$200000,$2aaaab
  1494.     dc    $000003,$080000,$200000,$4ccccd
  1495.     dc    $000003,$080000,$100000,$124925
  1496.     dc    $000007,$040000,$200000,$638e39
  1497.     dc    $000007,$040000,$080000,$088889
  1498.     dc    $00000f,$020000,$040000,$042108
  1499.     dc    $00001f,$010000,$020000,$020821
  1500.     dc    $00003f,$008000,$010000,$010204
  1501.     dc    $00007f,$004000,$008000,$008081
  1502.     dc    $0000ff,$002000,$004000,$004020
  1503.     dc    $0001ff,$001000,$002000,$002008
  1504.     dc    $0003ff,$000800,$001000,$001002
  1505.     dc    $0007ff,$000400,$000800,$000801
  1506.     dc    $000fff,$000200,$000400,$000400
  1507.     dc    $001fff,$000100,$000200,$000200
  1508.     dc    $003fff,$000080,$000100,$000100
  1509.     dc    $007fff,$000040,$000080,$000080
  1510.  
  1511. ;; The `multiply' table used in the last step of sample
  1512. ;; requantization. NOTE: All values are divided by two.
  1513. table_multiple
  1514.     dc    $7fffff,$6597fb,$50a28c,$400000
  1515.     dc    $32cbfd,$285146,$200000,$1965ff
  1516.     dc    $1428a3,$100000,$0cb2ff,$0a1451
  1517.     dc    $080000,$065980,$050a29,$040000
  1518.     dc    $032cc0,$028514,$020000,$019660
  1519.     dc    $01428a,$010000,$00cb30,$00a145
  1520.     dc    $008000,$006598,$0050a3,$004000
  1521.     dc    $0032cc,$002851,$002000,$001966
  1522.     dc    $001429,$001000,$000cb3,$000a14
  1523.     dc    $000800,$000659,$00050a,$000400
  1524.     dc    $00032d,$000285,$000200,$000196
  1525.     dc    $000143,$000100,$0000cb,$0000a1
  1526.     dc    $000080,$000066,$000051,$000040
  1527.     dc    $000033,$000028,$000020,$000019
  1528.     dc    $000014,$000010,$00000d,$00000a
  1529.     dc    $000008,$000006,$000005,$000000
  1530.  
  1531. table_bits
  1532.     dc    5,7,3,10,4,5,6,7,8,9
  1533.     dc    10,11,12,13,14,15,16
  1534.  
  1535. table_translate_quantizations
  1536.     dc    table_quantizations_23
  1537.     dc    table_quantizations_23
  1538.     dc    table_quantizations_01
  1539.     dc    table_quantizations_01
  1540. table_translate_sblimit
  1541.     dc    27,30,8,12
  1542. table_translate_alloc
  1543.     dc    alloc0_bits0
  1544.     dc    alloc1_bits0
  1545.     dc    alloc2_bits0
  1546.     dc    alloc3_bits0
  1547. alloc0_bits0    ;sblimit=27
  1548. alloc1_bits0    ;sblimit=30
  1549.     dc    4,4,4,4,4,4,4,4,4,4,4    ; 11
  1550.     dc    3,3,3,3,3,3,3,3,3,3,3,3    ;+12
  1551.     dc    2,2,2,2            ;+04 = 27
  1552.     dc    2,2,2            ;+03 = 30
  1553. alloc2_bits0    ;sblimit=08
  1554. alloc3_bits0    ;sblimit=12
  1555.     dc    4,4            ; 02
  1556.     dc    3,3,3,3,3,3        ;+06 = 08
  1557.     dc    3,3,3,3            ;+04 = 12
  1558.