| /* |
| * Copyright © 2018, VideoLAN and dav1d authors |
| * Copyright © 2018, Two Orioles, LLC |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright notice, this |
| * list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #include "config.h" |
| |
| #include <string.h> |
| |
| #include "common/attributes.h" |
| |
| #include "src/qm.h" |
| |
| static const uint8_t qm_tbl_4x4_t[][2][10] = { |
| { |
| { |
| 32, |
| 43, 67, |
| 73, 94, 137, |
| 97, 110, 150, 200, |
| }, { |
| 35, |
| 46, 60, |
| 57, 69, 90, |
| 66, 71, 90, 109, |
| }, |
| }, { |
| { |
| 32, |
| 41, 63, |
| 69, 88, 127, |
| 92, 103, 140, 184, |
| }, { |
| 33, |
| 45, 58, |
| 56, 66, 86, |
| 64, 69, 87, 105, |
| }, |
| }, { |
| { |
| 32, |
| 38, 56, |
| 63, 78, 113, |
| 86, 97, 130, 169, |
| }, { |
| 32, |
| 45, 55, |
| 53, 62, 80, |
| 63, 67, 84, 101, |
| }, |
| }, { |
| { |
| 32, |
| 37, 54, |
| 58, 72, 102, |
| 81, 91, 121, 156, |
| }, { |
| 32, |
| 45, 54, |
| 51, 59, 75, |
| 61, 65, 81, 97, |
| }, |
| }, { |
| { |
| 32, |
| 34, 49, |
| 53, 64, 91, |
| 75, 81, 112, 140, |
| }, { |
| 32, |
| 46, 53, |
| 49, 55, 70, |
| 58, 62, 78, 91, |
| }, |
| }, { |
| { |
| 32, |
| 34, 48, |
| 49, 60, 82, |
| 72, 79, 104, 134, |
| }, { |
| 32, |
| 46, 53, |
| 47, 54, 66, |
| 57, 60, 75, 89, |
| }, |
| }, { |
| { |
| 32, |
| 33, 39, |
| 45, 51, 71, |
| 62, 64, 87, 108, |
| }, { |
| 31, |
| 42, 48, |
| 47, 50, 61, |
| 53, 54, 67, 78, |
| }, |
| }, { |
| { |
| 32, |
| 33, 38, |
| 42, 46, 63, |
| 55, 57, 75, 92, |
| }, { |
| 31, |
| 41, 48, |
| 46, 48, 58, |
| 51, 51, 62, 71, |
| }, |
| }, { |
| { |
| 32, |
| 32, 35, |
| 38, 40, 54, |
| 51, 49, 64, 81, |
| }, { |
| 31, |
| 38, 47, |
| 47, 46, 54, |
| 49, 46, 57, 66, |
| }, |
| }, { |
| { |
| 32, |
| 32, 34, |
| 35, 37, 48, |
| 43, 43, 54, 65, |
| }, { |
| 31, |
| 37, 44, |
| 47, 47, 53, |
| 47, 45, 53, 59, |
| }, |
| }, { |
| { |
| 32, |
| 32, 33, |
| 34, 35, 39, |
| 38, 39, 45, 54, |
| }, { |
| 31, |
| 34, 39, |
| 42, 45, 48, |
| 47, 46, 49, 54, |
| }, |
| }, { |
| { |
| 32, |
| 32, 32, |
| 32, 33, 35, |
| 35, 35, 38, 46, |
| }, { |
| 31, |
| 32, 34, |
| 38, 41, 47, |
| 46, 46, 47, 52, |
| }, |
| }, { |
| { |
| 31, |
| 32, 32, |
| 32, 32, 33, |
| 32, 33, 34, 35, |
| }, { |
| 31, |
| 31, 32, |
| 34, 35, 39, |
| 38, 40, 43, 47, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 31, 32, 32, |
| 32, 32, 32, 33, |
| }, { |
| 31, |
| 31, 31, |
| 31, 31, 32, |
| 34, 35, 35, 39, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 31, 32, 32, |
| 31, 32, 32, 32, |
| }, { |
| 31, |
| 31, 31, |
| 31, 31, 31, |
| 31, 31, 31, 31, |
| }, |
| }, |
| }; |
| |
| static const uint8_t qm_tbl_8x4[][2][32] = { |
| { |
| { |
| 32, 33, 37, 49, 65, 80, 91, 104, |
| 42, 42, 58, 71, 84, 97, 100, 112, |
| 75, 69, 84, 103, 125, 142, 145, 146, |
| 91, 86, 91, 110, 128, 152, 178, 190, |
| }, { |
| 31, 40, 46, 48, 54, 61, 64, 68, |
| 47, 45, 56, 61, 65, 69, 68, 71, |
| 60, 54, 64, 75, 85, 92, 90, 87, |
| 66, 61, 64, 73, 82, 92, 102, 105, |
| }, |
| }, { |
| { |
| 32, 33, 36, 46, 60, 75, 86, 98, |
| 42, 42, 56, 67, 79, 92, 95, 105, |
| 69, 64, 77, 93, 112, 130, 136, 136, |
| 88, 83, 88, 105, 122, 144, 167, 177, |
| }, { |
| 31, 40, 46, 47, 52, 59, 63, 66, |
| 47, 45, 55, 60, 64, 68, 66, 69, |
| 57, 52, 61, 70, 79, 87, 88, 85, |
| 65, 61, 63, 72, 81, 90, 99, 102, |
| }, |
| }, { |
| { |
| 32, 32, 34, 44, 54, 72, 82, 92, |
| 38, 40, 51, 61, 69, 84, 89, 98, |
| 62, 58, 68, 85, 98, 118, 129, 127, |
| 86, 80, 85, 101, 117, 136, 157, 165, |
| }, { |
| 31, 38, 46, 46, 50, 57, 61, 65, |
| 47, 46, 53, 56, 59, 64, 65, 67, |
| 54, 50, 57, 66, 74, 82, 85, 82, |
| 64, 60, 62, 71, 79, 88, 97, 99, |
| }, |
| }, { |
| { |
| 32, 32, 34, 41, 51, 65, 75, 86, |
| 35, 36, 47, 53, 61, 73, 81, 92, |
| 59, 57, 65, 78, 92, 108, 117, 119, |
| 83, 78, 82, 97, 111, 129, 148, 154, |
| }, { |
| 31, 36, 46, 45, 49, 54, 59, 63, |
| 47, 47, 52, 53, 55, 58, 61, 65, |
| 53, 50, 55, 63, 71, 77, 81, 80, |
| 63, 59, 61, 70, 77, 86, 94, 95, |
| }, |
| }, { |
| { |
| 32, 32, 34, 38, 48, 60, 72, 81, |
| 35, 36, 42, 51, 59, 68, 79, 86, |
| 51, 50, 54, 67, 80, 92, 104, 112, |
| 77, 72, 75, 87, 103, 119, 135, 144, |
| }, { |
| 31, 36, 43, 45, 47, 52, 57, 61, |
| 47, 47, 50, 53, 54, 56, 60, 63, |
| 50, 47, 50, 58, 66, 70, 75, 77, |
| 61, 57, 58, 65, 74, 82, 90, 93, |
| }, |
| }, { |
| { |
| 32, 32, 34, 37, 45, 54, 65, 75, |
| 35, 36, 42, 50, 56, 63, 73, 81, |
| 51, 50, 54, 65, 76, 87, 97, 106, |
| 75, 71, 73, 84, 96, 110, 125, 136, |
| }, { |
| 31, 36, 43, 46, 46, 50, 54, 59, |
| 47, 47, 50, 53, 54, 55, 58, 61, |
| 50, 47, 50, 57, 64, 68, 72, 75, |
| 60, 56, 57, 64, 71, 78, 85, 90, |
| }, |
| }, { |
| { |
| 32, 32, 33, 35, 41, 49, 57, 66, |
| 34, 34, 37, 43, 48, 54, 60, 68, |
| 43, 42, 44, 54, 64, 71, 78, 86, |
| 62, 59, 58, 68, 79, 91, 101, 111, |
| }, { |
| 31, 33, 40, 47, 45, 48, 51, 55, |
| 42, 44, 47, 50, 49, 50, 52, 55, |
| 47, 45, 46, 54, 59, 61, 63, 66, |
| 54, 51, 50, 57, 64, 70, 75, 79, |
| }, |
| }, { |
| { |
| 32, 32, 32, 34, 38, 44, 50, 61, |
| 32, 33, 35, 37, 40, 45, 50, 58, |
| 42, 41, 42, 50, 58, 66, 71, 79, |
| 56, 53, 52, 59, 68, 78, 86, 97, |
| }, { |
| 31, 32, 39, 44, 46, 47, 48, 53, |
| 38, 40, 47, 47, 47, 46, 47, 50, |
| 47, 45, 45, 51, 56, 59, 61, 64, |
| 52, 49, 48, 53, 58, 64, 68, 73, |
| }, |
| }, { |
| { |
| 32, 32, 32, 34, 35, 40, 46, 52, |
| 32, 33, 34, 37, 38, 42, 46, 51, |
| 37, 36, 38, 44, 49, 55, 59, 64, |
| 52, 49, 49, 54, 60, 69, 76, 83, |
| }, { |
| 31, 31, 36, 42, 47, 46, 48, 50, |
| 38, 40, 44, 47, 48, 46, 46, 48, |
| 47, 46, 47, 50, 53, 54, 55, 56, |
| 50, 48, 47, 50, 54, 60, 64, 67, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 34, 37, 42, 46, |
| 32, 33, 34, 35, 37, 40, 43, 46, |
| 35, 34, 36, 38, 43, 49, 53, 56, |
| 43, 41, 42, 42, 49, 56, 63, 67, |
| }, { |
| 31, 31, 35, 39, 43, 47, 46, 48, |
| 38, 40, 43, 47, 47, 47, 46, 46, |
| 47, 46, 47, 47, 50, 53, 53, 54, |
| 48, 45, 46, 45, 50, 55, 58, 59, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 33, 34, 37, 40, |
| 32, 32, 33, 33, 34, 36, 38, 40, |
| 34, 34, 34, 36, 38, 41, 44, 46, |
| 39, 38, 38, 40, 42, 47, 52, 56, |
| }, { |
| 31, 31, 33, 36, 40, 45, 47, 47, |
| 34, 35, 37, 41, 44, 46, 47, 46, |
| 42, 42, 44, 46, 48, 49, 50, 49, |
| 48, 46, 46, 46, 48, 51, 54, 55, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 33, 34, 35, |
| 31, 32, 32, 32, 33, 33, 34, 34, |
| 32, 32, 33, 34, 35, 36, 37, 38, |
| 35, 35, 34, 36, 38, 40, 42, 48, |
| }, { |
| 31, 31, 31, 34, 37, 39, 42, 48, |
| 31, 31, 32, 36, 39, 41, 43, 46, |
| 37, 38, 40, 43, 46, 47, 47, 48, |
| 48, 47, 46, 47, 47, 48, 50, 53, |
| }, |
| }, { |
| { |
| 31, 31, 32, 32, 32, 32, 32, 33, |
| 31, 32, 32, 32, 32, 32, 33, 33, |
| 32, 32, 32, 32, 33, 34, 34, 35, |
| 32, 32, 32, 33, 34, 34, 35, 36, |
| }, { |
| 31, 31, 31, 31, 34, 35, 38, 41, |
| 31, 31, 32, 32, 36, 37, 40, 42, |
| 35, 36, 37, 37, 40, 42, 45, 45, |
| 37, 38, 39, 40, 43, 44, 47, 47, |
| }, |
| }, { |
| { |
| 31, 31, 31, 31, 31, 31, 32, 32, |
| 31, 32, 32, 32, 32, 32, 32, 32, |
| 31, 32, 32, 32, 32, 32, 32, 32, |
| 32, 32, 32, 32, 32, 33, 33, 33, |
| }, { |
| 31, 31, 31, 31, 31, 31, 34, 34, |
| 31, 31, 31, 32, 32, 33, 36, 36, |
| 31, 31, 31, 32, 32, 33, 36, 36, |
| 34, 35, 35, 36, 36, 37, 40, 40, |
| }, |
| }, { |
| { |
| 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, |
| }, { |
| 31, 31, 31, 31, 31, 31, 31, 30, |
| 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 32, 32, |
| 31, 31, 31, 31, 31, 31, 32, 32, |
| }, |
| }, |
| }; |
| |
| static const uint8_t qm_tbl_8x8_t[][2][36] = { |
| { |
| { |
| 32, |
| 32, 35, |
| 38, 40, 54, |
| 51, 49, 65, 82, |
| 68, 63, 78, 97, 117, |
| 84, 76, 91, 111, 134, 152, |
| 95, 89, 98, 113, 138, 159, 183, |
| 109, 102, 106, 121, 142, 168, 199, 220, |
| }, { |
| 31, |
| 38, 47, |
| 47, 46, 54, |
| 50, 47, 57, 66, |
| 57, 52, 61, 72, 82, |
| 63, 57, 66, 77, 88, 96, |
| 67, 62, 67, 75, 86, 95, 104, |
| 71, 67, 68, 75, 84, 95, 107, 113, |
| }, |
| }, { |
| { |
| 32, |
| 32, 35, |
| 37, 39, 51, |
| 47, 46, 60, 73, |
| 62, 58, 71, 87, 105, |
| 78, 72, 84, 100, 121, 140, |
| 90, 84, 93, 106, 129, 148, 169, |
| 102, 96, 100, 113, 132, 155, 183, 201, |
| }, { |
| 31, |
| 38, 47, |
| 47, 47, 53, |
| 48, 46, 55, 62, |
| 54, 50, 58, 67, 76, |
| 61, 55, 63, 72, 83, 91, |
| 66, 61, 65, 73, 84, 92, 101, |
| 69, 65, 66, 73, 82, 92, 103, 109, |
| }, |
| }, { |
| { |
| 32, |
| 32, 34, |
| 35, 37, 48, |
| 46, 45, 56, 70, |
| 57, 54, 64, 80, 93, |
| 76, 70, 79, 96, 111, 134, |
| 85, 79, 87, 100, 121, 138, 156, |
| 96, 90, 93, 105, 122, 144, 168, 184, |
| }, { |
| 31, |
| 36, 43, |
| 47, 47, 53, |
| 48, 46, 54, 61, |
| 52, 49, 55, 65, 71, |
| 60, 55, 60, 70, 78, 89, |
| 64, 59, 63, 71, 81, 89, 97, |
| 67, 63, 64, 71, 79, 89, 99, 104, |
| }, |
| }, { |
| { |
| 32, |
| 32, 33, |
| 35, 36, 46, |
| 42, 42, 52, 63, |
| 53, 51, 60, 73, 86, |
| 68, 64, 72, 84, 100, 117, |
| 78, 74, 80, 92, 109, 128, 140, |
| 90, 84, 87, 98, 114, 133, 155, 168, |
| }, { |
| 31, |
| 34, 39, |
| 46, 47, 52, |
| 47, 45, 52, 58, |
| 50, 48, 54, 62, 68, |
| 57, 53, 58, 65, 73, 82, |
| 61, 57, 61, 68, 77, 86, 91, |
| 65, 61, 62, 68, 76, 86, 95, 100, |
| }, |
| }, { |
| { |
| 32, |
| 32, 33, |
| 34, 35, 39, |
| 39, 40, 46, 56, |
| 50, 48, 53, 65, 78, |
| 62, 59, 63, 75, 90, 105, |
| 76, 71, 74, 86, 101, 118, 134, |
| 84, 79, 81, 92, 106, 123, 142, 153, |
| }, { |
| 31, |
| 34, 39, |
| 42, 45, 48, |
| 47, 46, 49, 55, |
| 49, 47, 50, 58, 65, |
| 54, 51, 53, 61, 69, 76, |
| 60, 56, 57, 65, 73, 82, 89, |
| 64, 59, 60, 66, 74, 83, 92, 96, |
| }, |
| }, { |
| { |
| 32, |
| 32, 33, |
| 34, 35, 39, |
| 38, 39, 45, 54, |
| 46, 45, 51, 61, 71, |
| 56, 54, 58, 69, 80, 92, |
| 68, 64, 68, 78, 90, 103, 117, |
| 78, 74, 76, 86, 99, 113, 128, 140, |
| }, { |
| 31, |
| 34, 39, |
| 42, 45, 48, |
| 47, 46, 49, 54, |
| 48, 46, 50, 56, 61, |
| 52, 49, 52, 58, 65, 71, |
| 57, 53, 55, 61, 68, 75, 82, |
| 61, 57, 58, 64, 71, 79, 86, 91, |
| }, |
| }, { |
| { |
| 31, |
| 32, 32, |
| 32, 33, 35, |
| 35, 35, 38, 48, |
| 42, 41, 43, 54, 63, |
| 51, 49, 49, 59, 71, 81, |
| 59, 56, 56, 66, 77, 89, 98, |
| 69, 65, 64, 73, 85, 97, 108, 119, |
| }, { |
| 31, |
| 32, 35, |
| 38, 42, 47, |
| 48, 47, 48, 53, |
| 47, 45, 45, 53, 58, |
| 50, 47, 47, 54, 61, 66, |
| 53, 50, 49, 56, 63, 69, 73, |
| 57, 54, 52, 58, 65, 72, 77, 82, |
| }, |
| }, { |
| { |
| 31, |
| 32, 32, |
| 32, 32, 35, |
| 34, 34, 37, 42, |
| 38, 37, 40, 47, 54, |
| 46, 44, 45, 52, 60, 69, |
| 52, 49, 49, 56, 65, 75, 82, |
| 63, 59, 58, 65, 73, 84, 92, 105, |
| }, { |
| 31, |
| 31, 32, |
| 38, 40, 47, |
| 44, 44, 47, 50, |
| 47, 45, 46, 51, 54, |
| 48, 46, 46, 51, 56, 61, |
| 50, 47, 47, 52, 57, 63, 66, |
| 55, 52, 50, 54, 60, 66, 70, 76, |
| }, |
| }, { |
| { |
| 31, |
| 32, 32, |
| 32, 32, 34, |
| 34, 33, 35, 39, |
| 35, 34, 37, 42, 48, |
| 41, 40, 41, 47, 53, 60, |
| 47, 44, 45, 51, 57, 65, 71, |
| 53, 50, 51, 55, 61, 70, 77, 85, |
| }, { |
| 31, |
| 31, 32, |
| 35, 36, 41, |
| 42, 42, 45, 48, |
| 48, 46, 47, 50, 53, |
| 47, 45, 45, 49, 53, 57, |
| 49, 46, 46, 50, 54, 59, 61, |
| 51, 48, 48, 51, 54, 60, 64, 68, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 32, 32, 33, |
| 32, 32, 34, 35, |
| 34, 34, 35, 37, 41, |
| 37, 36, 38, 39, 45, 51, |
| 43, 41, 42, 42, 49, 56, 63, |
| 47, 44, 45, 46, 52, 59, 67, 71, |
| }, { |
| 31, |
| 31, 32, |
| 34, 35, 39, |
| 37, 40, 43, 47, |
| 43, 43, 45, 47, 49, |
| 48, 46, 46, 47, 50, 53, |
| 47, 45, 45, 45, 50, 55, 58, |
| 49, 46, 46, 46, 50, 55, 60, 61, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 32, 32, 32, |
| 32, 32, 33, 34, |
| 33, 33, 34, 35, 37, |
| 34, 34, 35, 36, 39, 43, |
| 37, 36, 37, 38, 41, 46, 51, |
| 41, 39, 40, 41, 44, 49, 54, 58, |
| }, { |
| 31, |
| 31, 31, |
| 32, 33, 35, |
| 35, 37, 39, 43, |
| 39, 41, 42, 45, 47, |
| 45, 44, 45, 47, 48, 50, |
| 48, 46, 46, 47, 48, 51, 53, |
| 48, 46, 45, 46, 47, 51, 54, 56, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 31, 32, 32, |
| 32, 32, 32, 33, |
| 32, 32, 32, 34, 35, |
| 32, 33, 33, 34, 35, 36, |
| 34, 34, 33, 35, 36, 38, 39, |
| 35, 35, 34, 36, 38, 40, 42, 48, |
| }, { |
| 31, |
| 31, 31, |
| 30, 31, 32, |
| 34, 34, 35, 39, |
| 36, 37, 39, 42, 46, |
| 39, 40, 41, 44, 47, 47, |
| 42, 42, 42, 45, 47, 48, 48, |
| 48, 47, 46, 47, 47, 49, 50, 53, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 31, 32, 32, |
| 31, 32, 32, 32, |
| 32, 32, 32, 32, 33, |
| 32, 32, 32, 32, 33, 34, |
| 32, 32, 32, 32, 34, 34, 35, |
| 33, 33, 33, 33, 35, 35, 36, 38, |
| }, { |
| 31, |
| 31, 31, |
| 31, 31, 31, |
| 30, 31, 31, 32, |
| 34, 34, 35, 35, 39, |
| 35, 35, 36, 36, 40, 41, |
| 37, 38, 39, 40, 43, 44, 47, |
| 40, 41, 41, 42, 44, 45, 47, 48, |
| }, |
| }, { |
| { |
| 31, |
| 31, 32, |
| 31, 32, 32, |
| 31, 32, 32, 32, |
| 31, 32, 32, 32, 32, |
| 31, 32, 32, 32, 32, 32, |
| 32, 32, 32, 32, 32, 32, 33, |
| 32, 32, 32, 32, 32, 32, 33, 33, |
| }, { |
| 31, |
| 31, 31, |
| 31, 31, 31, |
| 31, 31, 31, 31, |
| 30, 31, 31, 31, 32, |
| 31, 32, 32, 32, 32, 33, |
| 33, 34, 34, 35, 35, 36, 39, |
| 33, 34, 34, 35, 35, 36, 39, 39, |
| }, |
| }, { |
| { |
| 31, |
| 31, 31, |
| 31, 31, 31, |
| 31, 31, 32, 32, |
| 31, 31, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, |
| }, { |
| 31, |
| 31, 31, |
| 31, 31, 31, |
| 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, |
| 30, 31, 31, 31, 31, 31, 31, 31, |
| }, |
| }, |
| }; |
| |
| static const uint8_t qm_tbl_16x4[][2][64] = { |
| { |
| { |
| 31, 32, 32, 34, 34, 41, 45, 54, 60, 72, 75, 83, 88, 94, 101, 108, |
| 44, 41, 42, 48, 54, 63, 67, 75, 79, 90, 92, 100, 100, 101, 108, 115, |
| 79, 72, 71, 73, 78, 90, 96, 110, 118, 133, 136, 142, 140, 144, 141, 151, |
| 96, 90, 86, 83, 89, 95, 102, 111, 123, 135, 149, 160, 173, 180, 188, 197, |
| }, { |
| 31, 32, 36, 43, 46, 45, 46, 50, 52, 57, 59, 62, 63, 65, 67, 69, |
| 49, 45, 46, 49, 53, 58, 59, 62, 64, 67, 68, 71, 69, 68, 70, 72, |
| 63, 57, 56, 57, 60, 67, 71, 78, 82, 89, 90, 91, 89, 89, 86, 88, |
| 69, 65, 62, 60, 63, 66, 70, 74, 80, 85, 91, 96, 101, 103, 105, 107, |
| }, |
| }, { |
| { |
| 31, 32, 32, 33, 34, 37, 44, 49, 56, 65, 72, 78, 84, 89, 95, 101, |
| 44, 41, 42, 44, 54, 58, 66, 71, 77, 84, 90, 95, 95, 95, 101, 108, |
| 73, 67, 65, 66, 74, 79, 90, 99, 107, 119, 127, 133, 132, 136, 132, 141, |
| 93, 87, 83, 81, 86, 92, 98, 107, 117, 129, 141, 151, 163, 169, 175, 183, |
| }, { |
| 31, 32, 36, 41, 46, 46, 46, 48, 51, 54, 57, 60, 62, 64, 65, 67, |
| 49, 45, 46, 47, 53, 56, 59, 61, 63, 65, 67, 69, 67, 66, 68, 70, |
| 61, 55, 54, 54, 59, 62, 68, 73, 77, 82, 86, 88, 86, 87, 83, 86, |
| 69, 64, 61, 59, 62, 65, 68, 73, 78, 84, 89, 93, 98, 100, 102, 103, |
| }, |
| }, { |
| { |
| 31, 32, 32, 33, 34, 37, 41, 46, 53, 60, 65, 74, 79, 84, 89, 94, |
| 39, 38, 39, 40, 47, 54, 58, 62, 68, 73, 78, 85, 90, 90, 95, 101, |
| 65, 60, 59, 58, 65, 73, 79, 86, 97, 105, 111, 120, 125, 128, 124, 131, |
| 90, 84, 81, 78, 83, 89, 94, 102, 112, 123, 134, 143, 154, 158, 164, 170, |
| }, { |
| 31, 32, 36, 40, 44, 46, 45, 47, 49, 52, 54, 58, 60, 62, 64, 65, |
| 48, 46, 46, 46, 51, 54, 56, 57, 58, 60, 62, 64, 66, 64, 66, 68, |
| 57, 53, 51, 50, 54, 60, 64, 68, 73, 76, 79, 82, 84, 84, 81, 83, |
| 68, 63, 60, 58, 61, 64, 67, 71, 77, 82, 87, 91, 95, 97, 99, 100, |
| }, |
| }, { |
| { |
| 31, 32, 32, 33, 34, 34, 39, 44, 49, 54, 60, 68, 75, 79, 84, 88, |
| 36, 35, 36, 38, 42, 48, 51, 56, 60, 63, 68, 75, 81, 85, 89, 94, |
| 62, 58, 57, 56, 61, 66, 74, 82, 90, 95, 102, 110, 117, 120, 116, 123, |
| 88, 82, 79, 76, 81, 85, 91, 98, 107, 117, 127, 135, 145, 148, 153, 159, |
| }, { |
| 31, 32, 35, 40, 43, 46, 45, 46, 48, 50, 52, 56, 58, 60, 62, 63, |
| 48, 46, 47, 47, 50, 53, 53, 54, 54, 55, 56, 59, 61, 63, 64, 66, |
| 56, 52, 50, 49, 53, 56, 61, 65, 70, 72, 75, 79, 81, 82, 79, 81, |
| 67, 62, 60, 57, 60, 63, 66, 70, 75, 80, 85, 89, 93, 94, 96, 97, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 33, 34, 37, 41, 45, 49, 54, 61, 68, 74, 78, 83, |
| 36, 35, 35, 37, 41, 48, 50, 53, 56, 60, 63, 69, 75, 80, 84, 88, |
| 53, 51, 49, 49, 53, 60, 65, 71, 76, 82, 87, 93, 100, 105, 109, 114, |
| 81, 76, 73, 71, 74, 80, 85, 91, 98, 105, 112, 121, 130, 137, 142, 148, |
| }, { |
| 31, 31, 33, 38, 42, 46, 46, 45, 46, 48, 50, 52, 56, 58, 60, 62, |
| 48, 47, 46, 47, 49, 53, 53, 53, 54, 54, 55, 57, 59, 61, 62, 64, |
| 52, 49, 48, 47, 50, 54, 57, 61, 64, 66, 68, 71, 73, 75, 76, 78, |
| 64, 60, 57, 56, 57, 61, 64, 68, 71, 75, 78, 83, 87, 90, 92, 94, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 33, 34, 34, 37, 41, 45, 49, 54, 60, 65, 72, 75, |
| 36, 35, 34, 36, 38, 42, 48, 50, 53, 56, 60, 63, 68, 73, 79, 81, |
| 53, 51, 49, 50, 49, 54, 60, 65, 71, 76, 82, 87, 92, 97, 104, 106, |
| 79, 75, 72, 71, 69, 73, 78, 84, 90, 96, 103, 110, 118, 125, 133, 136, |
| }, { |
| 31, 31, 32, 36, 40, 43, 46, 46, 45, 46, 48, 50, 52, 54, 57, 59, |
| 48, 47, 46, 47, 47, 50, 53, 53, 53, 54, 54, 55, 56, 58, 60, 61, |
| 52, 50, 48, 47, 47, 50, 54, 57, 61, 64, 66, 68, 70, 72, 75, 75, |
| 63, 60, 57, 56, 54, 57, 60, 64, 67, 71, 75, 78, 82, 85, 89, 90, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 34, 34, 36, 39, 42, 45, 50, 54, 60, 66, 73, |
| 34, 34, 33, 35, 37, 39, 42, 44, 46, 48, 51, 54, 58, 63, 68, 74, |
| 44, 43, 41, 43, 43, 48, 53, 57, 60, 64, 67, 72, 76, 80, 85, 91, |
| 65, 62, 59, 59, 58, 63, 67, 71, 76, 81, 85, 92, 98, 105, 111, 118, |
| }, { |
| 31, 31, 32, 35, 40, 43, 46, 46, 46, 46, 47, 48, 50, 52, 55, 58, |
| 42, 42, 42, 45, 47, 48, 50, 50, 49, 49, 50, 50, 52, 53, 55, 58, |
| 49, 47, 45, 46, 46, 49, 53, 55, 57, 59, 60, 61, 63, 64, 66, 68, |
| 57, 54, 52, 51, 50, 53, 56, 58, 61, 64, 67, 71, 73, 76, 79, 82, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 32, 34, 35, 37, 39, 41, 45, 50, 54, 57, 61, |
| 32, 32, 33, 34, 34, 35, 37, 38, 40, 41, 43, 46, 50, 53, 56, 58, |
| 44, 42, 41, 42, 42, 42, 48, 54, 57, 60, 63, 67, 71, 74, 77, 79, |
| 58, 55, 53, 53, 53, 52, 57, 63, 67, 70, 74, 79, 86, 90, 93, 97, |
| }, { |
| 31, 31, 32, 34, 37, 39, 42, 47, 46, 46, 46, 47, 48, 50, 51, 53, |
| 37, 38, 40, 42, 44, 47, 47, 48, 47, 46, 46, 46, 47, 48, 49, 50, |
| 49, 47, 45, 45, 45, 45, 49, 53, 55, 57, 58, 59, 61, 62, 63, 64, |
| 54, 51, 49, 49, 48, 48, 51, 55, 58, 60, 62, 65, 68, 70, 71, 73, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 32, 33, 34, 35, 37, 38, 42, 45, 47, 51, 55, |
| 32, 32, 32, 33, 34, 35, 36, 37, 38, 40, 40, 43, 45, 47, 50, 54, |
| 38, 37, 36, 36, 38, 39, 41, 44, 49, 51, 52, 56, 58, 60, 63, 67, |
| 53, 51, 49, 49, 50, 49, 51, 54, 60, 63, 65, 71, 75, 77, 82, 87, |
| }, { |
| 31, 31, 31, 32, 35, 39, 40, 42, 47, 47, 46, 46, 47, 48, 49, 51, |
| 37, 38, 39, 40, 43, 47, 47, 47, 48, 47, 47, 46, 46, 47, 47, 49, |
| 48, 47, 46, 46, 46, 47, 48, 50, 53, 53, 54, 55, 55, 55, 56, 57, |
| 52, 50, 48, 48, 47, 47, 48, 50, 54, 56, 57, 61, 63, 64, 66, 68, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 32, 32, 33, 34, 35, 35, 38, 40, 42, 45, 46, |
| 32, 32, 32, 33, 34, 34, 35, 36, 37, 38, 38, 40, 41, 43, 45, 46, |
| 36, 35, 35, 34, 36, 36, 38, 40, 42, 47, 48, 50, 51, 53, 56, 56, |
| 44, 42, 41, 41, 42, 42, 42, 44, 48, 52, 54, 58, 60, 63, 66, 67, |
| }, { |
| 31, 31, 31, 31, 34, 35, 39, 40, 42, 46, 47, 47, 47, 46, 48, 48, |
| 37, 38, 39, 40, 42, 43, 47, 47, 47, 48, 48, 47, 46, 46, 46, 46, |
| 48, 47, 46, 46, 47, 47, 47, 48, 50, 52, 53, 53, 53, 53, 54, 54, |
| 49, 47, 46, 45, 45, 46, 45, 47, 49, 53, 53, 56, 57, 58, 59, 59, |
| }, |
| }, { |
| { |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 34, 34, 35, 35, 38, 38, 42, |
| 32, 32, 32, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 39, 39, 42, |
| 34, 34, 34, 33, 33, 35, 35, 37, 37, 39, 39, 43, 43, 45, 45, 48, |
| 39, 38, 38, 37, 37, 39, 39, 40, 40, 45, 45, 51, 51, 54, 54, 58, |
| }, { |
| 31, 31, 31, 31, 31, 34, 34, 38, 38, 42, 42, 48, 48, 47, 47, 47, |
| 33, 34, 34, 35, 35, 39, 39, 43, 43, 45, 45, 47, 47, 46, 46, 45, |
| 42, 42, 42, 42, 42, 45, 45, 47, 47, 48, 48, 50, 50, 50, 50, 49, |
| 48, 47, 47, 45, 45, 46, 46, 46, 46, 50, 50, 53, 53, 54, 54, 56, |
| }, |
| }, { |
| { |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 34, 34, 35, 35, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 34, |
| 32, 32, 32, 32, 33, 33, 34, 34, 34, 35, 35, 36, 37, 37, 38, 38, |
| 36, 35, 35, 35, 34, 34, 36, 36, 37, 38, 38, 41, 42, 44, 48, 48, |
| }, { |
| 31, 31, 31, 31, 31, 31, 34, 34, 36, 38, 38, 41, 42, 44, 48, 48, |
| 31, 31, 31, 32, 32, 32, 35, 36, 37, 40, 40, 42, 43, 44, 46, 46, |
| 37, 38, 38, 39, 40, 40, 42, 43, 44, 47, 47, 47, 47, 47, 48, 48, |
| 48, 47, 47, 46, 46, 46, 47, 47, 47, 47, 47, 49, 50, 51, 53, 53, |
| }, |
| }, { |
| { |
| 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 34, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, |
| 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 35, 36, |
| 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 37, |
| }, { |
| 31, 31, 31, 31, 31, 31, 31, 31, 33, 34, 34, 36, 38, 38, 39, 42, |
| 31, 31, 31, 31, 32, 32, 32, 33, 35, 36, 36, 38, 40, 40, 41, 43, |
| 35, 35, 36, 36, 36, 37, 37, 38, 40, 40, 40, 43, 45, 45, 45, 46, |
| 37, 38, 38, 38, 39, 40, 40, 40, 42, 43, 43, 45, 47, 47, 47, 47, |
| }, |
| }, { |
| { |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, |
| }, { |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 34, 34, 34, |
| 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 35, 36, 36, 36, |
| 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 35, 36, 36, 36, |
| 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 37, 39, 40, 40, 40, |
| }, |
| }, { |
| { |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| }, { |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, |
| }, |
| }, |
| }; |
| |
| static const uint8_t qm_tbl_16x8[][2][128] = { |
| { |
| { |
| 32, 31, 32, 34, 36, 44, 48, 58, 65, 79, 82, 91, 97, 103, 110, 118, |
| 32, 33, 34, 37, 38, 43, 46, 54, 58, 70, 72, 80, 86, 93, 100, 107, |
| 36, 34, 36, 42, 48, 53, 56, 63, 68, 79, 81, 88, 94, 98, 101, 105, |
| 53, 49, 50, 54, 60, 71, 76, 87, 92, 104, 106, 106, 107, 114, 117, 118, |
| 65, 59, 59, 63, 68, 79, 85, 98, 105, 118, 121, 130, 128, 131, 138, 136, |
| 87, 78, 77, 79, 84, 95, 102, 116, 124, 141, 144, 148, 157, 150, 161, 157, |
| 93, 86, 82, 80, 86, 94, 105, 112, 122, 135, 149, 162, 167, 174, 183, 182, |
| 99, 93, 89, 88, 90, 97, 105, 115, 124, 135, 146, 159, 171, 186, 193, 203, |
| }, { |
| 32, 30, 33, 42, 49, 49, 50, 54, 57, 63, 64, 68, 70, 72, 74, 76, |
| 37, 40, 43, 47, 48, 46, 46, 49, 50, 55, 56, 59, 62, 64, 67, 69, |
| 48, 46, 47, 50, 53, 53, 54, 55, 56, 60, 61, 64, 66, 66, 66, 67, |
| 52, 48, 47, 50, 54, 61, 64, 68, 70, 75, 75, 74, 73, 75, 74, 73, |
| 57, 52, 51, 53, 57, 64, 67, 73, 76, 82, 83, 86, 83, 83, 84, 82, |
| 66, 60, 59, 60, 62, 69, 73, 80, 84, 92, 93, 94, 96, 92, 94, 91, |
| 68, 63, 60, 59, 62, 66, 72, 76, 80, 87, 93, 98, 99, 101, 103, 101, |
| 71, 66, 63, 62, 62, 66, 70, 75, 79, 84, 89, 94, 98, 104, 106, 109, |
| }, |
| }, { |
| { |
| 32, 31, 32, 32, 36, 39, 47, 53, 61, 71, 79, 86, 92, 98, 104, 110, |
| 32, 32, 34, 35, 37, 40, 45, 50, 56, 64, 70, 76, 82, 88, 94, 100, |
| 36, 35, 36, 40, 48, 50, 56, 60, 65, 73, 79, 84, 89, 93, 95, 98, |
| 47, 44, 45, 47, 56, 60, 69, 75, 81, 89, 95, 100, 101, 108, 110, 111, |
| 65, 60, 59, 60, 68, 73, 84, 92, 100, 111, 118, 124, 121, 124, 129, 127, |
| 79, 72, 71, 71, 78, 84, 95, 103, 113, 125, 133, 140, 148, 141, 151, 147, |
| 90, 84, 80, 78, 83, 91, 101, 108, 116, 129, 142, 153, 157, 163, 171, 169, |
| 96, 90, 87, 85, 87, 94, 101, 110, 118, 129, 138, 150, 161, 174, 181, 188, |
| }, { |
| 32, 30, 33, 39, 49, 48, 50, 52, 55, 60, 63, 66, 68, 70, 72, 74, |
| 35, 38, 41, 46, 48, 46, 46, 47, 49, 53, 55, 58, 60, 62, 65, 67, |
| 48, 46, 47, 48, 53, 53, 54, 54, 56, 58, 60, 62, 64, 65, 65, 65, |
| 50, 46, 46, 47, 54, 56, 61, 63, 65, 68, 70, 72, 71, 73, 72, 71, |
| 57, 52, 51, 51, 57, 60, 66, 71, 74, 79, 82, 84, 81, 81, 82, 79, |
| 63, 58, 56, 55, 60, 64, 70, 75, 79, 85, 89, 91, 94, 89, 92, 89, |
| 68, 63, 60, 58, 61, 65, 71, 75, 79, 85, 91, 95, 97, 98, 100, 98, |
| 70, 65, 63, 61, 61, 65, 69, 74, 78, 82, 87, 91, 96, 101, 103, 105, |
| }, |
| }, { |
| { |
| 32, 31, 32, 32, 34, 39, 44, 49, 57, 65, 71, 81, 87, 92, 98, 103, |
| 32, 32, 33, 34, 36, 39, 42, 46, 53, 59, 64, 72, 77, 83, 88, 94, |
| 36, 35, 36, 38, 44, 50, 53, 57, 63, 68, 73, 80, 85, 88, 89, 92, |
| 44, 41, 42, 42, 50, 58, 63, 67, 74, 79, 84, 91, 96, 102, 103, 103, |
| 58, 54, 53, 52, 59, 68, 74, 81, 90, 97, 102, 110, 114, 117, 121, 119, |
| 79, 73, 71, 69, 75, 84, 90, 97, 108, 118, 125, 135, 140, 133, 141, 137, |
| 88, 81, 78, 76, 81, 88, 97, 104, 111, 123, 135, 145, 148, 153, 160, 158, |
| 93, 88, 84, 82, 84, 90, 97, 105, 113, 122, 131, 141, 151, 163, 169, 175, |
| }, { |
| 32, 31, 33, 37, 44, 48, 49, 51, 54, 57, 60, 64, 66, 68, 70, 72, |
| 34, 36, 40, 44, 46, 46, 45, 47, 49, 51, 53, 57, 59, 61, 63, 65, |
| 48, 46, 47, 47, 51, 53, 53, 54, 55, 56, 58, 61, 63, 63, 63, 63, |
| 49, 46, 46, 45, 51, 56, 58, 60, 62, 64, 65, 68, 69, 71, 70, 69, |
| 54, 50, 49, 48, 53, 58, 62, 65, 70, 73, 75, 78, 79, 79, 80, 77, |
| 63, 58, 56, 54, 59, 64, 67, 71, 77, 82, 85, 89, 91, 87, 89, 86, |
| 67, 62, 59, 57, 60, 64, 70, 73, 77, 83, 89, 93, 94, 96, 97, 95, |
| 69, 65, 62, 60, 61, 64, 68, 72, 76, 81, 85, 89, 93, 98, 100, 102, |
| }, |
| }, { |
| { |
| 32, 31, 31, 32, 34, 36, 41, 47, 53, 58, 65, 74, 82, 87, 92, 97, |
| 31, 32, 33, 34, 35, 36, 40, 44, 50, 54, 59, 67, 73, 78, 83, 88, |
| 35, 34, 35, 37, 41, 46, 49, 53, 57, 61, 66, 73, 79, 83, 84, 86, |
| 44, 41, 42, 42, 48, 54, 60, 66, 71, 75, 79, 86, 92, 96, 97, 97, |
| 53, 50, 49, 49, 54, 60, 67, 75, 82, 87, 92, 100, 105, 110, 114, 111, |
| 65, 61, 59, 58, 63, 68, 76, 84, 92, 98, 105, 113, 120, 125, 132, 128, |
| 82, 76, 73, 71, 76, 80, 88, 97, 106, 112, 120, 131, 139, 144, 150, 147, |
| 90, 85, 81, 79, 81, 87, 93, 101, 108, 116, 124, 134, 142, 153, 157, 163, |
| }, { |
| 32, 31, 33, 37, 42, 49, 48, 50, 52, 54, 57, 61, 64, 66, 68, 70, |
| 33, 34, 37, 43, 44, 47, 46, 46, 47, 49, 51, 55, 57, 59, 61, 63, |
| 45, 45, 46, 47, 49, 52, 51, 52, 53, 54, 55, 58, 60, 61, 61, 61, |
| 49, 46, 45, 45, 49, 53, 57, 59, 61, 62, 64, 66, 68, 69, 68, 67, |
| 52, 49, 47, 47, 50, 54, 59, 63, 66, 68, 70, 73, 75, 77, 77, 75, |
| 57, 53, 51, 50, 53, 57, 61, 66, 71, 73, 76, 80, 83, 84, 86, 83, |
| 64, 60, 57, 55, 58, 61, 66, 71, 75, 79, 83, 87, 91, 93, 94, 92, |
| 68, 64, 61, 59, 60, 63, 67, 71, 74, 79, 83, 87, 91, 95, 97, 98, |
| }, |
| }, { |
| { |
| 32, 31, 31, 32, 33, 36, 39, 44, 48, 53, 58, 66, 74, 81, 86, 91, |
| 31, 32, 32, 33, 34, 35, 38, 41, 45, 49, 54, 60, 67, 73, 78, 82, |
| 33, 33, 34, 36, 38, 42, 44, 46, 50, 53, 57, 63, 69, 75, 78, 80, |
| 40, 39, 38, 40, 44, 51, 54, 59, 62, 66, 70, 75, 81, 86, 90, 90, |
| 51, 49, 47, 48, 52, 58, 63, 69, 74, 79, 84, 90, 97, 102, 106, 103, |
| 65, 61, 59, 58, 62, 68, 73, 79, 85, 92, 98, 106, 113, 120, 124, 119, |
| 79, 74, 71, 69, 72, 78, 84, 90, 96, 103, 110, 119, 128, 135, 140, 137, |
| 87, 82, 79, 77, 78, 84, 89, 96, 103, 111, 118, 126, 134, 143, 147, 151, |
| }, { |
| 32, 31, 31, 35, 41, 49, 48, 49, 50, 52, 54, 57, 61, 64, 66, 68, |
| 32, 33, 35, 39, 43, 47, 46, 45, 46, 48, 50, 52, 55, 58, 59, 61, |
| 40, 41, 43, 46, 48, 50, 49, 48, 49, 50, 51, 53, 56, 58, 59, 59, |
| 49, 47, 46, 46, 49, 53, 54, 56, 57, 58, 59, 61, 63, 65, 66, 65, |
| 51, 49, 47, 47, 49, 54, 57, 61, 63, 65, 67, 69, 72, 73, 75, 72, |
| 57, 54, 51, 50, 52, 57, 60, 64, 67, 71, 73, 77, 80, 82, 84, 81, |
| 63, 59, 57, 55, 57, 60, 64, 67, 71, 75, 78, 82, 86, 89, 91, 89, |
| 67, 63, 60, 58, 59, 62, 65, 69, 73, 77, 81, 85, 88, 92, 94, 95, |
| }, |
| }, { |
| { |
| 32, 31, 31, 32, 32, 34, 36, 39, 44, 48, 53, 58, 65, 71, 79, 82, |
| 31, 32, 32, 32, 33, 34, 34, 37, 41, 45, 49, 54, 60, 65, 72, 75, |
| 32, 32, 33, 34, 35, 37, 38, 40, 43, 46, 50, 54, 58, 63, 70, 72, |
| 36, 35, 34, 36, 38, 42, 48, 50, 53, 56, 60, 63, 68, 73, 79, 81, |
| 44, 42, 41, 42, 42, 48, 54, 58, 63, 67, 71, 75, 79, 84, 90, 92, |
| 53, 51, 49, 50, 49, 54, 60, 65, 71, 76, 82, 87, 92, 97, 104, 106, |
| 65, 62, 59, 59, 58, 63, 68, 73, 79, 85, 92, 98, 105, 111, 118, 121, |
| 79, 75, 72, 71, 69, 73, 78, 84, 90, 96, 103, 110, 118, 125, 133, 136, |
| }, { |
| 32, 31, 30, 33, 37, 42, 49, 48, 49, 50, 52, 54, 57, 60, 63, 64, |
| 31, 31, 32, 36, 40, 43, 46, 46, 45, 46, 48, 50, 52, 54, 57, 59, |
| 37, 38, 40, 43, 47, 47, 48, 47, 46, 46, 47, 49, 50, 52, 55, 56, |
| 48, 47, 46, 47, 47, 50, 53, 53, 53, 54, 54, 55, 56, 58, 60, 61, |
| 49, 47, 45, 46, 45, 49, 53, 56, 58, 59, 61, 62, 64, 65, 67, 68, |
| 52, 50, 48, 47, 47, 50, 54, 57, 61, 64, 66, 68, 70, 72, 75, 75, |
| 57, 54, 52, 51, 50, 53, 57, 60, 64, 67, 71, 73, 76, 79, 82, 83, |
| 63, 60, 57, 56, 54, 57, 60, 64, 67, 71, 75, 78, 82, 85, 89, 90, |
| }, |
| }, { |
| { |
| 32, 31, 31, 32, 32, 34, 35, 38, 41, 44, 48, 53, 58, 65, 71, 79, |
| 31, 32, 32, 32, 33, 34, 34, 36, 39, 42, 45, 49, 54, 60, 65, 72, |
| 32, 32, 33, 34, 35, 37, 38, 40, 41, 43, 46, 50, 54, 58, 63, 70, |
| 36, 35, 34, 36, 38, 42, 47, 49, 51, 54, 56, 60, 63, 68, 73, 79, |
| 44, 42, 41, 42, 42, 48, 52, 56, 60, 64, 67, 71, 75, 79, 84, 90, |
| 53, 51, 49, 50, 49, 54, 59, 63, 67, 72, 76, 82, 87, 92, 97, 104, |
| 62, 59, 57, 57, 56, 61, 65, 69, 74, 79, 83, 90, 95, 102, 108, 115, |
| 73, 69, 66, 65, 64, 69, 73, 77, 81, 86, 91, 99, 105, 112, 119, 127, |
| }, { |
| 32, 31, 30, 33, 37, 42, 47, 48, 48, 49, 50, 52, 54, 57, 60, 63, |
| 31, 31, 32, 36, 40, 43, 46, 46, 45, 45, 46, 48, 50, 52, 54, 57, |
| 37, 38, 40, 43, 47, 47, 48, 47, 46, 46, 46, 47, 49, 50, 52, 55, |
| 48, 47, 46, 47, 47, 50, 52, 53, 53, 53, 54, 54, 55, 56, 58, 60, |
| 49, 47, 45, 46, 45, 49, 53, 55, 57, 58, 59, 61, 62, 64, 65, 67, |
| 52, 50, 48, 47, 47, 50, 53, 56, 59, 62, 64, 66, 68, 70, 72, 75, |
| 56, 53, 51, 50, 49, 53, 55, 58, 61, 64, 66, 70, 72, 75, 77, 80, |
| 61, 57, 55, 54, 52, 56, 58, 61, 63, 66, 69, 73, 76, 79, 82, 86, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 32, 32, 34, 36, 38, 41, 44, 48, 53, 57, 61, 65, |
| 31, 32, 32, 32, 32, 33, 34, 34, 37, 39, 41, 45, 49, 53, 56, 60, |
| 32, 32, 33, 34, 34, 35, 37, 38, 40, 41, 43, 46, 50, 53, 56, 58, |
| 35, 35, 34, 35, 36, 37, 41, 46, 47, 49, 51, 54, 57, 60, 63, 66, |
| 39, 38, 37, 38, 39, 40, 44, 50, 52, 54, 57, 60, 64, 67, 69, 72, |
| 44, 42, 41, 42, 42, 42, 48, 54, 57, 60, 63, 67, 71, 74, 77, 79, |
| 53, 51, 49, 49, 49, 49, 54, 60, 64, 67, 71, 76, 82, 86, 89, 92, |
| 65, 62, 59, 59, 58, 58, 63, 68, 72, 76, 79, 85, 92, 97, 100, 105, |
| }, { |
| 32, 31, 30, 33, 35, 37, 42, 49, 48, 48, 49, 50, 52, 54, 55, 57, |
| 31, 31, 32, 35, 37, 40, 43, 46, 46, 45, 45, 46, 48, 49, 51, 52, |
| 37, 38, 40, 42, 44, 47, 47, 48, 47, 46, 46, 46, 47, 48, 49, 50, |
| 45, 45, 44, 46, 46, 47, 49, 52, 51, 51, 51, 52, 53, 54, 54, 55, |
| 48, 47, 45, 46, 46, 47, 50, 53, 54, 54, 55, 56, 57, 58, 58, 59, |
| 49, 47, 45, 45, 45, 45, 49, 53, 55, 57, 58, 59, 61, 62, 63, 64, |
| 52, 50, 48, 47, 47, 47, 50, 54, 57, 59, 61, 64, 66, 68, 69, 70, |
| 57, 54, 52, 51, 51, 50, 53, 57, 59, 61, 64, 67, 71, 73, 74, 76, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 32, 32, 32, 34, 36, 38, 39, 44, 47, 49, 53, 58, |
| 31, 32, 32, 32, 32, 33, 33, 34, 34, 36, 37, 41, 44, 46, 49, 54, |
| 32, 32, 32, 33, 34, 35, 35, 36, 37, 39, 40, 42, 45, 47, 50, 54, |
| 32, 33, 33, 33, 34, 36, 36, 38, 40, 41, 42, 45, 47, 48, 51, 55, |
| 36, 35, 35, 35, 36, 38, 40, 42, 48, 49, 50, 53, 56, 57, 60, 63, |
| 44, 42, 41, 41, 42, 42, 44, 48, 54, 56, 58, 63, 66, 67, 71, 75, |
| 47, 45, 44, 44, 45, 45, 47, 50, 56, 58, 60, 66, 69, 71, 75, 79, |
| 53, 51, 49, 49, 50, 49, 51, 54, 60, 63, 65, 71, 75, 77, 82, 87, |
| }, { |
| 32, 31, 30, 31, 33, 37, 39, 42, 49, 48, 48, 49, 50, 51, 52, 54, |
| 31, 31, 32, 33, 36, 40, 41, 43, 46, 46, 46, 45, 46, 47, 48, 50, |
| 35, 37, 38, 38, 41, 45, 46, 46, 48, 47, 46, 45, 46, 47, 47, 49, |
| 38, 40, 40, 41, 44, 47, 47, 48, 49, 48, 48, 47, 48, 48, 48, 50, |
| 48, 47, 46, 46, 47, 47, 48, 50, 53, 53, 53, 53, 54, 54, 54, 55, |
| 49, 47, 45, 45, 46, 45, 47, 49, 53, 55, 56, 58, 59, 60, 61, 62, |
| 50, 48, 46, 46, 46, 46, 47, 50, 54, 55, 56, 59, 61, 61, 63, 65, |
| 52, 50, 48, 48, 47, 47, 48, 50, 54, 56, 57, 61, 63, 64, 66, 68, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 32, 32, 32, 34, 35, 36, 39, 41, 44, 47, 48, |
| 31, 32, 32, 32, 32, 32, 33, 33, 34, 34, 34, 37, 39, 41, 44, 45, |
| 31, 32, 32, 32, 33, 33, 34, 34, 35, 36, 36, 39, 40, 42, 44, 45, |
| 32, 32, 32, 33, 34, 34, 35, 36, 37, 38, 38, 40, 41, 43, 45, 46, |
| 35, 35, 34, 34, 35, 36, 37, 39, 41, 45, 46, 48, 49, 51, 53, 54, |
| 36, 35, 35, 34, 36, 36, 38, 40, 42, 47, 48, 50, 51, 53, 56, 56, |
| 44, 42, 41, 41, 42, 42, 42, 44, 48, 52, 54, 58, 60, 63, 66, 67, |
| 47, 45, 45, 44, 44, 45, 45, 47, 50, 55, 56, 60, 62, 66, 69, 70, |
| }, { |
| 32, 31, 31, 30, 33, 33, 37, 39, 42, 47, 49, 48, 48, 49, 50, 50, |
| 31, 31, 32, 32, 35, 36, 40, 41, 43, 46, 46, 46, 45, 45, 46, 46, |
| 33, 34, 34, 35, 37, 38, 43, 43, 44, 46, 47, 46, 46, 45, 46, 46, |
| 37, 38, 39, 40, 42, 43, 47, 47, 47, 48, 48, 47, 46, 46, 46, 46, |
| 45, 45, 45, 44, 46, 46, 47, 48, 49, 51, 52, 51, 51, 51, 52, 52, |
| 48, 47, 46, 46, 47, 47, 47, 48, 50, 52, 53, 53, 53, 53, 54, 54, |
| 49, 47, 46, 45, 45, 46, 45, 47, 49, 53, 53, 56, 57, 58, 59, 59, |
| 50, 48, 47, 46, 46, 46, 46, 47, 50, 53, 54, 56, 57, 59, 61, 61, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 32, 32, 32, 32, 34, 34, 36, 36, 39, 39, 44, |
| 31, 32, 32, 32, 32, 32, 32, 33, 33, 34, 34, 34, 34, 37, 37, 41, |
| 31, 32, 32, 32, 32, 32, 32, 33, 33, 34, 34, 34, 34, 37, 37, 41, |
| 32, 32, 32, 33, 33, 34, 34, 35, 35, 37, 37, 38, 38, 40, 40, 43, |
| 32, 32, 32, 33, 33, 34, 34, 35, 35, 37, 37, 38, 38, 40, 40, 43, |
| 36, 35, 35, 34, 34, 36, 36, 38, 38, 42, 42, 48, 48, 50, 50, 53, |
| 36, 35, 35, 34, 34, 36, 36, 38, 38, 42, 42, 48, 48, 50, 50, 53, |
| 44, 42, 42, 41, 41, 42, 42, 42, 42, 48, 48, 54, 54, 58, 58, 63, |
| }, { |
| 32, 31, 31, 30, 30, 33, 33, 37, 37, 42, 42, 49, 49, 48, 48, 49, |
| 31, 31, 31, 32, 32, 36, 36, 40, 40, 43, 43, 46, 46, 46, 46, 45, |
| 31, 31, 31, 32, 32, 36, 36, 40, 40, 43, 43, 46, 46, 46, 46, 45, |
| 37, 38, 38, 40, 40, 43, 43, 47, 47, 47, 47, 48, 48, 47, 47, 46, |
| 37, 38, 38, 40, 40, 43, 43, 47, 47, 47, 47, 48, 48, 47, 47, 46, |
| 48, 47, 47, 46, 46, 47, 47, 47, 47, 50, 50, 53, 53, 53, 53, 53, |
| 48, 47, 47, 46, 46, 47, 47, 47, 47, 50, 50, 53, 53, 53, 53, 53, |
| 49, 47, 47, 45, 45, 46, 46, 45, 45, 49, 49, 53, 53, 56, 56, 58, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 34, 34, 36, 36, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 34, 34, 35, 35, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 34, |
| 31, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 35, 35, 35, 36, 36, |
| 32, 32, 32, 32, 33, 33, 34, 34, 34, 35, 35, 36, 37, 37, 38, 38, |
| 32, 32, 32, 32, 33, 33, 34, 34, 34, 35, 35, 36, 37, 37, 38, 38, |
| 35, 35, 35, 34, 34, 34, 35, 36, 36, 37, 37, 40, 41, 43, 46, 46, |
| 36, 35, 35, 35, 34, 34, 36, 36, 37, 38, 38, 41, 42, 44, 48, 48, |
| }, { |
| 32, 31, 31, 31, 30, 30, 33, 33, 35, 37, 37, 41, 42, 44, 49, 49, |
| 31, 31, 31, 31, 32, 32, 34, 35, 37, 39, 39, 42, 42, 44, 47, 47, |
| 31, 31, 31, 32, 32, 32, 35, 36, 37, 40, 40, 42, 43, 44, 46, 46, |
| 33, 34, 34, 34, 35, 35, 37, 38, 40, 43, 43, 44, 44, 45, 47, 47, |
| 37, 38, 38, 39, 40, 40, 42, 43, 44, 47, 47, 47, 47, 47, 48, 48, |
| 37, 38, 38, 39, 40, 40, 42, 43, 44, 47, 47, 47, 47, 47, 48, 48, |
| 45, 45, 45, 45, 44, 44, 46, 46, 46, 47, 47, 49, 49, 50, 52, 52, |
| 48, 47, 47, 46, 46, 46, 47, 47, 47, 47, 47, 49, 50, 51, 53, 53, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 34, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 34, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, |
| 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 35, |
| 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 37, |
| 32, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 37, |
| 32, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 35, 36, 36, 36, 38, |
| }, { |
| 32, 31, 31, 31, 31, 30, 30, 31, 33, 33, 33, 35, 37, 37, 39, 42, |
| 31, 31, 31, 31, 31, 31, 31, 32, 34, 35, 35, 37, 39, 39, 40, 42, |
| 31, 31, 31, 31, 32, 32, 32, 33, 35, 36, 36, 38, 40, 40, 41, 43, |
| 31, 31, 31, 31, 32, 32, 32, 33, 35, 36, 36, 38, 40, 40, 41, 43, |
| 33, 33, 34, 34, 34, 35, 35, 35, 37, 38, 38, 41, 43, 43, 43, 44, |
| 37, 38, 38, 38, 39, 40, 40, 40, 42, 43, 43, 45, 47, 47, 47, 47, |
| 37, 38, 38, 38, 39, 40, 40, 40, 42, 43, 43, 45, 47, 47, 47, 47, |
| 38, 39, 40, 40, 40, 41, 41, 41, 43, 44, 44, 46, 47, 47, 47, 48, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, |
| 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 34, 34, 34, |
| }, { |
| 32, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 31, 33, 33, 33, 33, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 34, 34, 34, 34, |
| 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 33, 34, 35, 35, 35, |
| 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 35, 36, 36, 36, |
| 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 35, 36, 36, 36, |
| 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 35, 36, 36, 36, |
| 33, 33, 34, 34, 34, 34, 34, 34, 35, 35, 35, 36, 37, 38, 38, 38, |
| 35, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 40, 41, 41, 41, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, |
| }, { |
| 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 30, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, |
| 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, |
| }, |
| }, |
| }; |
| |
| static const uint8_t qm_tbl_32x8[][2][256] = { |
| { |
| { |
| 32, 31, 31, 31, 32, 32, 34, 35, 36, 39, 44, 46, 48, 53, 58, 61, 65, 71, 79, 81, 82, 88, 91, 94, 97, 100, 103, 107, 110, 114, 118, 122, |
| 32, 32, 33, 33, 34, 35, 37, 37, 38, 40, 43, 44, 46, 50, 54, 56, 58, 63, 70, 71, 72, 77, 80, 83, 86, 89, 93, 96, 100, 104, 107, 111, |
| 36, 35, 34, 35, 36, 38, 42, 45, 48, 50, 53, 55, 56, 60, 63, 66, 68, 73, 79, 80, 81, 85, 88, 91, 94, 97, 98, 100, 101, 103, 105, 107, |
| 53, 51, 49, 49, 50, 49, 54, 57, 60, 65, 71, 73, 76, 82, 87, 89, 92, 97, 104, 105, 106, 108, 106, 105, 107, 111, 114, 117, 117, 117, 118, 119, |
| 65, 62, 59, 59, 59, 58, 63, 65, 68, 73, 79, 82, 85, 92, 98, 101, 105, 111, 118, 119, 121, 126, 130, 131, 128, 127, 131, 136, 138, 137, 136, 136, |
| 87, 82, 78, 78, 77, 75, 79, 82, 84, 89, 95, 98, 102, 109, 116, 120, 124, 132, 141, 142, 144, 149, 148, 153, 157, 152, 150, 155, 161, 159, 157, 156, |
| 93, 88, 86, 84, 82, 82, 80, 84, 86, 91, 94, 98, 105, 107, 112, 119, 122, 130, 135, 140, 149, 153, 162, 165, 167, 173, 174, 177, 183, 185, 182, 179, |
| 99, 94, 93, 90, 89, 89, 88, 87, 90, 93, 97, 99, 105, 107, 115, 116, 124, 127, 135, 139, 146, 152, 159, 166, 171, 182, 186, 191, 193, 201, 203, 204, |
| }, { |
| 32, 31, 30, 32, 33, 37, 42, 45, 49, 48, 49, 49, 50, 52, 54, 55, 57, 60, 63, 64, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, |
| 37, 38, 40, 41, 43, 47, 47, 47, 48, 47, 46, 46, 46, 47, 49, 49, 50, 52, 55, 55, 56, 58, 59, 60, 62, 63, 64, 65, 67, 68, 69, 70, |
| 48, 47, 46, 46, 47, 47, 50, 51, 53, 53, 53, 53, 54, 54, 55, 56, 56, 58, 60, 61, 61, 63, 64, 65, 66, 67, 66, 66, 66, 66, 67, 67, |
| 52, 50, 48, 48, 47, 47, 50, 52, 54, 57, 61, 62, 64, 66, 68, 69, 70, 72, 75, 75, 75, 76, 74, 72, 73, 74, 75, 75, 74, 74, 73, 73, |
| 57, 54, 52, 51, 51, 50, 53, 55, 57, 60, 64, 65, 67, 71, 73, 75, 76, 79, 82, 82, 83, 85, 86, 85, 83, 82, 83, 84, 84, 83, 82, 81, |
| 66, 63, 60, 59, 59, 57, 60, 61, 62, 66, 69, 71, 73, 77, 80, 82, 84, 88, 92, 92, 93, 95, 94, 95, 96, 93, 92, 93, 94, 93, 91, 90, |
| 68, 65, 63, 62, 60, 60, 59, 61, 62, 65, 66, 68, 72, 73, 76, 79, 80, 84, 87, 89, 93, 94, 98, 99, 99, 102, 101, 102, 103, 103, 101, 99, |
| 71, 67, 66, 64, 63, 62, 62, 61, 62, 64, 66, 67, 70, 71, 75, 76, 79, 81, 84, 86, 89, 91, 94, 97, 98, 102, 104, 106, 106, 109, 109, 108, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 32, 32, 32, 34, 36, 38, 39, 44, 47, 49, 53, 58, 61, 65, 71, 76, 79, 82, 86, 89, 92, 95, 98, 101, 104, 107, 110, 114, |
| 32, 32, 32, 33, 34, 35, 35, 36, 37, 39, 40, 42, 45, 47, 50, 54, 56, 59, 64, 68, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 104, |
| 36, 35, 35, 35, 36, 38, 40, 42, 48, 49, 50, 53, 56, 57, 60, 63, 65, 68, 73, 76, 79, 81, 84, 87, 89, 92, 93, 94, 95, 96, 98, 100, |
| 47, 45, 44, 44, 45, 45, 47, 50, 56, 58, 60, 66, 69, 71, 75, 79, 81, 84, 89, 92, 95, 97, 100, 99, 101, 105, 108, 110, 110, 110, 111, 111, |
| 65, 62, 60, 59, 59, 58, 60, 63, 68, 71, 73, 79, 84, 86, 92, 98, 100, 105, 111, 115, 118, 121, 124, 124, 121, 120, 124, 128, 129, 128, 127, 127, |
| 79, 75, 72, 71, 71, 69, 71, 73, 78, 81, 84, 90, 95, 97, 103, 110, 113, 118, 125, 130, 133, 136, 140, 145, 148, 143, 141, 146, 151, 149, 147, 145, |
| 90, 86, 84, 82, 80, 80, 78, 82, 83, 88, 91, 94, 101, 103, 108, 114, 116, 124, 129, 134, 142, 145, 153, 156, 157, 163, 163, 166, 171, 173, 169, 166, |
| 96, 91, 90, 87, 87, 86, 85, 84, 87, 90, 94, 96, 101, 102, 110, 111, 118, 121, 129, 132, 138, 144, 150, 156, 161, 171, 174, 179, 181, 188, 188, 190, |
| }, { |
| 32, 31, 30, 31, 33, 37, 39, 42, 49, 48, 48, 49, 50, 51, 52, 54, 55, 57, 60, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, |
| 35, 37, 38, 38, 41, 45, 46, 46, 48, 47, 46, 45, 46, 47, 47, 49, 49, 50, 53, 54, 55, 56, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, |
| 48, 47, 46, 46, 47, 47, 48, 50, 53, 53, 53, 53, 54, 54, 54, 55, 56, 56, 58, 60, 60, 61, 62, 63, 64, 65, 65, 65, 65, 65, 65, 65, |
| 50, 48, 46, 46, 46, 46, 47, 50, 54, 55, 56, 59, 61, 61, 63, 65, 65, 66, 68, 69, 70, 71, 72, 71, 71, 72, 73, 73, 72, 72, 71, 71, |
| 57, 54, 52, 52, 51, 50, 51, 53, 57, 58, 60, 64, 66, 68, 71, 73, 74, 76, 79, 81, 82, 83, 84, 83, 81, 80, 81, 82, 82, 81, 79, 78, |
| 63, 60, 58, 57, 56, 54, 55, 57, 60, 62, 64, 67, 70, 71, 75, 78, 79, 82, 85, 87, 89, 90, 91, 93, 94, 91, 89, 90, 92, 90, 89, 87, |
| 68, 64, 63, 61, 60, 59, 58, 60, 61, 64, 65, 67, 71, 72, 75, 78, 79, 83, 85, 87, 91, 92, 95, 96, 97, 99, 98, 99, 100, 100, 98, 96, |
| 70, 66, 65, 63, 63, 62, 61, 60, 61, 63, 65, 66, 69, 70, 74, 74, 78, 79, 82, 84, 87, 89, 91, 94, 96, 100, 101, 103, 103, 105, 105, 105, |
| }, |
| }, { |
| { |
| 32, 31, 31, 31, 32, 32, 32, 34, 34, 36, 39, 40, 44, 47, 49, 53, 57, 59, 65, 69, 71, 79, 81, 82, 87, 90, 92, 95, 98, 100, 103, 106, |
| 32, 32, 32, 32, 33, 34, 34, 35, 36, 37, 39, 40, 42, 45, 46, 50, 53, 54, 59, 62, 64, 71, 72, 73, 77, 80, 83, 85, 88, 91, 94, 97, |
| 36, 35, 35, 34, 36, 37, 38, 42, 44, 48, 50, 51, 53, 56, 57, 60, 63, 64, 68, 71, 73, 79, 80, 81, 85, 87, 88, 88, 89, 90, 92, 93, |
| 44, 42, 41, 41, 42, 42, 42, 48, 50, 54, 58, 59, 63, 66, 67, 71, 74, 75, 79, 83, 84, 90, 91, 92, 96, 99, 102, 103, 103, 103, 103, 104, |
| 58, 55, 54, 53, 53, 53, 52, 57, 59, 63, 68, 70, 74, 79, 81, 86, 90, 91, 97, 100, 102, 109, 110, 111, 114, 113, 117, 120, 121, 120, 119, 118, |
| 79, 75, 73, 72, 71, 70, 69, 73, 75, 78, 84, 85, 90, 95, 97, 103, 108, 111, 118, 122, 125, 133, 135, 136, 140, 135, 133, 137, 141, 139, 137, 135, |
| 88, 83, 81, 79, 78, 77, 76, 79, 81, 85, 88, 91, 97, 99, 104, 109, 111, 119, 123, 127, 135, 137, 145, 147, 148, 153, 153, 155, 160, 161, 158, 155, |
| 93, 88, 88, 84, 84, 83, 82, 81, 84, 86, 90, 92, 97, 98, 105, 106, 113, 115, 122, 125, 131, 136, 141, 147, 151, 160, 163, 168, 169, 175, 175, 176, |
| }, { |
| 32, 31, 31, 30, 33, 35, 37, 42, 44, 49, 48, 48, 49, 50, 51, 52, 54, 54, 57, 59, 60, 63, 64, 64, 66, 67, 68, 69, 70, 71, 72, 73, |
| 34, 35, 36, 36, 40, 42, 44, 45, 46, 47, 46, 46, 45, 46, 47, 47, 49, 49, 51, 52, 53, 56, 57, 57, 59, 60, 61, 62, 63, 64, 65, 66, |
| 48, 47, 46, 46, 47, 47, 47, 50, 51, 53, 53, 53, 53, 54, 54, 54, 55, 55, 56, 58, 58, 60, 61, 61, 63, 63, 63, 63, 63, 63, 63, 63, |
| 49, 47, 46, 45, 46, 45, 45, 49, 51, 53, 56, 56, 58, 59, 60, 61, 62, 62, 64, 65, 65, 67, 68, 68, 69, 70, 71, 71, 70, 70, 69, 69, |
| 54, 51, 50, 49, 49, 48, 48, 51, 53, 55, 58, 59, 62, 65, 65, 68, 70, 70, 73, 74, 75, 77, 78, 78, 79, 78, 79, 80, 80, 78, 77, 76, |
| 63, 60, 58, 57, 56, 55, 54, 57, 59, 60, 64, 65, 67, 70, 71, 75, 77, 78, 82, 84, 85, 89, 89, 90, 91, 88, 87, 88, 89, 88, 86, 84, |
| 67, 63, 62, 60, 59, 58, 57, 59, 60, 63, 64, 66, 70, 70, 73, 76, 77, 81, 83, 85, 89, 90, 93, 94, 94, 96, 96, 96, 97, 97, 95, 93, |
| 69, 65, 65, 62, 62, 61, 60, 59, 61, 62, 64, 65, 68, 68, 72, 73, 76, 77, 81, |