diff mbox series

[FFmpeg-devel,v2,122/162] avcodec/vp3: Apply VLC offset during init

Message ID 20201120073327.820745-23-andreas.rheinhardt@gmail.com
State Accepted
Commit 22241d12c7bc7f317832d8101ebed8d2db78a41f
Headers show
Series VLC, esp. init_vlc patches | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished

Commit Message

Andreas Rheinhardt Nov. 20, 2020, 7:32 a.m. UTC
By switching to ff_init_vlc_from_lengths() one can apply both positive
as well as negative offsets for free; in this case it even saves space
because one replaces codes tables that don't fit into an uint8_t by
symbols tables that fit into an uint8_t or can even be completely
avoided as they are trivial.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavcodec/vp3.c     |  31 ++--
 libavcodec/vp3data.h |  24 +--
 libavcodec/vp4data.h | 412 +++++++++++++++++++------------------------
 3 files changed, 210 insertions(+), 257 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index c4ad43a299..34c48f8725 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -48,6 +48,9 @@ 
 #include "vp3dsp.h"
 #include "xiph.h"
 
+#define VP4_MV_VLC_BITS     6
+#define SUPERBLOCK_VLC_BITS 6
+
 #define FRAGMENT_PIXELS 8
 
 // FIXME split things out into their own arrays
@@ -489,7 +492,7 @@  static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
                 bit ^= 1;
 
             current_run = get_vlc2(gb, s->superblock_run_length_vlc.table,
-                                   6, 2) + 1;
+                                   SUPERBLOCK_VLC_BITS, 2);
             if (current_run == 34)
                 current_run += get_bits(gb, 12);
 
@@ -523,7 +526,7 @@  static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
                     bit ^= 1;
 
                 current_run = get_vlc2(gb, s->superblock_run_length_vlc.table,
-                                       6, 2) + 1;
+                                       SUPERBLOCK_VLC_BITS, 2);
                 if (current_run == 34)
                     current_run += get_bits(gb, 12);
 
@@ -885,7 +888,8 @@  static int unpack_modes(Vp3DecodeContext *s, GetBitContext *gb)
 
 static int vp4_get_mv(Vp3DecodeContext *s, GetBitContext *gb, int axis, int last_motion)
 {
-    int v = get_vlc2(gb, s->vp4_mv_vlc[axis][vp4_mv_table_selector[FFABS(last_motion)]].table, 6, 2) - 31;
+    int v = get_vlc2(gb, s->vp4_mv_vlc[axis][vp4_mv_table_selector[FFABS(last_motion)]].table,
+                     VP4_MV_VLC_BITS, 2);
     return last_motion < 0 ? -v : v;
 }
 
@@ -1104,7 +1108,8 @@  static int unpack_block_qpis(Vp3DecodeContext *s, GetBitContext *gb)
             else
                 bit ^= 1;
 
-            run_length = get_vlc2(gb, s->superblock_run_length_vlc.table, 6, 2) + 1;
+            run_length = get_vlc2(gb, s->superblock_run_length_vlc.table,
+                                  SUPERBLOCK_VLC_BITS, 2);
             if (run_length == 34)
                 run_length += get_bits(gb, 12);
             blocks_decoded += run_length;
@@ -2452,9 +2457,10 @@  static av_cold int vp3_decode_init(AVCodecContext *avctx)
         }
     }
 
