mirror of
https://github.com/google/brotli.git
synced 2024-11-09 13:40:06 +00:00
Use a single lookup table for insert/copy offsets and extra bits.
Remove safe_malloc.c since all the bounds checking is done inside decode.c now.
This commit is contained in:
parent
da11e911a5
commit
4b2fd00e24
@ -4,7 +4,7 @@ include ../shared.mk
|
||||
|
||||
CFLAGS += -Wall
|
||||
|
||||
OBJS = bit_reader.o decode.o huffman.o safe_malloc.o state.o streams.o
|
||||
OBJS = bit_reader.o decode.o huffman.o state.o streams.o
|
||||
|
||||
all : $(OBJS)
|
||||
|
||||
|
34
dec/decode.c
34
dec/decode.c
@ -13,6 +13,7 @@
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#include <malloc.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@ -24,7 +25,6 @@
|
||||
#include "./transform.h"
|
||||
#include "./huffman.h"
|
||||
#include "./prefix.h"
|
||||
#include "./safe_malloc.h"
|
||||
|
||||
#ifdef __ARM_NEON__
|
||||
#include <arm_neon.h>
|
||||
@ -222,6 +222,10 @@ static BrotliResult ReadHuffmanCode(int alphabet_size,
|
||||
1 for simple code;
|
||||
0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
|
||||
int simple_code_or_skip;
|
||||
|
||||
/* Unnecessary masking, but might be good for safety. */
|
||||
alphabet_size &= 0x3ff;
|
||||
|
||||
/* State machine */
|
||||
for (;;) {
|
||||
switch(s->sub1_state) {
|
||||
@ -278,9 +282,7 @@ static BrotliResult ReadHuffmanCode(int alphabet_size,
|
||||
static const uint8_t huff_val[16] = {
|
||||
0, 4, 3, 2, 0, 4, 3, 1, 0, 4, 3, 2, 0, 4, 3, 5,
|
||||
};
|
||||
s->code_lengths =
|
||||
(uint8_t*)BrotliSafeMalloc((uint64_t)alphabet_size,
|
||||
sizeof(*s->code_lengths));
|
||||
s->code_lengths = (uint8_t*)malloc((size_t)alphabet_size);
|
||||
if (s->code_lengths == NULL) {
|
||||
return BROTLI_FAILURE();
|
||||
}
|
||||
@ -961,14 +963,16 @@ BrotliResult BrotliDecompressStreaming(BrotliInput input, BrotliOutput output,
|
||||
}
|
||||
s->max_backward_distance = (1 << s->window_bits) - 16;
|
||||
|
||||
/* Allocate memory for both block_type_trees and block_len_trees. */
|
||||
s->block_type_trees = (HuffmanCode*)malloc(
|
||||
3 * BROTLI_HUFFMAN_MAX_TABLE_SIZE * sizeof(HuffmanCode));
|
||||
s->block_len_trees = (HuffmanCode*)malloc(
|
||||
3 * BROTLI_HUFFMAN_MAX_TABLE_SIZE * sizeof(HuffmanCode));
|
||||
if (s->block_type_trees == NULL || s->block_len_trees == NULL) {
|
||||
6 * BROTLI_HUFFMAN_MAX_TABLE_SIZE * sizeof(HuffmanCode));
|
||||
|
||||
if (s->block_type_trees == NULL) {
|
||||
result = BROTLI_FAILURE();
|
||||
break;
|
||||
}
|
||||
s->block_len_trees = s->block_type_trees +
|
||||
3 * BROTLI_HUFFMAN_MAX_TABLE_SIZE;
|
||||
|
||||
s->state = BROTLI_STATE_METABLOCK_BEGIN;
|
||||
/* No break, continue to next state */
|
||||
@ -1235,19 +1239,13 @@ BrotliResult BrotliDecompressStreaming(BrotliInput input, BrotliOutput output,
|
||||
--s->block_length[1];
|
||||
{
|
||||
int cmd_code = ReadSymbol(s->htree_command, br);
|
||||
int range_idx = cmd_code >> 6;
|
||||
if (PREDICT_FALSE((range_idx & ~1) == 0)) {
|
||||
const uint16_t *v = &kCmdLut[cmd_code][0];
|
||||
if (PREDICT_FALSE((cmd_code & ~0x7f) == 0)) {
|
||||
s->distance_code = 0;
|
||||
}
|
||||
s->insert_code =
|
||||
kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);
|
||||
s->copy_code = kCopyRangeLut[range_idx] + (cmd_code & 7);
|
||||
i = (int)BrotliReadBits(br, v[0]) + v[1];
|
||||
s->copy_length = (int)BrotliReadBits(br, v[2]) + v[3];
|
||||
}
|
||||
i = kInsertLengthPrefixCode[s->insert_code].offset +
|
||||
(int)BrotliReadBits(br,
|
||||
kInsertLengthPrefixCode[s->insert_code].nbits);
|
||||
s->copy_length = kCopyLengthPrefixCode[s->copy_code].offset +
|
||||
(int)BrotliReadBits(br, kCopyLengthPrefixCode[s->copy_code].nbits);
|
||||
BROTLI_LOG_UINT(i);
|
||||
BROTLI_LOG_UINT(s->copy_length);
|
||||
BROTLI_LOG_UINT(s->distance_code);
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include <string.h>
|
||||
#include "./huffman.h"
|
||||
#include "./port.h"
|
||||
#include "./safe_malloc.h"
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
extern "C" {
|
||||
|
729
dec/prefix.h
729
dec/prefix.h
@ -37,30 +37,711 @@ static const struct PrefixCodeRange kBlockLengthPrefixCode[] = {
|
||||
{8433, 13}, {16625, 24}
|
||||
};
|
||||
|
||||
static const struct PrefixCodeRange kInsertLengthPrefixCode[] = {
|
||||
{ 0, 0}, { 1, 0}, { 2, 0}, { 3, 0},
|
||||
{ 4, 0}, { 5, 0}, { 6, 1}, { 8, 1},
|
||||
{ 10, 2}, { 14, 2}, { 18, 3}, { 26, 3},
|
||||
{ 34, 4}, { 50, 4}, { 66, 5}, { 98, 5},
|
||||
{ 130, 6}, { 194, 7}, { 322, 8}, { 578, 9},
|
||||
{1090, 10}, {2114, 12}, {6210, 14}, {22594, 24},
|
||||
};
|
||||
|
||||
static const struct PrefixCodeRange kCopyLengthPrefixCode[] = {
|
||||
{ 2, 0}, { 3, 0}, { 4, 0}, { 5, 0},
|
||||
{ 6, 0}, { 7, 0}, { 8, 0}, { 9, 0},
|
||||
{ 10, 1}, { 12, 1}, { 14, 2}, { 18, 2},
|
||||
{ 22, 3}, { 30, 3}, { 38, 4}, { 54, 4},
|
||||
{ 70, 5}, { 102, 5}, { 134, 6}, { 198, 7},
|
||||
{326, 8}, { 582, 9}, {1094, 10}, {2118, 24},
|
||||
};
|
||||
|
||||
static const uint8_t kInsertRangeLut[11] = {
|
||||
0, 0, 0, 0, 8, 8, 0, 16, 8, 16, 16,
|
||||
};
|
||||
|
||||
static const uint8_t kCopyRangeLut[11] = {
|
||||
0, 8, 0, 8, 0, 8, 16, 0, 16, 8, 16,
|
||||
static const uint16_t kCmdLut[704][4] = {
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0009 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0002 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0003 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0004 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0005 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0006 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0007 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0008 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0009 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0002 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0003 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0004 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0005 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0006 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0007 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0008 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0000, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0000, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0000, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0000, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0000, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0000, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0000, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0000, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0001, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0001, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0001, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0001, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0001, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0001, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0001, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0001, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0002, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0002, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0002, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0002, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0002, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0002, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0002, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0002, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0003, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0003, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0003, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0003, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0003, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0003, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0003, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0003, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0004, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0004, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0004, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0004, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0004, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0004, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0004, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0004, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0005, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0005, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0005, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0005, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0005, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0005, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0005, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0005, 0x0004, 0x0036 },
|
||||
{ 0x0001, 0x0006, 0x0001, 0x000a },
|
||||
{ 0x0001, 0x0006, 0x0001, 0x000c },
|
||||
{ 0x0001, 0x0006, 0x0002, 0x000e },
|
||||
{ 0x0001, 0x0006, 0x0002, 0x0012 },
|
||||
{ 0x0001, 0x0006, 0x0003, 0x0016 },
|
||||
{ 0x0001, 0x0006, 0x0003, 0x001e },
|
||||
{ 0x0001, 0x0006, 0x0004, 0x0026 },
|
||||
{ 0x0001, 0x0006, 0x0004, 0x0036 },
|
||||
{ 0x0001, 0x0008, 0x0001, 0x000a },
|
||||
{ 0x0001, 0x0008, 0x0001, 0x000c },
|
||||
{ 0x0001, 0x0008, 0x0002, 0x000e },
|
||||
{ 0x0001, 0x0008, 0x0002, 0x0012 },
|
||||
{ 0x0001, 0x0008, 0x0003, 0x0016 },
|
||||
{ 0x0001, 0x0008, 0x0003, 0x001e },
|
||||
{ 0x0001, 0x0008, 0x0004, 0x0026 },
|
||||
{ 0x0001, 0x0008, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0000, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0001, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0002, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0003, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0004, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0002 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0003 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0004 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0005 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0006 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0007 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0008 },
|
||||
{ 0x0000, 0x0005, 0x0000, 0x0009 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0002 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0003 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0004 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0005 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0006 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0007 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0008 },
|
||||
{ 0x0001, 0x0006, 0x0000, 0x0009 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0002 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0003 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0004 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0005 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0006 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0007 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0008 },
|
||||
{ 0x0001, 0x0008, 0x0000, 0x0009 },
|
||||
{ 0x0000, 0x0000, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0000, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0000, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0000, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0000, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0000, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0000, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0000, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0001, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0001, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0001, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0001, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0001, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0001, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0001, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0001, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0002, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0002, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0002, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0002, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0002, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0002, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0002, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0002, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0003, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0003, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0003, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0003, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0003, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0003, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0003, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0003, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0004, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0004, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0004, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0004, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0004, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0004, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0004, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0004, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0005, 0x0001, 0x000a },
|
||||
{ 0x0000, 0x0005, 0x0001, 0x000c },
|
||||
{ 0x0000, 0x0005, 0x0002, 0x000e },
|
||||
{ 0x0000, 0x0005, 0x0002, 0x0012 },
|
||||
{ 0x0000, 0x0005, 0x0003, 0x0016 },
|
||||
{ 0x0000, 0x0005, 0x0003, 0x001e },
|
||||
{ 0x0000, 0x0005, 0x0004, 0x0026 },
|
||||
{ 0x0000, 0x0005, 0x0004, 0x0036 },
|
||||
{ 0x0001, 0x0006, 0x0001, 0x000a },
|
||||
{ 0x0001, 0x0006, 0x0001, 0x000c },
|
||||
{ 0x0001, 0x0006, 0x0002, 0x000e },
|
||||
{ 0x0001, 0x0006, 0x0002, 0x0012 },
|
||||
{ 0x0001, 0x0006, 0x0003, 0x0016 },
|
||||
{ 0x0001, 0x0006, 0x0003, 0x001e },
|
||||
{ 0x0001, 0x0006, 0x0004, 0x0026 },
|
||||
{ 0x0001, 0x0006, 0x0004, 0x0036 },
|
||||
{ 0x0001, 0x0008, 0x0001, 0x000a },
|
||||
{ 0x0001, 0x0008, 0x0001, 0x000c },
|
||||
{ 0x0001, 0x0008, 0x0002, 0x000e },
|
||||
{ 0x0001, 0x0008, 0x0002, 0x0012 },
|
||||
{ 0x0001, 0x0008, 0x0003, 0x0016 },
|
||||
{ 0x0001, 0x0008, 0x0003, 0x001e },
|
||||
{ 0x0001, 0x0008, 0x0004, 0x0026 },
|
||||
{ 0x0001, 0x0008, 0x0004, 0x0036 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0002 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0003 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0004 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0005 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0006 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0007 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0008 },
|
||||
{ 0x0002, 0x000a, 0x0000, 0x0009 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0002 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0003 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0004 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0005 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0006 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0007 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0008 },
|
||||
{ 0x0002, 0x000e, 0x0000, 0x0009 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0002 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0003 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0004 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0005 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0006 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0007 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0008 },
|
||||
{ 0x0003, 0x0012, 0x0000, 0x0009 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0002 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0003 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0004 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0005 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0006 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0007 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0008 },
|
||||
{ 0x0003, 0x001a, 0x0000, 0x0009 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0002 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0003 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0004 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0005 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0006 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0007 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0008 },
|
||||
{ 0x0004, 0x0022, 0x0000, 0x0009 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0002 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0003 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0004 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0005 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0006 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0007 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0008 },
|
||||
{ 0x0004, 0x0032, 0x0000, 0x0009 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0002 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0003 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0004 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0005 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0006 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0007 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0008 },
|
||||
{ 0x0005, 0x0042, 0x0000, 0x0009 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0002 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0003 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0004 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0005 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0006 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0007 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0008 },
|
||||
{ 0x0005, 0x0062, 0x0000, 0x0009 },
|
||||
{ 0x0002, 0x000a, 0x0001, 0x000a },
|
||||
{ 0x0002, 0x000a, 0x0001, 0x000c },
|
||||
{ 0x0002, 0x000a, 0x0002, 0x000e },
|
||||
{ 0x0002, 0x000a, 0x0002, 0x0012 },
|
||||
{ 0x0002, 0x000a, 0x0003, 0x0016 },
|
||||
{ 0x0002, 0x000a, 0x0003, 0x001e },
|
||||
{ 0x0002, 0x000a, 0x0004, 0x0026 },
|
||||
{ 0x0002, 0x000a, 0x0004, 0x0036 },
|
||||
{ 0x0002, 0x000e, 0x0001, 0x000a },
|
||||
{ 0x0002, 0x000e, 0x0001, 0x000c },
|
||||
{ 0x0002, 0x000e, 0x0002, 0x000e },
|
||||
{ 0x0002, 0x000e, 0x0002, 0x0012 },
|
||||
{ 0x0002, 0x000e, 0x0003, 0x0016 },
|
||||
{ 0x0002, 0x000e, 0x0003, 0x001e },
|
||||
{ 0x0002, 0x000e, 0x0004, 0x0026 },
|
||||
{ 0x0002, 0x000e, 0x0004, 0x0036 },
|
||||
{ 0x0003, 0x0012, 0x0001, 0x000a },
|
||||
{ 0x0003, 0x0012, 0x0001, 0x000c },
|
||||
{ 0x0003, 0x0012, 0x0002, 0x000e },
|
||||
{ 0x0003, 0x0012, 0x0002, 0x0012 },
|
||||
{ 0x0003, 0x0012, 0x0003, 0x0016 },
|
||||
{ 0x0003, 0x0012, 0x0003, 0x001e },
|
||||
{ 0x0003, 0x0012, 0x0004, 0x0026 },
|
||||
{ 0x0003, 0x0012, 0x0004, 0x0036 },
|
||||
{ 0x0003, 0x001a, 0x0001, 0x000a },
|
||||
{ 0x0003, 0x001a, 0x0001, 0x000c },
|
||||
{ 0x0003, 0x001a, 0x0002, 0x000e },
|
||||
{ 0x0003, 0x001a, 0x0002, 0x0012 },
|
||||
{ 0x0003, 0x001a, 0x0003, 0x0016 },
|
||||
{ 0x0003, 0x001a, 0x0003, 0x001e },
|
||||
{ 0x0003, 0x001a, 0x0004, 0x0026 },
|
||||
{ 0x0003, 0x001a, 0x0004, 0x0036 },
|
||||
{ 0x0004, 0x0022, 0x0001, 0x000a },
|
||||
{ 0x0004, 0x0022, 0x0001, 0x000c },
|
||||
{ 0x0004, 0x0022, 0x0002, 0x000e },
|
||||
{ 0x0004, 0x0022, 0x0002, 0x0012 },
|
||||
{ 0x0004, 0x0022, 0x0003, 0x0016 },
|
||||
{ 0x0004, 0x0022, 0x0003, 0x001e },
|
||||
{ 0x0004, 0x0022, 0x0004, 0x0026 },
|
||||
{ 0x0004, 0x0022, 0x0004, 0x0036 },
|
||||
{ 0x0004, 0x0032, 0x0001, 0x000a },
|
||||
{ 0x0004, 0x0032, 0x0001, 0x000c },
|
||||
{ 0x0004, 0x0032, 0x0002, 0x000e },
|
||||
{ 0x0004, 0x0032, 0x0002, 0x0012 },
|
||||
{ 0x0004, 0x0032, 0x0003, 0x0016 },
|
||||
{ 0x0004, 0x0032, 0x0003, 0x001e },
|
||||
{ 0x0004, 0x0032, 0x0004, 0x0026 },
|
||||
{ 0x0004, 0x0032, 0x0004, 0x0036 },
|
||||
{ 0x0005, 0x0042, 0x0001, 0x000a },
|
||||
{ 0x0005, 0x0042, 0x0001, 0x000c },
|
||||
{ 0x0005, 0x0042, 0x0002, 0x000e },
|
||||
{ 0x0005, 0x0042, 0x0002, 0x0012 },
|
||||
{ 0x0005, 0x0042, 0x0003, 0x0016 },
|
||||
{ 0x0005, 0x0042, 0x0003, 0x001e },
|
||||
{ 0x0005, 0x0042, 0x0004, 0x0026 },
|
||||
{ 0x0005, 0x0042, 0x0004, 0x0036 },
|
||||
{ 0x0005, 0x0062, 0x0001, 0x000a },
|
||||
{ 0x0005, 0x0062, 0x0001, 0x000c },
|
||||
{ 0x0005, 0x0062, 0x0002, 0x000e },
|
||||
{ 0x0005, 0x0062, 0x0002, 0x0012 },
|
||||
{ 0x0005, 0x0062, 0x0003, 0x0016 },
|
||||
{ 0x0005, 0x0062, 0x0003, 0x001e },
|
||||
{ 0x0005, 0x0062, 0x0004, 0x0026 },
|
||||
{ 0x0005, 0x0062, 0x0004, 0x0036 },
|
||||
{ 0x0000, 0x0000, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0000, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0000, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0000, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0000, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0000, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0000, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0000, 0x0018, 0x0846 },
|
||||
{ 0x0000, 0x0001, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0001, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0001, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0001, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0001, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0001, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0001, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0001, 0x0018, 0x0846 },
|
||||
{ 0x0000, 0x0002, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0002, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0002, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0002, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0002, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0002, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0002, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0002, 0x0018, 0x0846 },
|
||||
{ 0x0000, 0x0003, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0003, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0003, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0003, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0003, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0003, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0003, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0003, 0x0018, 0x0846 },
|
||||
{ 0x0000, 0x0004, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0004, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0004, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0004, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0004, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0004, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0004, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0004, 0x0018, 0x0846 },
|
||||
{ 0x0000, 0x0005, 0x0005, 0x0046 },
|
||||
{ 0x0000, 0x0005, 0x0005, 0x0066 },
|
||||
{ 0x0000, 0x0005, 0x0006, 0x0086 },
|
||||
{ 0x0000, 0x0005, 0x0007, 0x00c6 },
|
||||
{ 0x0000, 0x0005, 0x0008, 0x0146 },
|
||||
{ 0x0000, 0x0005, 0x0009, 0x0246 },
|
||||
{ 0x0000, 0x0005, 0x000a, 0x0446 },
|
||||
{ 0x0000, 0x0005, 0x0018, 0x0846 },
|
||||
{ 0x0001, 0x0006, 0x0005, 0x0046 },
|
||||
{ 0x0001, 0x0006, 0x0005, 0x0066 },
|
||||
{ 0x0001, 0x0006, 0x0006, 0x0086 },
|
||||
{ 0x0001, 0x0006, 0x0007, 0x00c6 },
|
||||
{ 0x0001, 0x0006, 0x0008, 0x0146 },
|
||||
{ 0x0001, 0x0006, 0x0009, 0x0246 },
|
||||
{ 0x0001, 0x0006, 0x000a, 0x0446 },
|
||||
{ 0x0001, 0x0006, 0x0018, 0x0846 },
|
||||
{ 0x0001, 0x0008, 0x0005, 0x0046 },
|
||||
{ 0x0001, 0x0008, 0x0005, 0x0066 },
|
||||
{ 0x0001, 0x0008, 0x0006, 0x0086 },
|
||||
{ 0x0001, 0x0008, 0x0007, 0x00c6 },
|
||||
{ 0x0001, 0x0008, 0x0008, 0x0146 },
|
||||
{ 0x0001, 0x0008, 0x0009, 0x0246 },
|
||||
{ 0x0001, 0x0008, 0x000a, 0x0446 },
|
||||
{ 0x0001, 0x0008, 0x0018, 0x0846 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0002 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0003 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0004 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0005 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0006 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0007 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0008 },
|
||||
{ 0x0006, 0x0082, 0x0000, 0x0009 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0002 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0003 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0004 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0005 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0006 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0007 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0008 },
|
||||
{ 0x0007, 0x00c2, 0x0000, 0x0009 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0002 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0003 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0004 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0005 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0006 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0007 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0008 },
|
||||
{ 0x0008, 0x0142, 0x0000, 0x0009 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0002 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0003 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0004 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0005 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0006 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0007 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0008 },
|
||||
{ 0x0009, 0x0242, 0x0000, 0x0009 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0002 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0003 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0004 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0005 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0006 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0007 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0008 },
|
||||
{ 0x000a, 0x0442, 0x0000, 0x0009 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0002 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0003 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0004 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0005 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0006 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0007 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0008 },
|
||||
{ 0x000c, 0x0842, 0x0000, 0x0009 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0002 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0003 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0004 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0005 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0006 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0007 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0008 },
|
||||
{ 0x000e, 0x1842, 0x0000, 0x0009 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0002 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0003 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0004 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0005 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0006 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0007 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0008 },
|
||||
{ 0x0018, 0x5842, 0x0000, 0x0009 },
|
||||
{ 0x0002, 0x000a, 0x0005, 0x0046 },
|
||||
{ 0x0002, 0x000a, 0x0005, 0x0066 },
|
||||
{ 0x0002, 0x000a, 0x0006, 0x0086 },
|
||||
{ 0x0002, 0x000a, 0x0007, 0x00c6 },
|
||||
{ 0x0002, 0x000a, 0x0008, 0x0146 },
|
||||
{ 0x0002, 0x000a, 0x0009, 0x0246 },
|
||||
{ 0x0002, 0x000a, 0x000a, 0x0446 },
|
||||
{ 0x0002, 0x000a, 0x0018, 0x0846 },
|
||||
{ 0x0002, 0x000e, 0x0005, 0x0046 },
|
||||
{ 0x0002, 0x000e, 0x0005, 0x0066 },
|
||||
{ 0x0002, 0x000e, 0x0006, 0x0086 },
|
||||
{ 0x0002, 0x000e, 0x0007, 0x00c6 },
|
||||
{ 0x0002, 0x000e, 0x0008, 0x0146 },
|
||||
{ 0x0002, 0x000e, 0x0009, 0x0246 },
|
||||
{ 0x0002, 0x000e, 0x000a, 0x0446 },
|
||||
{ 0x0002, 0x000e, 0x0018, 0x0846 },
|
||||
{ 0x0003, 0x0012, 0x0005, 0x0046 },
|
||||
{ 0x0003, 0x0012, 0x0005, 0x0066 },
|
||||
{ 0x0003, 0x0012, 0x0006, 0x0086 },
|
||||
{ 0x0003, 0x0012, 0x0007, 0x00c6 },
|
||||
{ 0x0003, 0x0012, 0x0008, 0x0146 },
|
||||
{ 0x0003, 0x0012, 0x0009, 0x0246 },
|
||||
{ 0x0003, 0x0012, 0x000a, 0x0446 },
|
||||
{ 0x0003, 0x0012, 0x0018, 0x0846 },
|
||||
{ 0x0003, 0x001a, 0x0005, 0x0046 },
|
||||
{ 0x0003, 0x001a, 0x0005, 0x0066 },
|
||||
{ 0x0003, 0x001a, 0x0006, 0x0086 },
|
||||
{ 0x0003, 0x001a, 0x0007, 0x00c6 },
|
||||
{ 0x0003, 0x001a, 0x0008, 0x0146 },
|
||||
{ 0x0003, 0x001a, 0x0009, 0x0246 },
|
||||
{ 0x0003, 0x001a, 0x000a, 0x0446 },
|
||||
{ 0x0003, 0x001a, 0x0018, 0x0846 },
|
||||
{ 0x0004, 0x0022, 0x0005, 0x0046 },
|
||||
{ 0x0004, 0x0022, 0x0005, 0x0066 },
|
||||
{ 0x0004, 0x0022, 0x0006, 0x0086 },
|
||||
{ 0x0004, 0x0022, 0x0007, 0x00c6 },
|
||||
{ 0x0004, 0x0022, 0x0008, 0x0146 },
|
||||
{ 0x0004, 0x0022, 0x0009, 0x0246 },
|
||||
{ 0x0004, 0x0022, 0x000a, 0x0446 },
|
||||
{ 0x0004, 0x0022, 0x0018, 0x0846 },
|
||||
{ 0x0004, 0x0032, 0x0005, 0x0046 },
|
||||
{ 0x0004, 0x0032, 0x0005, 0x0066 },
|
||||
{ 0x0004, 0x0032, 0x0006, 0x0086 },
|
||||
{ 0x0004, 0x0032, 0x0007, 0x00c6 },
|
||||
{ 0x0004, 0x0032, 0x0008, 0x0146 },
|
||||
{ 0x0004, 0x0032, 0x0009, 0x0246 },
|
||||
{ 0x0004, 0x0032, 0x000a, 0x0446 },
|
||||
{ 0x0004, 0x0032, 0x0018, 0x0846 },
|
||||
{ 0x0005, 0x0042, 0x0005, 0x0046 },
|
||||
{ 0x0005, 0x0042, 0x0005, 0x0066 },
|
||||
{ 0x0005, 0x0042, 0x0006, 0x0086 },
|
||||
{ 0x0005, 0x0042, 0x0007, 0x00c6 },
|
||||
{ 0x0005, 0x0042, 0x0008, 0x0146 },
|
||||
{ 0x0005, 0x0042, 0x0009, 0x0246 },
|
||||
{ 0x0005, 0x0042, 0x000a, 0x0446 },
|
||||
{ 0x0005, 0x0042, 0x0018, 0x0846 },
|
||||
{ 0x0005, 0x0062, 0x0005, 0x0046 },
|
||||
{ 0x0005, 0x0062, 0x0005, 0x0066 },
|
||||
{ 0x0005, 0x0062, 0x0006, 0x0086 },
|
||||
{ 0x0005, 0x0062, 0x0007, 0x00c6 },
|
||||
{ 0x0005, 0x0062, 0x0008, 0x0146 },
|
||||
{ 0x0005, 0x0062, 0x0009, 0x0246 },
|
||||
{ 0x0005, 0x0062, 0x000a, 0x0446 },
|
||||
{ 0x0005, 0x0062, 0x0018, 0x0846 },
|
||||
{ 0x0006, 0x0082, 0x0001, 0x000a },
|
||||
{ 0x0006, 0x0082, 0x0001, 0x000c },
|
||||
{ 0x0006, 0x0082, 0x0002, 0x000e },
|
||||
{ 0x0006, 0x0082, 0x0002, 0x0012 },
|
||||
{ 0x0006, 0x0082, 0x0003, 0x0016 },
|
||||
{ 0x0006, 0x0082, 0x0003, 0x001e },
|
||||
{ 0x0006, 0x0082, 0x0004, 0x0026 },
|
||||
{ 0x0006, 0x0082, 0x0004, 0x0036 },
|
||||
{ 0x0007, 0x00c2, 0x0001, 0x000a },
|
||||
{ 0x0007, 0x00c2, 0x0001, 0x000c },
|
||||
{ 0x0007, 0x00c2, 0x0002, 0x000e },
|
||||
{ 0x0007, 0x00c2, 0x0002, 0x0012 },
|
||||
{ 0x0007, 0x00c2, 0x0003, 0x0016 },
|
||||
{ 0x0007, 0x00c2, 0x0003, 0x001e },
|
||||
{ 0x0007, 0x00c2, 0x0004, 0x0026 },
|
||||
{ 0x0007, 0x00c2, 0x0004, 0x0036 },
|
||||
{ 0x0008, 0x0142, 0x0001, 0x000a },
|
||||
{ 0x0008, 0x0142, 0x0001, 0x000c },
|
||||
{ 0x0008, 0x0142, 0x0002, 0x000e },
|
||||
{ 0x0008, 0x0142, 0x0002, 0x0012 },
|
||||
{ 0x0008, 0x0142, 0x0003, 0x0016 },
|
||||
{ 0x0008, 0x0142, 0x0003, 0x001e },
|
||||
{ 0x0008, 0x0142, 0x0004, 0x0026 },
|
||||
{ 0x0008, 0x0142, 0x0004, 0x0036 },
|
||||
{ 0x0009, 0x0242, 0x0001, 0x000a },
|
||||
{ 0x0009, 0x0242, 0x0001, 0x000c },
|
||||
{ 0x0009, 0x0242, 0x0002, 0x000e },
|
||||
{ 0x0009, 0x0242, 0x0002, 0x0012 },
|
||||
{ 0x0009, 0x0242, 0x0003, 0x0016 },
|
||||
{ 0x0009, 0x0242, 0x0003, 0x001e },
|
||||
{ 0x0009, 0x0242, 0x0004, 0x0026 },
|
||||
{ 0x0009, 0x0242, 0x0004, 0x0036 },
|
||||
{ 0x000a, 0x0442, 0x0001, 0x000a },
|
||||
{ 0x000a, 0x0442, 0x0001, 0x000c },
|
||||
{ 0x000a, 0x0442, 0x0002, 0x000e },
|
||||
{ 0x000a, 0x0442, 0x0002, 0x0012 },
|
||||
{ 0x000a, 0x0442, 0x0003, 0x0016 },
|
||||
{ 0x000a, 0x0442, 0x0003, 0x001e },
|
||||
{ 0x000a, 0x0442, 0x0004, 0x0026 },
|
||||
{ 0x000a, 0x0442, 0x0004, 0x0036 },
|
||||
{ 0x000c, 0x0842, 0x0001, 0x000a },
|
||||
{ 0x000c, 0x0842, 0x0001, 0x000c },
|
||||
{ 0x000c, 0x0842, 0x0002, 0x000e },
|
||||
{ 0x000c, 0x0842, 0x0002, 0x0012 },
|
||||
{ 0x000c, 0x0842, 0x0003, 0x0016 },
|
||||
{ 0x000c, 0x0842, 0x0003, 0x001e },
|
||||
{ 0x000c, 0x0842, 0x0004, 0x0026 },
|
||||
{ 0x000c, 0x0842, 0x0004, 0x0036 },
|
||||
{ 0x000e, 0x1842, 0x0001, 0x000a },
|
||||
{ 0x000e, 0x1842, 0x0001, 0x000c },
|
||||
{ 0x000e, 0x1842, 0x0002, 0x000e },
|
||||
{ 0x000e, 0x1842, 0x0002, 0x0012 },
|
||||
{ 0x000e, 0x1842, 0x0003, 0x0016 },
|
||||
{ 0x000e, 0x1842, 0x0003, 0x001e },
|
||||
{ 0x000e, 0x1842, 0x0004, 0x0026 },
|
||||
{ 0x000e, 0x1842, 0x0004, 0x0036 },
|
||||
{ 0x0018, 0x5842, 0x0001, 0x000a },
|
||||
{ 0x0018, 0x5842, 0x0001, 0x000c },
|
||||
{ 0x0018, 0x5842, 0x0002, 0x000e },
|
||||
{ 0x0018, 0x5842, 0x0002, 0x0012 },
|
||||
{ 0x0018, 0x5842, 0x0003, 0x0016 },
|
||||
{ 0x0018, 0x5842, 0x0003, 0x001e },
|
||||
{ 0x0018, 0x5842, 0x0004, 0x0026 },
|
||||
{ 0x0018, 0x5842, 0x0004, 0x0036 },
|
||||
{ 0x0006, 0x0082, 0x0005, 0x0046 },
|
||||
{ 0x0006, 0x0082, 0x0005, 0x0066 },
|
||||
{ 0x0006, 0x0082, 0x0006, 0x0086 },
|
||||
{ 0x0006, 0x0082, 0x0007, 0x00c6 },
|
||||
{ 0x0006, 0x0082, 0x0008, 0x0146 },
|
||||
{ 0x0006, 0x0082, 0x0009, 0x0246 },
|
||||
{ 0x0006, 0x0082, 0x000a, 0x0446 },
|
||||
{ 0x0006, 0x0082, 0x0018, 0x0846 },
|
||||
{ 0x0007, 0x00c2, 0x0005, 0x0046 },
|
||||
{ 0x0007, 0x00c2, 0x0005, 0x0066 },
|
||||
{ 0x0007, 0x00c2, 0x0006, 0x0086 },
|
||||
{ 0x0007, 0x00c2, 0x0007, 0x00c6 },
|
||||
{ 0x0007, 0x00c2, 0x0008, 0x0146 },
|
||||
{ 0x0007, 0x00c2, 0x0009, 0x0246 },
|
||||
{ 0x0007, 0x00c2, 0x000a, 0x0446 },
|
||||
{ 0x0007, 0x00c2, 0x0018, 0x0846 },
|
||||
{ 0x0008, 0x0142, 0x0005, 0x0046 },
|
||||
{ 0x0008, 0x0142, 0x0005, 0x0066 },
|
||||
{ 0x0008, 0x0142, 0x0006, 0x0086 },
|
||||
{ 0x0008, 0x0142, 0x0007, 0x00c6 },
|
||||
{ 0x0008, 0x0142, 0x0008, 0x0146 },
|
||||
{ 0x0008, 0x0142, 0x0009, 0x0246 },
|
||||
{ 0x0008, 0x0142, 0x000a, 0x0446 },
|
||||
{ 0x0008, 0x0142, 0x0018, 0x0846 },
|
||||
{ 0x0009, 0x0242, 0x0005, 0x0046 },
|
||||
{ 0x0009, 0x0242, 0x0005, 0x0066 },
|
||||
{ 0x0009, 0x0242, 0x0006, 0x0086 },
|
||||
{ 0x0009, 0x0242, 0x0007, 0x00c6 },
|
||||
{ 0x0009, 0x0242, 0x0008, 0x0146 },
|
||||
{ 0x0009, 0x0242, 0x0009, 0x0246 },
|
||||
{ 0x0009, 0x0242, 0x000a, 0x0446 },
|
||||
{ 0x0009, 0x0242, 0x0018, 0x0846 },
|
||||
{ 0x000a, 0x0442, 0x0005, 0x0046 },
|
||||
{ 0x000a, 0x0442, 0x0005, 0x0066 },
|
||||
{ 0x000a, 0x0442, 0x0006, 0x0086 },
|
||||
{ 0x000a, 0x0442, 0x0007, 0x00c6 },
|
||||
{ 0x000a, 0x0442, 0x0008, 0x0146 },
|
||||
{ 0x000a, 0x0442, 0x0009, 0x0246 },
|
||||
{ 0x000a, 0x0442, 0x000a, 0x0446 },
|
||||
{ 0x000a, 0x0442, 0x0018, 0x0846 },
|
||||
{ 0x000c, 0x0842, 0x0005, 0x0046 },
|
||||
{ 0x000c, 0x0842, 0x0005, 0x0066 },
|
||||
{ 0x000c, 0x0842, 0x0006, 0x0086 },
|
||||
{ 0x000c, 0x0842, 0x0007, 0x00c6 },
|
||||
{ 0x000c, 0x0842, 0x0008, 0x0146 },
|
||||
{ 0x000c, 0x0842, 0x0009, 0x0246 },
|
||||
{ 0x000c, 0x0842, 0x000a, 0x0446 },
|
||||
{ 0x000c, 0x0842, 0x0018, 0x0846 },
|
||||
{ 0x000e, 0x1842, 0x0005, 0x0046 },
|
||||
{ 0x000e, 0x1842, 0x0005, 0x0066 },
|
||||
{ 0x000e, 0x1842, 0x0006, 0x0086 },
|
||||
{ 0x000e, 0x1842, 0x0007, 0x00c6 },
|
||||
{ 0x000e, 0x1842, 0x0008, 0x0146 },
|
||||
{ 0x000e, 0x1842, 0x0009, 0x0246 },
|
||||
{ 0x000e, 0x1842, 0x000a, 0x0446 },
|
||||
{ 0x000e, 0x1842, 0x0018, 0x0846 },
|
||||
{ 0x0018, 0x5842, 0x0005, 0x0046 },
|
||||
{ 0x0018, 0x5842, 0x0005, 0x0066 },
|
||||
{ 0x0018, 0x5842, 0x0006, 0x0086 },
|
||||
{ 0x0018, 0x5842, 0x0007, 0x00c6 },
|
||||
{ 0x0018, 0x5842, 0x0008, 0x0146 },
|
||||
{ 0x0018, 0x5842, 0x0009, 0x0246 },
|
||||
{ 0x0018, 0x5842, 0x000a, 0x0446 },
|
||||
{ 0x0018, 0x5842, 0x0018, 0x0846 },
|
||||
};
|
||||
|
||||
#endif /* BROTLI_DEC_PREFIX_H_ */
|
||||
|
@ -1,46 +0,0 @@
|
||||
/* Copyright 2013 Google Inc. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/* Size-checked memory allocation. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "./port.h"
|
||||
#include "./safe_malloc.h"
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Returns 0 in case of overflow of nmemb * size. */
|
||||
static int CheckSizeArgumentsOverflow(uint64_t nmemb, size_t size) {
|
||||
const uint64_t total_size = nmemb * size;
|
||||
if (nmemb == 0) return 1;
|
||||
if ((nmemb | size) >> 31) {
|
||||
return 0;
|
||||
}
|
||||
if (((size * nmemb) >> BROTLI_MAX_ALLOCABLE_MEMORY_BITS) != 0) return 0;
|
||||
if (total_size != (size_t)total_size) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void* BrotliSafeMalloc(uint64_t nmemb, size_t size) {
|
||||
if (!CheckSizeArgumentsOverflow(nmemb, size)) return NULL;
|
||||
BROTLI_DCHECK(nmemb * size > 0);
|
||||
return malloc((size_t)(nmemb * size));
|
||||
}
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
} /* extern "C" */
|
||||
#endif
|
@ -1,43 +0,0 @@
|
||||
/* Copyright 2013 Google Inc. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/* Size-checked memory allocation. */
|
||||
|
||||
#ifndef BROTLI_DEC_SAFE_MALLOC_H_
|
||||
#define BROTLI_DEC_SAFE_MALLOC_H_
|
||||
|
||||
#include "./types.h"
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* This is the maximum memory amount that we will ever try to allocate. */
|
||||
#define BROTLI_MAX_ALLOCABLE_MEMORY_BITS 30
|
||||
|
||||
/* size-checking safe malloc/calloc: verify that the requested size is not too
|
||||
large, or return NULL. You don't need to call these for constructs like
|
||||
malloc(sizeof(foo)), but only if there's font-dependent size involved
|
||||
somewhere (like: malloc(decoded_size * sizeof(*something))). That's why this
|
||||
safe malloc() borrows the signature from calloc(), pointing at the dangerous
|
||||
underlying multiply involved.
|
||||
*/
|
||||
void* BrotliSafeMalloc(uint64_t nmemb, size_t size);
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* BROTLI_DEC_SAFE_MALLOC_H_ */
|
@ -148,9 +148,6 @@ void BrotliStateCleanup(BrotliState* s) {
|
||||
if (s->block_type_trees != 0) {
|
||||
free(s->block_type_trees);
|
||||
}
|
||||
if (s->block_len_trees != 0) {
|
||||
free(s->block_len_trees);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
|
@ -131,8 +131,6 @@ typedef struct {
|
||||
const uint8_t* context_lookup2;
|
||||
HuffmanCode* htree_command;
|
||||
|
||||
int insert_code;
|
||||
int copy_code;
|
||||
int copy_length;
|
||||
int distance_code;
|
||||
int distance;
|
||||
|
2
setup.py
2
setup.py
@ -107,7 +107,6 @@ brotli = Extension("brotli",
|
||||
"dec/bit_reader.c",
|
||||
"dec/decode.c",
|
||||
"dec/huffman.c",
|
||||
"dec/safe_malloc.c",
|
||||
"dec/streams.c",
|
||||
"dec/state.c",
|
||||
],
|
||||
@ -144,7 +143,6 @@ brotli = Extension("brotli",
|
||||
"dec/huffman.h",
|
||||
"dec/prefix.h",
|
||||
"dec/port.h",
|
||||
"dec/safe_malloc.h",
|
||||
"dec/streams.h",
|
||||
"dec/transform.h",
|
||||
"dec/types.h",
|
||||
|
Loading…
Reference in New Issue
Block a user