-    if ((ret = init_vlc(&s->superblock_run_length_vlc, 6, 34,
-                        &superblock_run_length_vlc_table[0][1], 4, 2,
-                        &superblock_run_length_vlc_table[0][0], 4, 2, 0)) < 0)
+    ret = ff_init_vlc_from_lengths(&s->superblock_run_length_vlc, SUPERBLOCK_VLC_BITS, 34,
+                                   superblock_run_length_vlc_lens, 1,
+                                   NULL, 0, 0, 1, 0, avctx);
+    if (ret < 0)
         return ret;
 
     if ((ret = init_vlc(&s->fragment_run_length_vlc, 5, 30,
@@ -2474,11 +2480,14 @@  static av_cold int vp3_decode_init(AVCodecContext *avctx)
 
 #if CONFIG_VP4_DECODER
     for (j = 0; j < 2; j++)
-        for (i = 0; i < 7; i++)
-            if ((ret = init_vlc(&s->vp4_mv_vlc[j][i], 6, 63,
-                                &vp4_mv_vlc[j][i][0][1], 4, 2,
-                                &vp4_mv_vlc[j][i][0][0], 4, 2, 0)) < 0)
+        for (i = 0; i < 7; i++) {
+            ret = ff_init_vlc_from_lengths(&s->vp4_mv_vlc[j][i], VP4_MV_VLC_BITS, 63,
+                                           &vp4_mv_vlc[j][i][0][1], 2,
+                                           &vp4_mv_vlc[j][i][0][0], 2, 1, -31,
+                                           0, avctx);
+            if (ret < 0)
                 return ret;
+        }
 
     /* version >= 2 */
     for (i = 0; i < 2; i++)
diff --git a/libavcodec/vp3data.h b/libavcodec/vp3data.h
index a1366788c5..4dc20c5f29 100644
--- a/libavcodec/vp3data.h
+++ b/libavcodec/vp3data.h
@@ -95,25 +95,11 @@  static const uint8_t vp31_filter_limit_values[64] = {
      0,  0,  0,  0,  0,  0,  0,  0
 };
 
-static const uint16_t superblock_run_length_vlc_table[34][2] = {
-    {     0,  1 },
-
-    {     4,  3 }, {     5,  3 },
-
-    {   0xC,  4 }, {   0xD,  4 },
-
-    {  0x38,  6 }, {  0x39,  6 }, {  0x3A,  6 }, {  0x3B,  6 },
-
-    {  0xF0,  8 }, {  0xF1,  8 }, {  0xF2,  8 }, {  0xF3,  8 },
-    {  0xF4,  8 }, {  0xF5,  8 }, {  0xF6,  8 }, {  0xF7,  8 },
-
-    { 0x3E0, 10 }, { 0x3E1, 10 }, { 0x3E2, 10 }, { 0x3E3, 10 },
-    { 0x3E4, 10 }, { 0x3E5, 10 }, { 0x3E6, 10 }, { 0x3E7, 10 },
-    { 0x3E8, 10 }, { 0x3E9, 10 }, { 0x3EA, 10 }, { 0x3EB, 10 },
-    { 0x3EC, 10 }, { 0x3ED, 10 }, { 0x3EE, 10 }, { 0x3EF, 10 },
-
-    {  0x3F,  6 } /* this last VLC is a special case for reading 12 more
-                   * bits from stream and adding the value 34 */
+static const uint8_t superblock_run_length_vlc_lens[34] = {
+     1,  3,  3,  4,  4,  6,  6,  6,  6,  8,  8,  8,  8,  8,  8,  8,  8, 10, 10,
+    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+     6, /* This last value is a special case for reading 12 more
+         * bits from the stream and adding the value 34. */
 };
 
 static const uint16_t fragment_run_length_vlc_table[30][2] = {
diff --git a/libavcodec/vp4data.h b/libavcodec/vp4data.h
index f711d16240..13c7b7cd5e 100644
--- a/libavcodec/vp4data.h
+++ b/libavcodec/vp4data.h
@@ -109,262 +109,220 @@  static const uint8_t vp4_mv_table_selector[32] = {
     6, 6, 6, 6, 6, 6, 6, 6,
 };
 
-static const uint16_t vp4_mv_vlc[2][7][63][2] = {
+static const uint8_t vp4_mv_vlc[2][7][63][2] = {
     { /* x-axis tables */
         {
-            {   0x6A,  7 }, {  0x11A,  9 }, {  0x18E,  9 }, {  0x237, 10 },
-            {   0x4A,  8 }, {  0x236, 10 }, {   0x7A,  8 }, {   0xD6,  9 },
-            {   0x7E,  8 }, {  0x1FD, 10 }, {   0x8C,  8 }, {   0xD7,  9 },
-            {   0x87,  8 }, {  0x183,  9 }, {   0x3C,  7 }, {   0x61,  7 },
-            {   0x47,  7 }, {   0x69,  8 }, {   0x40,  7 }, {   0x48,  8 },
-            {   0x49,  7 }, {   0x86,  8 }, {   0x13,  6 }, {   0xD2,  8 },
-            {   0x1C,  6 }, {   0x42,  7 }, {   0x25,  6 }, {   0x1B,  6 },
-            {   0x13,  5 }, {    0x5,  4 }, {    0x0,  2 }, {    0x7,  3 },
-            {    0x5,  3 }, {   0x1B,  5 }, {   0x19,  5 }, {   0x19,  6 },
-            {    0x8,  5 }, {   0x45,  7 }, {   0x1D,  6 }, {   0xC6,  8 },
-            {   0x68,  7 }, {   0x90,  8 }, {   0x41,  7 }, {   0x4B,  8 },
-            {   0x31,  7 }, {  0x18F,  9 }, {   0x62,  7 }, {   0x3E,  7 },
-            {   0x44,  7 }, {   0x68,  8 }, {   0x30,  7 }, {  0x182,  9 },
-            {   0xC0,  8 }, {  0x1A7,  9 }, {   0x91,  8 }, {   0x92,  9 },
-            {   0x7B,  8 }, {   0xFF,  9 }, {  0x1A6,  9 }, {  0x1FC, 10 },
-            {   0x6A,  8 }, {   0x93,  9 }, {   0x6B,  7 }
+            { 30,  2 }, { 36,  5 }, { 19,  8 }, { 55,  9 }, { 61,  9 },
+            {  4,  8 }, { 43,  8 }, { 22,  6 }, { 29,  4 }, { 50,  7 },
+            { 44,  7 }, { 35,  6 }, { 49,  8 }, { 17,  8 }, { 60,  8 },
+            {  7,  9 }, { 11,  9 }, { 27,  6 }, { 24,  6 }, { 38,  6 },
+            { 14,  7 }, {  6,  8 }, { 56,  8 }, { 47,  7 }, {  8,  8 },
+            { 59, 10 }, {  9, 10 }, { 57,  9 }, { 18,  7 }, { 42,  7 },
+            { 25,  7 }, { 21,  8 }, { 12,  8 }, { 48,  7 }, { 37,  7 },
+            { 10,  8 }, {  1,  9 }, {  5, 10 }, {  3, 10 }, { 16,  7 },
+            { 41,  8 }, { 54,  8 }, { 20,  7 }, { 26,  6 }, { 28,  5 },
+            { 32,  3 }, { 52,  8 }, { 51,  9 }, { 13,  9 }, { 15,  7 },
+            { 46,  7 }, { 39,  8 }, {  2,  9 }, { 45,  9 }, { 34,  5 },
+            { 40,  7 }, { 23,  8 }, { 58,  9 }, { 53,  9 }, {  0,  7 },
+            { 62,  7 }, { 33,  5 }, { 31,  3 },
         },
         {
-            {   0x39,  7 }, {  0x259, 10 }, {   0x1B,  8 }, {  0x1D1, 10 },
-            {  0x137,  9 }, {  0x1D0, 10 }, {   0x1A,  8 }, {  0x1B5, 10 },
-            {   0x1D,  8 }, {  0x4BC, 11 }, {   0x6C,  8 }, {   0x38,  9 },
-            {   0x71,  8 }, {   0x2D,  9 }, {   0x7D,  8 }, {   0x75,  8 },
-            {   0x19,  7 }, {   0xE9,  9 }, {   0x37,  7 }, {   0x15,  8 },
-            {   0x1E,  7 }, {   0xDB,  9 }, {   0x4C,  7 }, {   0x70,  8 },
-            {    0xD,  6 }, {    0xC,  7 }, {   0x27,  6 }, {    0x4,  6 },
-            {    0x2,  4 }, {    0x0,  4 }, {    0x5,  3 }, {    0x7,  3 },
-            {    0x6,  3 }, {    0x2,  3 }, {    0x8,  4 }, {   0x24,  6 },
-            {    0xC,  5 }, {   0x3B,  7 }, {   0x1E,  6 }, {   0x9A,  8 },
-            {    0xE,  6 }, {   0x69,  8 }, {   0x4A,  7 }, {  0x12D,  9 },
-            {   0x35,  7 }, {   0xF9,  9 }, {   0x18,  7 }, {   0x7F,  8 },
-            {    0xF,  7 }, {   0xF8,  9 }, {   0x7E,  8 }, {  0x25F, 10 },
-            {   0x68,  8 }, {   0x2C,  9 }, {   0x14,  8 }, {  0x258, 10 },
-            {  0x136,  9 }, {  0x4BD, 11 }, {  0x12E,  9 }, {  0x1B4, 10 },
-            {   0x17,  8 }, {   0x39,  9 }, {   0x1F,  7 }
+            { 29,  4 }, { 27,  6 }, { 54,  8 }, { 19,  8 }, { 53,  9 },
+            { 13,  9 }, { 60,  8 }, { 25,  7 }, {  6,  8 }, {  2,  8 },
+            { 11,  9 }, { 61,  9 }, {  8,  8 }, { 48,  7 }, { 28,  4 },
+            { 46,  7 }, { 16,  7 }, { 24,  6 }, { 40,  6 }, { 20,  7 },
+            { 62,  7 }, { 33,  3 }, { 36,  5 }, { 52,  8 }, { 41,  8 },
+            { 44,  7 }, { 10,  8 }, { 59, 10 }, {  7, 10 }, { 21,  9 },
+            { 18,  7 }, { 23,  8 }, { 12,  8 }, {  0,  7 }, {  5, 10 },
+            {  3, 10 }, { 17,  9 }, { 15,  8 }, { 37,  7 }, { 38,  6 },
+            { 49,  9 }, { 45,  9 }, { 14,  8 }, { 50,  8 }, { 47,  8 },
+            { 34,  4 }, { 35,  6 }, { 42,  7 }, { 55, 10 }, {  1, 10 },
+            { 43,  9 }, { 58,  9 }, {  9, 11 }, { 57, 11 }, { 51, 10 },
+            { 22,  7 }, { 39,  8 }, { 56,  9 }, {  4,  9 }, { 26,  6 },
+            { 30,  3 }, { 32,  3 }, { 31,  3 },
         },
         {
-            {   0x29,  7 }, {  0x3CB, 10 }, {  0x1F5,  9 }, {  0x263, 10 },
-            {  0x1F4,  9 }, {  0x3DA, 10 }, {   0x50,  8 }, {  0x260, 10 },
-            {  0x1EC,  9 }, {  0x3D3, 10 }, {  0x109,  9 }, {  0x3D2, 10 },
-            {   0x51,  8 }, {  0x792, 11 }, {   0xF3,  8 }, {   0x9A,  8 },
-            {   0xF7,  8 }, {  0x132,  9 }, {   0xC1,  8 }, {  0x1E8,  9 },
-            {   0x2A,  7 }, {   0x85,  8 }, {   0x61,  7 }, {  0x1F7,  9 },
-            {   0x78,  7 }, {   0xC7,  8 }, {   0x23,  6 }, {   0x7C,  7 },
-            {   0x12,  5 }, {    0xB,  5 }, {    0xE,  4 }, {    0xD,  4 },
-            {    0x0,  2 }, {    0x5,  3 }, {    0x3,  3 }, {    0x4,  4 },
-            {   0x19,  5 }, {   0x20,  6 }, {   0x3F,  6 }, {   0x43,  7 },
-            {   0x62,  7 }, {   0x9F,  8 }, {   0x4E,  7 }, {  0x181,  9 },
-            {   0x2B,  7 }, {  0x137,  9 }, {   0xF5,  8 }, {   0x89,  8 },
-            {   0xC6,  8 }, {  0x262, 10 }, {   0x88,  8 }, {  0x3C8, 10 },
-            {  0x1F6,  9 }, {  0x3CA, 10 }, {   0x9E,  8 }, {  0x261, 10 },
-            {  0x136,  9 }, {  0x108,  9 }, {  0x133,  9 }, {  0x793, 11 },
-            {  0x180,  9 }, {  0x3DB, 10 }, {   0x45,  7 }
+            { 32,  2 }, { 35,  4 }, {  6,  8 }, { 12,  8 }, {  0,  7 },
+            { 20,  7 }, { 44,  7 }, { 29,  5 }, { 34,  3 }, { 37,  6 },
+            { 57,  9 }, { 10,  9 }, { 21,  8 }, { 39,  7 }, { 50,  8 },
+            { 47,  8 }, { 62,  7 }, { 26,  6 }, { 28,  5 }, {  7, 10 },
+            { 55, 10 }, { 49, 10 }, {  3, 10 }, { 17,  9 }, { 58,  9 },
+            { 15,  8 }, { 56,  9 }, { 45,  9 }, { 42,  7 }, { 54,  8 },
+            { 41,  8 }, { 33,  3 }, { 60,  9 }, { 43,  9 }, { 18,  8 },
+            { 22,  7 }, { 40,  7 }, { 48,  8 }, { 25,  8 }, { 36,  5 },
+            { 31,  4 }, { 30,  4 }, { 24,  7 }, { 51, 10 }, { 13, 11 },
+            { 59, 11 }, { 53, 10 }, {  1, 10 }, { 14,  8 }, { 19,  9 },
+            { 11, 10 }, {  9, 10 }, { 46,  8 }, {  8,  9 }, {  5, 10 },
+            { 61, 10 }, { 16,  8 }, { 27,  7 }, {  4,  9 }, {  2,  9 },
+            { 52,  9 }, { 23,  9 }, { 38,  6 },
         },
         {
-            {    0x1,  6 }, {  0x1C7,  9 }, {   0x67,  8 }, {   0xB5,  9 },
-            {   0x66,  8 }, {  0x139,  9 }, {   0x99,  8 }, {   0xB4,  9 },
-            {   0xC3,  8 }, {  0x130,  9 }, {    0x0,  7 }, {  0x131,  9 },
-            {   0x9E,  8 }, {   0xB7,  9 }, {   0x2C,  7 }, {    0x1,  7 },
-            {   0x28,  7 }, {  0x138,  9 }, {   0x4B,  7 }, {   0x31,  8 },
-            {   0x60,  7 }, {   0x91,  8 }, {    0x3,  6 }, {   0x9D,  8 },
-            {   0x17,  6 }, {   0x4D,  7 }, {   0x31,  6 }, {   0x70,  7 },
-            {    0x7,  5 }, {   0x3A,  6 }, {    0x7,  4 }, {    0x2,  4 },
-            {    0xB,  4 }, {    0x1,  4 }, {    0xF,  4 }, {    0x8,  4 },
-            {    0xD,  4 }, {    0x4,  4 }, {    0xA,  4 }, {    0xD,  5 },
-            {   0x19,  5 }, {    0x2,  6 }, {   0x3B,  6 }, {   0x4A,  7 },
-            {   0x15,  6 }, {   0xC2,  8 }, {   0x18,  6 }, {   0x32,  7 },
-            {   0x72,  7 }, {  0x1C6,  9 }, {   0x29,  7 }, {  0x1C5,  9 },
-            {   0x49,  7 }, {  0x121,  9 }, {   0x1B,  7 }, {   0x30,  8 },
-            {   0x1A,  7 }, {  0x1C4,  9 }, {   0x9F,  8 }, {   0xB6,  9 },
-            {   0x19,  7 }, {  0x120,  9 }, {   0x73,  7 }
+            { 10,  7 }, { 15,  7 }, {  0,  6 }, { 41,  6 }, { 22,  6 },
+            { 33,  4 }, { 31,  4 }, { 55,  8 }, { 19,  8 }, { 60,  7 },
+            { 56,  7 }, { 54,  7 }, { 28,  5 }, { 37,  4 }, { 16,  7 },
+            { 50,  7 }, { 44,  6 }, { 14,  7 }, {  7,  9 }, {  3,  9 },
+            { 59,  9 }, { 13,  9 }, { 24,  6 }, { 46,  6 }, { 47,  7 },
+            {  4,  8 }, {  2,  8 }, { 39,  5 }, { 30,  4 }, { 35,  4 },
+            { 61,  9 }, { 53,  9 }, { 21,  8 }, { 52,  7 }, { 43,  7 },
+            { 18,  7 }, {  9,  9 }, { 11,  9 }, {  6,  8 }, { 25,  7 },
+            { 17,  9 }, {  5,  9 }, { 23,  8 }, { 12,  8 }, { 58,  8 },
+            { 38,  4 }, { 32,  4 }, { 20,  7 }, { 45,  8 }, {  8,  8 },
+            { 26,  6 }, { 40,  5 }, { 36,  4 }, { 27,  7 }, { 57,  9 },
+            { 51,  9 }, { 49,  9 }, {  1,  9 }, { 48,  7 }, { 62,  7 },
+            { 29,  6 }, { 42,  6 }, { 34,  4 },
         },
         {
-            {   0x23,  6 }, {  0x1C8,  9 }, {   0x43,  8 }, {  0x110,  9 },
-            {    0xC,  7 }, {  0x153,  9 }, {   0x22,  7 }, {  0x111,  9 },
-            {    0xF,  7 }, {   0x42,  8 }, {   0x23,  7 }, {  0x1C9,  9 },
-            {   0x2A,  7 }, {   0x1B,  8 }, {   0x73,  7 }, {   0x45,  7 },
-            {   0x6E,  7 }, {   0x89,  8 }, {   0x6C,  7 }, {   0x1A,  8 },
-            {   0x6F,  7 }, {   0xB6,  8 }, {    0xB,  6 }, {   0xE5,  8 },
-            {   0x25,  6 }, {   0x20,  7 }, {   0x29,  6 }, {   0x4D,  7 },
-            {    0x2,  5 }, {   0x14,  6 }, {   0x1A,  5 }, {   0x17,  5 },
-            {   0x1E,  5 }, {   0x27,  6 }, {   0x18,  5 }, {   0x28,  6 },
-            {   0x1F,  5 }, {    0x0,  5 }, {    0x6,  4 }, {   0x10,  5 },
-            {    0x7,  4 }, {    0xB,  5 }, {    0x3,  4 }, {    0x4,  5 },
-            {   0x1D,  5 }, {   0x2C,  6 }, {   0x19,  5 }, {   0x2B,  6 },
-            {    0x9,  5 }, {   0x55,  7 }, {   0x38,  6 }, {    0xE,  7 },
-            {   0x24,  6 }, {   0xA8,  8 }, {    0xA,  6 }, {   0x99,  8 },
-            {   0x5A,  7 }, {   0x98,  8 }, {   0x6D,  7 }, {  0x152,  9 },
-            {   0x2B,  7 }, {   0xB7,  8 }, {    0x1,  5 }
+            { 37,  5 }, { 62,  5 }, { 28,  5 }, {  4,  7 }, { 19,  8 },
+            { 13,  8 }, { 51,  7 }, {  8,  7 }, { 43,  5 }, { 54,  6 },
+            { 22,  6 }, { 42,  4 }, { 25,  7 }, {  9,  8 }, {  2,  8 },
+            {  6,  7 }, { 10,  7 }, { 48,  5 }, { 29,  6 }, { 12,  7 },
+            { 60,  7 }, { 41,  5 }, { 38,  4 }, { 40,  4 }, { 39,  5 },
+            {  3,  9 }, {  7,  9 }, { 17,  8 }, { 15,  7 }, {  0,  6 },
+            { 52,  6 }, { 24,  6 }, { 57,  8 }, { 55,  8 }, { 27,  7 },
+            { 33,  6 }, { 35,  6 }, { 26,  6 }, { 53,  8 }, { 59,  9 },
+            {  5,  9 }, { 49,  7 }, { 47,  6 }, { 45,  6 }, { 56,  7 },
+            { 21,  8 }, { 61,  8 }, { 31,  5 }, { 34,  5 }, { 46,  5 },
+            { 30,  5 }, { 18,  7 }, { 58,  7 }, { 16,  7 }, { 20,  7 },
+            { 50,  6 }, {  1,  9 }, { 11,  9 }, { 23,  8 }, { 14,  7 },
+            { 44,  5 }, { 32,  5 }, { 36,  5 },
         },
         {
-            {   0x3D,  6 }, {   0xB1,  8 }, {   0xDD,  8 }, {  0x1F6,  9 },
-            {   0xC5,  8 }, {  0x188,  9 }, {   0x37,  7 }, {   0x3F,  8 },
-            {   0x1E,  7 }, {  0x189,  9 }, {    0xF,  7 }, {   0x3E,  8 },
-            {   0x6A,  7 }, {  0x1F7,  9 }, {   0x61,  7 }, {   0x79,  7 },
-            {   0x18,  6 }, {   0xB0,  8 }, {    0xE,  6 }, {   0xB3,  8 },
-            {    0xC,  6 }, {   0xDF,  8 }, {    0x6,  6 }, {   0xDC,  8 },
-            {   0x19,  6 }, {   0xDE,  8 }, {   0x27,  6 }, {    0xE,  7 },
-            {   0x1A,  6 }, {   0x63,  7 }, {    0xF,  5 }, {    0xE,  5 },
-            {   0x14,  5 }, {   0x7C,  7 }, {   0x36,  6 }, {   0x6B,  7 },
-            {   0x3F,  6 }, {   0x60,  7 }, {    0x8,  5 }, {   0x74,  7 },
-            {    0x9,  5 }, {   0x78,  7 }, {   0x12,  5 }, {    0xD,  6 },
-            {   0x15,  5 }, {   0x2D,  6 }, {    0x2,  4 }, {   0x1C,  5 },
-            {    0x5,  4 }, {   0x3B,  6 }, {    0x0,  4 }, {   0x34,  6 },
-            {   0x19,  5 }, {   0x26,  6 }, {   0x10,  5 }, {   0x75,  7 },
-            {    0x2,  5 }, {   0x36,  7 }, {   0x23,  6 }, {   0xB2,  8 },
-            {   0x22,  6 }, {   0xFA,  8 }, {   0x17,  5 }
+            { 50,  4 }, { 56,  5 }, { 22,  6 }, { 27,  7 }, { 10,  7 },
+            { 46,  4 }, { 20,  6 }, { 43,  6 }, { 18,  6 }, {  8,  7 },
+            { 11,  8 }, {  7,  8 }, { 38,  5 }, { 40,  5 }, { 48,  4 },
+            { 16,  6 }, { 24,  6 }, { 28,  6 }, { 57,  7 }, {  6,  7 },
+            { 31,  5 }, { 30,  5 }, { 54,  5 }, { 60,  6 }, { 58,  6 },
+            { 42,  5 }, { 53,  6 }, { 26,  6 }, { 32,  5 }, { 44,  5 },
+            { 17,  8 }, {  1,  8 }, { 59,  8 }, { 19,  8 }, { 45,  6 },
+            { 62,  5 }, { 37,  7 }, { 14,  7 }, {  5,  9 }, {  9,  9 },
+            {  4,  8 }, { 29,  7 }, { 52,  5 }, { 51,  6 }, { 12,  7 },
+            { 35,  7 }, { 34,  6 }, { 23,  8 }, {  2,  8 }, { 25,  8 },
+            { 21,  8 }, { 47,  5 }, { 39,  7 }, { 55,  7 }, { 49,  6 },
+            { 41,  7 }, { 15,  7 }, {  0,  6 }, { 33,  7 }, { 61,  8 },
+            {  3,  9 }, { 13,  9 }, { 36,  6 },
         },
         {
-            {   0x15,  5 }, {   0xDD,  8 }, {   0x3E,  7 }, {  0x16E,  9 },
-            {   0x4C,  7 }, {   0x12,  8 }, {   0x5D,  7 }, {   0xB6,  8 },
-            {   0x6F,  7 }, {  0x1F1,  9 }, {   0x69,  7 }, {  0x1F0,  9 },
-            {   0x1D,  7 }, {  0x16F,  9 }, {    0x2,  6 }, {   0x6B,  7 },
-            {    0xC,  6 }, {   0xDC,  8 }, {   0x68,  7 }, {   0x9B,  8 },
-            {   0x7D,  7 }, {   0x9A,  8 }, {    0xD,  6 }, {   0x13,  8 },
-            {    0x8,  6 }, {   0xF9,  8 }, {   0x2C,  6 }, {   0x12,  7 },
-            {   0x33,  6 }, {   0x4F,  7 }, {    0xD,  5 }, {    0x5,  5 },
-            {   0x12,  5 }, {   0x3F,  7 }, {   0x32,  6 }, {   0x13,  7 },
-            {   0x3B,  6 }, {    0x5,  6 }, {   0x2F,  6 }, {   0x5A,  7 },
-            {   0x3F,  6 }, {   0x1C,  7 }, {   0x3A,  6 }, {    0x8,  7 },
-            {   0x36,  6 }, {   0x5C,  7 }, {   0x10,  5 }, {    0x0,  5 },
-            {    0xC,  5 }, {   0x4E,  7 }, {    0x3,  5 }, {   0x6A,  7 },
-            {    0xE,  5 }, {    0x3,  6 }, {   0x14,  5 }, {   0x1E,  6 },
-            {   0x1C,  5 }, {    0xF,  6 }, {   0x18,  5 }, {   0x23,  6 },
-            {   0x1E,  5 }, {   0x22,  6 }, {    0x2,  3 }
-        }
+            { 47,  5 }, { 14,  6 }, { 53,  6 }, { 43,  7 }, {  5,  8 },
+            { 23,  8 }, { 37,  6 }, { 50,  5 }, { 24,  6 }, { 27,  7 },
+            { 35,  7 }, { 31,  5 }, { 16,  6 }, { 22,  6 }, { 41,  7 },
+            { 12,  7 }, { 57,  6 }, { 62,  3 }, { 48,  5 }, { 30,  5 },
+            { 52,  5 }, { 55,  6 }, {  2,  7 }, { 33,  7 }, { 46,  5 },
+            { 61,  6 }, { 59,  6 }, { 32,  5 }, {  4,  7 }, { 21,  8 },
+            { 19,  8 }, { 49,  7 }, { 29,  7 }, { 54,  5 }, {  0,  5 },
+            { 26,  6 }, { 39,  7 }, {  7,  8 }, {  3,  9 }, { 13,  9 },
+            { 45,  7 }, {  6,  7 }, { 38,  6 }, { 58,  5 }, { 34,  6 },
+            { 28,  6 }, { 18,  7 }, { 10,  7 }, { 51,  7 }, { 15,  7 },
+            { 44,  6 }, { 17,  8 }, {  1,  8 }, {  8,  7 }, { 56,  5 },
+            { 42,  6 }, { 36,  6 }, { 60,  5 }, { 11,  9 }, {  9,  9 },
+            { 25,  8 }, { 20,  7 }, { 40,  6 },
+        },
     },
     { /* y-axis tables */
         {
-            {   0x52,  7 }, {  0x14C,  9 }, {  0x1FA,  9 }, {  0x124,  9 },
-            {   0x82,  8 }, {  0x29E, 10 }, {   0x8E,  8 }, {  0x24B, 10 },
-            {   0x9C,  8 }, {  0x3F7, 10 }, {   0x86,  8 }, {  0x114,  9 },
-            {   0x83,  8 }, {  0x3A5, 10 }, {   0xFA,  8 }, {   0x4F,  7 },
-            {   0xFB,  8 }, {  0x13B,  9 }, {   0xFC,  8 }, {  0x172,  9 },
-            {   0x44,  7 }, {  0x173,  9 }, {   0x51,  7 }, {   0x87,  8 },
-            {   0x5F,  7 }, {   0xBA,  8 }, {   0x26,  6 }, {   0x5E,  7 },
-            {   0x16,  5 }, {   0x15,  5 }, {    0x6,  3 }, {    0x1,  2 },
-            {    0x0,  2 }, {   0x1C,  5 }, {   0x1E,  5 }, {   0x75,  7 },
-            {   0x3B,  6 }, {   0xFF,  8 }, {   0x25,  6 }, {   0xBB,  8 },
-            {   0x7C,  7 }, {   0x8B,  8 }, {   0x48,  7 }, {  0x171,  9 },
-            {   0x42,  7 }, {  0x14E,  9 }, {   0x46,  7 }, {   0xFE,  8 },
-            {   0x40,  7 }, {  0x13A,  9 }, {   0x93,  8 }, {  0x115,  9 },
-            {   0x8F,  8 }, {  0x3F6, 10 }, {  0x170,  9 }, {  0x29F, 10 },
-            {  0x1D1,  9 }, {  0x24A, 10 }, {  0x1D3,  9 }, {  0x3A4, 10 },
-            {  0x1D0,  9 }, {  0x14D,  9 }, {   0x50,  7 }
+            { 32,  2 }, { 31,  2 }, { 48,  7 }, {  4,  8 }, { 12,  8 },
+            { 44,  7 }, { 10,  8 }, { 23,  8 }, { 20,  7 }, { 11,  9 },
+            { 51,  9 }, { 41,  8 }, { 46,  7 }, {  6,  8 }, { 52,  8 },
+            { 42,  7 }, {  3,  9 }, { 57, 10 }, {  7, 10 }, { 50,  8 },
+            { 38,  6 }, { 26,  6 }, {  8,  8 }, { 49,  9 }, { 17,  9 },
+            { 15,  7 }, { 62,  7 }, { 22,  7 }, {  0,  7 }, {  1,  9 },
+            { 61,  9 }, { 45,  9 }, {  5, 10 }, { 55, 10 }, { 29,  5 },
+            { 28,  5 }, { 54,  9 }, { 43,  9 }, { 19,  9 }, { 21,  9 },
+            { 25,  8 }, { 39,  8 }, { 27,  7 }, { 24,  7 }, { 30,  3 },
+            { 33,  5 }, { 60,  9 }, { 56,  9 }, { 59, 10 }, { 13, 10 },
+            { 58,  9 }, { 35,  7 }, { 36,  6 }, { 34,  5 }, { 40,  7 },
+            { 14,  8 }, { 16,  8 }, { 18,  8 }, {  2,  9 }, { 53, 10 },
+            {  9, 10 }, { 47,  8 }, { 37,  8 },
         },
         {
-            {   0xDE,  8 }, {  0x223, 10 }, {  0x136,  9 }, {  0x7C5, 11 },
-            {  0x12F,  9 }, {  0x4A1, 11 }, {  0x3D7, 10 }, {  0x7AC, 11 },
-            {  0x133,  9 }, {  0x7C4, 11 }, {  0x1B8,  9 }, {  0x222, 10 },
-            {   0x96,  8 }, {  0x251, 10 }, {   0x95,  8 }, {  0x1F0,  9 },
-            {   0xDA,  8 }, {  0x110,  9 }, {   0x9A,  8 }, {  0x360, 10 },
-            {   0xDD,  8 }, {  0x12E,  9 }, {   0x48,  7 }, {   0x92,  8 },
-            {   0x78,  7 }, {   0x98,  8 }, {   0x27,  6 }, {   0x45,  7 },
-            {   0x1A,  5 }, {   0x10,  5 }, {    0x5,  3 }, {    0x0,  2 },
-            {    0x1,  2 }, {    0xE,  4 }, {    0xC,  4 }, {   0x23,  6 },
-            {   0x3F,  6 }, {   0xF4,  8 }, {   0x7D,  7 }, {   0x89,  8 },
-            {   0x7B,  7 }, {  0x1BE,  9 }, {   0xF9,  8 }, {  0x3E3, 10 },
-            {   0xF3,  8 }, {  0x127,  9 }, {   0xDB,  8 }, {  0x1EA,  9 },
-            {   0xD9,  8 }, {  0x6E7, 11 }, {  0x1BF,  9 }, {  0x4A0, 11 },
-            {  0x1B1,  9 }, {  0x6E6, 11 }, {  0x137,  9 }, {  0x7AD, 11 },
-            {  0x126,  9 }, {  0x6C2, 11 }, {  0x132,  9 }, {  0x6C3, 11 },
-            {  0x129,  9 }, {  0x372, 10 }, {   0xF2,  8 }
+            { 31,  2 }, { 32,  2 }, { 29,  5 }, { 17,  9 }, { 11, 10 },
+            {  1, 10 }, { 39,  8 }, { 27,  7 }, { 35,  6 }, { 22,  7 },
+            { 23,  8 }, { 56,  9 }, { 45,  9 }, { 51, 11 }, {  5, 11 },
+            { 13, 10 }, { 60,  9 }, { 14,  8 }, { 12,  8 }, { 21,  9 },
+            {  4,  9 }, { 25,  8 }, { 58,  9 }, {  8,  9 }, { 18,  8 },
+            {  2,  9 }, { 54,  9 }, { 26,  6 }, { 30,  3 }, { 34,  4 },
+            { 28,  5 }, { 19, 10 }, { 57, 11 }, { 59, 11 }, { 52,  9 },
+            { 48,  8 }, { 16,  8 }, { 46,  8 }, { 10,  9 }, { 61, 10 },
+            { 53, 11 }, { 49, 11 }, { 20,  8 }, {  0,  8 }, { 41,  9 },
+            { 50,  9 }, { 33,  4 }, { 24,  7 }, { 62,  8 }, { 44,  8 },
+            { 37,  8 }, { 47,  9 }, {  7, 11 }, { 55, 11 }, {  6, 10 },
+            { 40,  7 }, { 15,  9 }, {  9, 11 }, {  3, 11 }, { 43, 10 },
+            { 42,  8 }, { 38,  7 }, { 36,  6 },
         },
         {
-            {   0x16,  7 }, {   0x9C,  9 }, {  0x13C,  9 }, {   0x9E, 10 },
-            {  0x12B,  9 }, {   0xBA, 10 }, {  0x181,  9 }, {  0x317, 10 },
-            {   0x84,  8 }, {   0x4E,  9 }, {   0x26,  8 }, {  0x316, 10 },
-            {  0x180,  9 }, {   0x5C,  9 }, {   0xC1,  8 }, {   0x2F,  8 },
-            {   0x10,  7 }, {   0x45,  9 }, {   0x12,  7 }, {  0x189,  9 },
-            {   0x24,  7 }, {  0x13D,  9 }, {   0x66,  7 }, {   0x23,  8 },
-            {   0x67,  7 }, {   0xC6,  8 }, {   0x24,  6 }, {   0x4B,  7 },
-            {   0x11,  5 }, {   0x32,  6 }, {    0xD,  4 }, {    0x0,  3 },
-            {    0x7,  3 }, {    0x5,  3 }, {    0x3,  3 }, {    0x3,  4 },
-            {    0x5,  4 }, {   0x20,  6 }, {    0x8,  5 }, {   0x25,  7 },
-            {   0x26,  6 }, {   0x4F,  8 }, {   0x61,  7 }, {   0x2B,  8 },
-            {   0x4E,  7 }, {  0x18A,  9 }, {   0x43,  7 }, {   0x9F,  8 },
-            {   0x14,  7 }, {  0x254, 10 }, {   0x94,  8 }, {  0x310, 10 },
-            {   0x85,  8 }, {  0x311, 10 }, {   0x2A,  8 }, {   0xBB, 10 },
-            {  0x18F,  9 }, {  0x255, 10 }, {   0x9D,  9 }, {   0x9F, 10 },
-            {  0x18E,  9 }, {   0x44,  9 }, {   0x26,  7 }
+            { 31,  3 }, { 16,  7 }, { 61,  9 }, { 17,  9 }, { 23,  8 },
+            { 18,  7 }, { 10,  8 }, {  9,  9 }, {  3, 10 }, { 59, 10 },
+            { 48,  7 }, { 54,  8 }, { 43,  8 }, {  0,  7 }, { 13,  9 },
+            {  5, 10 }, { 55, 10 }, { 15,  8 }, { 35,  4 }, { 38,  5 },
+            { 20,  7 }, { 39,  7 }, { 62,  7 }, {  1,  9 }, { 58,  9 },
+            { 41,  8 }, { 36,  4 }, { 34,  3 }, { 37,  6 }, {  8,  8 },
+            { 52,  8 }, { 46,  7 }, { 28,  5 }, { 26,  6 }, { 50,  8 },
+            { 49, 10 }, { 57, 10 }, {  4,  9 }, { 27,  7 }, { 40,  6 },
+            { 44,  7 }, {  2,  9 }, { 21,  9 }, { 47,  8 }, { 33,  3 },
+            { 12,  9 }, {  6,  9 }, { 14,  8 }, { 42,  7 }, { 51, 10 },
+            { 53, 10 }, { 19,  9 }, { 45,  9 }, { 11, 10 }, {  7, 10 },
+            { 25,  8 }, { 60,  9 }, { 56,  9 }, { 29,  6 }, { 22,  7 },
+            { 24,  7 }, { 30,  4 }, { 32,  3 },
         },
         {
-            {   0x61,  7 }, {  0x12A,  9 }, {    0xD,  8 }, {  0x3BD, 10 },
-            {   0x89,  8 }, {  0x109,  9 }, {  0x18E,  9 }, {  0x210, 10 },
-            {  0x1D3,  9 }, {  0x211, 10 }, {   0x88,  8 }, {   0x19,  9 },
-            {   0x85,  8 }, {   0x18,  9 }, {   0xE8,  8 }, {   0xCE,  8 },
-            {   0x40,  7 }, {  0x119,  9 }, {   0x45,  7 }, {  0x1D2,  9 },
-            {   0x4B,  7 }, {  0x1DD,  9 }, {   0x62,  7 }, {   0x94,  8 },
-            {   0x75,  7 }, {    0xC,  7 }, {   0x27,  6 }, {    0xD,  7 },
-            {    0x2,  5 }, {   0x26,  6 }, {    0x6,  4 }, {   0x1E,  5 },
-            {    0xD,  4 }, {   0x1F,  5 }, {    0x1,  3 }, {    0xA,  4 },
-            {    0x2,  3 }, {    0x7,  4 }, {    0xB,  4 }, {    0x0,  5 },
-            {   0x1C,  5 }, {   0x76,  7 }, {   0x32,  6 }, {    0x7,  7 },
-            {   0x24,  6 }, {   0xC0,  8 }, {    0x7,  6 }, {   0x41,  7 },
-            {    0x2,  6 }, {  0x18F,  9 }, {   0x47,  7 }, {  0x1DC,  9 },
-            {   0x43,  7 }, {  0x12B,  9 }, {   0xCF,  8 }, {  0x118,  9 },
-            {   0xC6,  8 }, {  0x3BC, 10 }, {   0x8D,  8 }, {  0x3BF, 10 },
-            {   0xC1,  8 }, {  0x3BE, 10 }, {   0x66,  7 }
+            { 39,  5 }, { 48,  6 }, { 13,  9 }, { 11,  9 }, {  2,  8 },
+            { 43,  7 }, { 28,  5 }, { 25,  7 }, { 27,  7 }, { 46,  6 },
+            { 34,  3 }, { 36,  3 }, { 30,  4 }, { 37,  4 }, { 16,  7 },
+            { 47,  7 }, {  7, 10 }, {  9, 10 }, {  5,  9 }, { 12,  8 },
+            { 52,  7 }, { 10,  8 }, {  4,  8 }, { 18,  7 }, { 55,  9 },
+            { 17,  9 }, { 58,  8 }, { 50,  7 }, { 44,  6 }, { 23,  8 },
+            {  1,  9 }, { 53,  9 }, { 20,  7 }, { 29,  6 }, { 26,  6 },
+            { 35,  4 }, { 38,  4 }, { 45,  8 }, { 60,  8 }, {  0,  7 },
+            { 22,  7 }, { 56,  8 }, {  6,  9 }, { 49,  9 }, { 42,  6 },
+            { 62,  7 }, { 15,  8 }, { 54,  8 }, { 32,  4 }, { 40,  5 },
+            { 14,  8 }, { 19,  9 }, {  8,  9 }, { 24,  7 }, { 41,  7 },
+            { 51,  9 }, { 21,  9 }, { 57, 10 }, {  3, 10 }, { 61, 10 },
+            { 59, 10 }, { 31,  5 }, { 33,  5 },
         },
         {
-            {    0x7,  6 }, {  0x14D,  9 }, {   0xA0,  8 }, {   0x9E,  9 },
-            {   0xCF,  8 }, {  0x39C, 10 }, {   0xA1,  8 }, {  0x39D, 10 },
-            {   0xAB,  8 }, {  0x1C5,  9 }, {   0x26,  7 }, {  0x14C,  9 },
-            {   0x25,  7 }, {  0x19C,  9 }, {   0x3F,  7 }, {   0xE1,  8 },
-            {   0x66,  7 }, {  0x1CF,  9 }, {   0x3E,  7 }, {  0x1C4,  9 },
-            {   0x72,  7 }, {   0x4E,  8 }, {    0x6,  6 }, {   0xAA,  8 },
-            {   0x1C,  6 }, {   0xE6,  8 }, {   0x32,  6 }, {   0x51,  7 },
-            {   0x3B,  6 }, {    0x5,  6 }, {   0x1F,  5 }, {   0x18,  5 },
-            {    0x2,  4 }, {   0x3A,  6 }, {    0x0,  4 }, {   0x36,  6 },
-            {    0x5,  4 }, {    0x8,  5 }, {    0x8,  4 }, {   0x16,  5 },
-            {    0x9,  4 }, {    0xD,  5 }, {    0x3,  4 }, {   0x2F,  6 },
-            {   0x1E,  5 }, {   0x2E,  6 }, {   0x1A,  5 }, {   0x2B,  6 },
-            {    0xC,  5 }, {   0x24,  7 }, {   0x1E,  6 }, {   0xE0,  8 },
-            {    0x4,  6 }, {   0xA7,  8 }, {   0x54,  7 }, {  0x1C7,  9 },
-            {   0x52,  7 }, {  0x19D,  9 }, {   0x3A,  7 }, {   0x9F,  9 },
-            {   0x3B,  7 }, {  0x1C6,  9 }, {   0x37,  6 }
+            { 34,  4 }, { 52,  6 }, { 29,  6 }, { 22,  6 }, {  0,  6 },
+            { 32,  4 }, { 42,  4 }, { 37,  5 }, { 49,  7 }, { 12,  7 },
+            { 10,  7 }, { 21,  8 }, {  3,  9 }, { 59,  9 }, { 36,  4 },
+            { 48,  5 }, { 41,  5 }, { 24,  6 }, { 58,  7 }, { 60,  7 },
+            { 50,  6 }, { 18,  7 }, { 14,  7 }, { 38,  4 }, { 40,  4 },
+            {  2,  8 }, {  6,  8 }, { 27,  7 }, { 56,  7 }, { 11,  9 },
+            {  1,  9 }, { 53,  8 }, { 54,  7 }, { 23,  8 }, {  8,  8 },
+            { 47,  6 }, { 39,  5 }, { 45,  6 }, { 43,  6 }, { 31,  5 },
+            { 26,  6 }, { 16,  7 }, { 13,  9 }, { 57,  9 }, {  4,  8 },
+            { 46,  5 }, { 35,  6 }, { 62,  6 }, { 51,  8 }, { 15,  8 },
+            { 19,  9 }, {  9,  9 }, { 61,  9 }, { 55,  9 }, { 20,  7 },
+            { 25,  8 }, {  5, 10 }, {  7, 10 }, { 17,  9 }, { 33,  6 },
+            { 28,  6 }, { 44,  5 }, { 30,  5 },
         },
         {
-            {   0x2A,  6 }, {   0x39,  8 }, {   0x25,  7 }, {  0x115,  9 },
-            {   0x24,  7 }, {  0x1FA,  9 }, {   0x2F,  7 }, {  0x114,  9 },
-            {   0x75,  7 }, {   0x38,  8 }, {   0xFC,  8 }, {   0x36,  8 },
-            {   0x1E,  7 }, {  0x1FB,  9 }, {   0x7F,  7 }, {   0x68,  7 },
-            {   0x16,  6 }, {   0x37,  8 }, {   0x1F,  7 }, {   0x5C,  8 },
-            {   0x13,  6 }, {   0x8B,  8 }, {    0x1,  6 }, {   0xFB,  8 },
-            {   0x21,  6 }, {   0x44,  7 }, {   0x2B,  6 }, {   0x6B,  7 },
-            {   0x3B,  6 }, {    0xC,  6 }, {   0x1C,  5 }, {   0x19,  5 },
-            {    0x1,  4 }, {   0x20,  6 }, {   0x16,  5 }, {   0x7C,  7 },
-            {    0xC,  5 }, {   0x74,  7 }, {    0xA,  5 }, {   0x1C,  6 },
-            {   0x12,  5 }, {   0x69,  7 }, {    0xF,  5 }, {   0x6A,  7 },
-            {   0x14,  5 }, {   0x11,  6 }, {   0x1E,  5 }, {   0x17,  5 },
-            {    0x2,  4 }, {   0x31,  6 }, {   0x1B,  5 }, {   0x30,  6 },
-            {    0xD,  5 }, {    0x0,  6 }, {    0x1,  5 }, {   0x1D,  7 },
-            {   0x23,  6 }, {   0x1A,  7 }, {   0x1D,  6 }, {   0x5D,  8 },
-            {   0x10,  6 }, {   0xFA,  8 }, {   0x13,  5 }
+            { 53,  6 }, { 22,  6 }, { 54,  5 }, { 32,  4 }, { 48,  4 },
+            { 29,  6 }, { 57,  7 }, { 11,  8 }, { 17,  8 }, {  9,  8 },
+            {  1,  8 }, { 55,  7 }, { 12,  7 }, { 18,  7 }, { 60,  6 },
+            { 45,  6 }, {  4,  7 }, {  2,  7 }, { 20,  6 }, { 38,  5 },
+            { 16,  6 }, { 19,  8 }, { 59,  8 }, {  6,  7 }, { 36,  5 },
+            { 52,  5 }, { 39,  6 }, { 58,  6 }, { 42,  5 }, { 33,  6 },
+            { 24,  6 }, { 25,  7 }, {  7,  9 }, {  3,  9 }, { 21,  8 },
+            { 56,  6 }, { 40,  5 }, { 62,  5 }, { 44,  5 }, {  0,  6 },
+            { 26,  6 }, { 34,  5 }, { 47,  5 }, { 51,  6 }, { 49,  6 },
+            { 31,  5 }, { 15,  7 }, { 41,  7 }, { 43,  7 }, { 27,  7 },
+            { 50,  5 }, { 30,  5 }, { 37,  7 }, {  8,  7 }, { 28,  6 },
+            { 46,  5 }, { 35,  7 }, { 61,  8 }, { 23,  8 }, { 10,  8 },
+            {  5,  9 }, { 13,  9 }, { 14,  7 },
         },
         {
-            {   0x12,  5 }, {   0x26,  7 }, {   0x41,  7 }, {   0x22,  8 },
-            {   0x1A,  7 }, {   0xA9,  8 }, {   0x4C,  7 }, {  0x1B2,  9 },
-            {   0x5C,  7 }, {   0xA8,  8 }, {   0x58,  7 }, {  0x1B3,  9 },
-            {   0x40,  7 }, {   0x79,  8 }, {    0xC,  6 }, {   0x55,  7 },
-            {   0x1F,  6 }, {   0xD8,  8 }, {   0x76,  7 }, {   0x23,  8 },
-            {   0x5F,  7 }, {   0x78,  8 }, {    0xB,  6 }, {   0x1B,  7 },
-            {   0x2D,  6 }, {   0x10,  7 }, {   0x37,  6 }, {   0x6D,  7 },
-            {   0x32,  6 }, {    0xA,  6 }, {   0x1A,  5 }, {   0x1E,  5 },
-            {   0x1F,  5 }, {   0x2B,  6 }, {    0xD,  5 }, {   0x77,  7 },
-            {   0x31,  6 }, {   0x5D,  7 }, {   0x38,  6 }, {   0x27,  7 },
-            {    0xC,  5 }, {   0xE9,  8 }, {   0x33,  6 }, {   0x5E,  7 },
-            {   0x30,  6 }, {   0x4D,  7 }, {    0xA,  5 }, {   0x21,  6 },
-            {    0x7,  5 }, {   0x3D,  7 }, {   0x39,  6 }, {   0xE8,  8 },
-            {    0xB,  5 }, {   0x59,  7 }, {   0x14,  5 }, {   0x27,  6 },
-            {   0x11,  5 }, {   0x75,  7 }, {    0xE,  5 }, {    0x9,  6 },
-            {    0x8,  5 }, {   0x12,  6 }, {    0x0,  3 }
-        }
+            { 62,  3 }, { 25,  7 }, {  3,  8 }, { 19,  8 }, { 59,  6 },
+            { 29,  6 }, { 22,  6 }, { 14,  6 }, {  4,  7 }, { 23,  7 },
+            { 48,  5 }, { 60,  5 }, { 61,  6 }, {  1,  7 }, { 39,  7 },
+            { 46,  5 }, { 52,  5 }, { 40,  5 }, { 34,  5 }, { 58,  5 },
+            { 21,  8 }, { 13,  8 }, { 49,  7 }, { 16,  6 }, { 12,  7 },
+            {  2,  7 }, { 47,  6 }, { 56,  5 }, {  0,  5 }, {  6,  7 },
+            { 45,  7 }, { 55,  6 }, { 54,  5 }, {  9,  8 }, {  5,  8 },
+            { 15,  7 }, { 33,  6 }, { 10,  7 }, { 53,  7 }, { 24,  6 },
+            {  8,  7 }, { 37,  7 }, { 43,  7 }, { 20,  7 }, { 44,  6 },
+            { 36,  6 }, { 28,  6 }, { 42,  6 }, { 30,  5 }, { 17,  8 },
+            {  7,  9 }, { 11,  9 }, { 27,  7 }, { 26,  6 }, { 38,  6 },
+            { 50,  6 }, { 51,  8 }, { 41,  8 }, { 57,  7 }, { 18,  7 },
+            { 35,  7 }, { 31,  5 }, { 32,  5 },
+        },
     }
 };