summaryrefslogtreecommitdiffstats
path: root/libfreerdp/codec/ncrush.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libfreerdp/codec/ncrush.c3045
1 files changed, 3045 insertions, 0 deletions
diff --git a/libfreerdp/codec/ncrush.c b/libfreerdp/codec/ncrush.c
new file mode 100644
index 0000000..4a7162c
--- /dev/null
+++ b/libfreerdp/codec/ncrush.c
@@ -0,0 +1,3045 @@
+/**
+ * FreeRDP: A Remote Desktop Protocol Implementation
+ * NCrush (RDP6) Bulk Data Compression
+ *
+ * Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
+ * Copyright 2017 Armin Novak <armin.novak@thincast.com>
+ * Copyright 2017 Thincast Technologies GmbH
+ *
+ * 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.
+ */
+
+#include <winpr/assert.h>
+
+#include <freerdp/config.h>
+
+#include <winpr/crt.h>
+#include <winpr/print.h>
+#include <winpr/bitstream.h>
+
+#include <freerdp/log.h>
+#include <freerdp/types.h>
+
+#include "ncrush.h"
+
+#define TAG FREERDP_TAG("codec")
+
+struct s_NCRUSH_CONTEXT
+{
+ ALIGN64 BOOL Compressor;
+ ALIGN64 BYTE* HistoryPtr;
+ ALIGN64 UINT32 HistoryOffset;
+ ALIGN64 UINT32 HistoryEndOffset;
+ ALIGN64 UINT32 HistoryBufferSize;
+ ALIGN64 BYTE HistoryBuffer[65536];
+ ALIGN64 UINT32 HistoryBufferFence;
+ ALIGN64 UINT32 OffsetCache[4];
+ ALIGN64 UINT16 HashTable[65536];
+ ALIGN64 UINT16 MatchTable[65536];
+ ALIGN64 BYTE HuffTableCopyOffset[1024];
+ ALIGN64 BYTE HuffTableLOM[4096];
+};
+
+static const UINT16 HuffTableLEC[8192] = {
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA091,
+ 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C4,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1, 0x5121, 0x7102, 0x6116, 0xA056,
+ 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA071,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C, 0x610A, 0x9017, 0x611D, 0xA0DF,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087, 0x5111, 0x700A, 0x6114, 0xA023,
+ 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0A9,
+ 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B7,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095, 0x5121, 0x7080, 0x6115, 0xA046,
+ 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA07E,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B, 0x610C, 0x901F, 0x611E, 0xA0EC,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09D,
+ 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F, 0x6109, 0x8120, 0x611C, 0xA0D3,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE, 0x5121, 0x7103, 0x6116, 0xA064,
+ 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06A,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D, 0x610A, 0x9014, 0x611D, 0xA0D9,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A3,
+ 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BD,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B, 0x5121, 0x70FF, 0x6115, 0xA04E,
+ 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08A,
+ 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062, 0x610C, 0x9024, 0x611E, 0xA0F7,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA097,
+ 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CB,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7, 0x5121, 0x7102, 0x6116, 0xA05D,
+ 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA077,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054, 0x610A, 0x901C, 0x611D, 0xA0E6,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E, 0x5111, 0x700A, 0x6114, 0xA034,
+ 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B0,
+ 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104, 0x510B, 0x611F, 0x610D, 0x9027,
+ 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B4,
+ 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092, 0x5121, 0x7080, 0x6115, 0xA03B,
+ 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07B,
+ 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5, 0x510F, 0x7005, 0x6112, 0x9070,
+ 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057, 0x610C, 0x901D, 0x611E, 0xA0E9,
+ 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072, 0x5111, 0x7008, 0x6113, 0x90E0,
+ 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA09A,
+ 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1, 0x510B, 0x6122, 0x610E, 0x903C,
+ 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B, 0x6109, 0x80FE, 0x611C, 0xA0CF,
+ 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA, 0x5121, 0x7103, 0x6116, 0xA061,
+ 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06D,
+ 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8, 0x510F, 0x7003, 0x6110, 0x9044,
+ 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047, 0x610A, 0x9015, 0x611D, 0xA0DC,
+ 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083, 0x5111, 0x7009, 0x6114, 0x90FC,
+ 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A6,
+ 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED, 0x510B, 0x611F, 0x610D, 0x9031,
+ 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0C1,
+ 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E, 0x5121, 0x70FF, 0x6115, 0xA053,
+ 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08D,
+ 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4, 0x510F, 0x7006, 0x6112, 0x9088,
+ 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065, 0x610C, 0x9025, 0x611E, 0xA0FB,
+ 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B, 0x5111, 0x7007, 0x6113, 0x90C6,
+ 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA094,
+ 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA, 0x510B, 0x6122, 0x610E, 0x9037,
+ 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C8,
+ 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4, 0x5121, 0x7102, 0x6116, 0xA05A,
+ 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA074,
+ 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE, 0x510F, 0x7004, 0x6110, 0x9050,
+ 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F, 0x610A, 0x901A, 0x611D, 0xA0E3,
+ 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B, 0x5111, 0x700A, 0x6114, 0xA02E,
+ 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AD,
+ 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9, 0x510B, 0x611F, 0x610D, 0x902A,
+ 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0BA,
+ 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098, 0x5121, 0x7080, 0x6115, 0xA04B,
+ 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA086,
+ 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD, 0x510F, 0x7005, 0x6112, 0x9081,
+ 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E, 0x610C, 0x9021, 0x611E, 0xA0F3,
+ 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079, 0x5111, 0x7008, 0x6113, 0x90F2,
+ 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA0A0,
+ 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7, 0x510B, 0x6122, 0x610E, 0x9041,
+ 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036, 0x6109, 0x8120, 0x611C, 0xA0D6,
+ 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1, 0x5121, 0x7103, 0x6116, 0xA067,
+ 0x610C, 0x9026, 0x611E, 0xB0B2, 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068,
+ 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042,
+ 0x6002, 0x800B, 0x6119, 0xA091, 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7,
+ 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4,
+ 0x6109, 0x8060, 0x611C, 0xA0C4, 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1,
+ 0x5121, 0x7102, 0x6116, 0xA056, 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C,
+ 0x6000, 0x7106, 0x6117, 0xA071, 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB,
+ 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C,
+ 0x610A, 0x9017, 0x611D, 0xA0DF, 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087,
+ 0x5111, 0x700A, 0x6114, 0xA023, 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082,
+ 0x6107, 0x8011, 0x611A, 0xA0A9, 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5,
+ 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC,
+ 0x6108, 0x8019, 0x611B, 0xA0B7, 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095,
+ 0x5121, 0x7080, 0x6115, 0xA046, 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038,
+ 0x6001, 0x7123, 0x6118, 0xA07E, 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9,
+ 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B,
+ 0x610C, 0x901F, 0x611E, 0xA0EC, 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075,
+ 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051,
+ 0x6002, 0x800E, 0x6119, 0xA09D, 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4,
+ 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F,
+ 0x6109, 0x8120, 0x611C, 0xA0D3, 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE,
+ 0x5121, 0x7103, 0x6116, 0xA064, 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028,
+ 0x6000, 0x7105, 0x6117, 0xA06A, 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5,
+ 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D,
+ 0x610A, 0x9014, 0x611D, 0xA0D9, 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C,
+ 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078,
+ 0x6107, 0x800F, 0x611A, 0xA0A3, 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA,
+ 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE,
+ 0x6108, 0x8020, 0x611B, 0xA0BD, 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B,
+ 0x5121, 0x70FF, 0x6115, 0xA04E, 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E,
+ 0x6001, 0x7124, 0x6118, 0xA08A, 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1,
+ 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062,
+ 0x610C, 0x9024, 0x611E, 0xA0F7, 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E,
+ 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048,
+ 0x6002, 0x800C, 0x6119, 0xA097, 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD,
+ 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD,
+ 0x6109, 0x80F0, 0x611C, 0xA0CB, 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7,
+ 0x5121, 0x7102, 0x6116, 0xA05D, 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033,
+ 0x6000, 0x7106, 0x6117, 0xA077, 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2,
+ 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054,
+ 0x610A, 0x901C, 0x611D, 0xA0E6, 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E,
+ 0x5111, 0x700A, 0x6114, 0xA034, 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090,
+ 0x6107, 0x8013, 0x611A, 0xA0B0, 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104,
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B4, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092,
+ 0x5121, 0x7080, 0x6115, 0xA03B, 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07B, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057,
+ 0x610C, 0x901D, 0x611E, 0xA0E9, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA09A, 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B,
+ 0x6109, 0x80FE, 0x611C, 0xA0CF, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA,
+ 0x5121, 0x7103, 0x6116, 0xA061, 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06D, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047,
+ 0x610A, 0x9015, 0x611D, 0xA0DC, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A6, 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0C1, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E,
+ 0x5121, 0x70FF, 0x6115, 0xA053, 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08D, 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065,
+ 0x610C, 0x9025, 0x611E, 0xA0FB, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA094, 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C8, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4,
+ 0x5121, 0x7102, 0x6116, 0xA05A, 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA074, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F,
+ 0x610A, 0x901A, 0x611D, 0xA0E3, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B,
+ 0x5111, 0x700A, 0x6114, 0xA02E, 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AD, 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0BA, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098,
+ 0x5121, 0x7080, 0x6115, 0xA04B, 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA086, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E,
+ 0x610C, 0x9021, 0x611E, 0xA0F3, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA0A0, 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036,
+ 0x6109, 0x8120, 0x611C, 0xA0D6, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1,
+ 0x5121, 0x7103, 0x6116, 0xA067, 0x610C, 0x9026, 0x611E, 0xD0AB, 0x510B, 0x611F, 0x610D, 0x9027,
+ 0x6000, 0x7105, 0x6117, 0xA068, 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B3,
+ 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA091, 0x5121, 0x7080, 0x6115, 0xA03A,
+ 0x610A, 0x9012, 0x611D, 0xA0D7, 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07A,
+ 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C4, 0x510F, 0x7005, 0x6112, 0x9070,
+ 0x6107, 0x800F, 0x611A, 0xA0A1, 0x5121, 0x7102, 0x6116, 0xA056, 0x610C, 0x901D, 0x611E, 0xA0E8,
+ 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA071, 0x5111, 0x7008, 0x6113, 0x90E0,
+ 0x6108, 0x8020, 0x611B, 0xA0BB, 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA099,
+ 0x5121, 0x70FF, 0x6115, 0xA04C, 0x610A, 0x9017, 0x611D, 0xA0DF, 0x510B, 0x6122, 0x610E, 0x903C,
+ 0x6001, 0x7124, 0x6118, 0xA087, 0x5111, 0x700A, 0x6114, 0xA023, 0x6109, 0x80FE, 0x611C, 0xA0CE,
+ 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0A9, 0x5121, 0x7103, 0x6116, 0xA05F,
+ 0x610C, 0x9022, 0x611E, 0xA0F5, 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06C,
+ 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B7, 0x510F, 0x7003, 0x6110, 0x9044,
+ 0x6002, 0x800C, 0x6119, 0xA095, 0x5121, 0x7080, 0x6115, 0xA046, 0x610A, 0x9015, 0x611D, 0xA0DB,
+ 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA07E, 0x5111, 0x7009, 0x6114, 0x90FC,
+ 0x6109, 0x80F0, 0x611C, 0xA0C9, 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A5,
+ 0x5121, 0x7102, 0x6116, 0xA05B, 0x610C, 0x901F, 0x611E, 0xA0EC, 0x510B, 0x611F, 0x610D, 0x9031,
+ 0x6000, 0x7106, 0x6117, 0xA075, 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0BF,
+ 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09D, 0x5121, 0x70FF, 0x6115, 0xA052,
+ 0x610A, 0x901B, 0x611D, 0xA0E4, 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08C,
+ 0x5111, 0x700A, 0x6114, 0xA02F, 0x6109, 0x8120, 0x611C, 0xA0D3, 0x510F, 0x7006, 0x6112, 0x9088,
+ 0x6107, 0x8013, 0x611A, 0xA0AE, 0x5121, 0x7103, 0x6116, 0xA064, 0x610C, 0x9025, 0x611E, 0xA0FA,
+ 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06A, 0x5111, 0x7007, 0x6113, 0x90C6,
+ 0x6108, 0x8018, 0x611B, 0xA0B5, 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA093,
+ 0x5121, 0x7080, 0x6115, 0xA03D, 0x610A, 0x9014, 0x611D, 0xA0D9, 0x510B, 0x6122, 0x610E, 0x9037,
+ 0x6001, 0x7123, 0x6118, 0xA07C, 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C7,
+ 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A3, 0x5121, 0x7102, 0x6116, 0xA058,
+ 0x610C, 0x901E, 0x611E, 0xA0EA, 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA073,
+ 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BD, 0x510F, 0x7004, 0x6110, 0x9050,
+ 0x6002, 0x800D, 0x6119, 0xA09B, 0x5121, 0x70FF, 0x6115, 0xA04E, 0x610A, 0x901A, 0x611D, 0xA0E2,
+ 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08A, 0x5111, 0x700A, 0x6114, 0xA02D,
+ 0x6109, 0x80FE, 0x611C, 0xA0D1, 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AC,
+ 0x5121, 0x7103, 0x6116, 0xA062, 0x610C, 0x9024, 0x611E, 0xA0F7, 0x510B, 0x611F, 0x610D, 0x902A,
+ 0x6000, 0x7105, 0x6117, 0xA06E, 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0B9,
+ 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA097, 0x5121, 0x7080, 0x6115, 0xA04A,
+ 0x610A, 0x9016, 0x611D, 0xA0DD, 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA085,
+ 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CB, 0x510F, 0x7005, 0x6112, 0x9081,
+ 0x6107, 0x8010, 0x611A, 0xA0A7, 0x5121, 0x7102, 0x6116, 0xA05D, 0x610C, 0x9021, 0x611E, 0xA0EF,
+ 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA077, 0x5111, 0x7008, 0x6113, 0x90F2,
+ 0x6108, 0x8040, 0x611B, 0xA0C2, 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA09F,
+ 0x5121, 0x70FF, 0x6115, 0xA054, 0x610A, 0x901C, 0x611D, 0xA0E6, 0x510B, 0x6122, 0x610E, 0x9041,
+ 0x6001, 0x7124, 0x6118, 0xA08E, 0x5111, 0x700A, 0x6114, 0xA034, 0x6109, 0x8120, 0x611C, 0xA0D5,
+ 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B0, 0x5121, 0x7103, 0x6116, 0xA066,
+ 0x610C, 0x9026, 0x611E, 0xA104, 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA069,
+ 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B4, 0x510F, 0x7003, 0x6110, 0x9042,
+ 0x6002, 0x800B, 0x6119, 0xA092, 0x5121, 0x7080, 0x6115, 0xA03B, 0x610A, 0x9012, 0x611D, 0xA0D8,
+ 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07B, 0x5111, 0x7009, 0x6114, 0x90F4,
+ 0x6109, 0x8060, 0x611C, 0xA0C5, 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A2,
+ 0x5121, 0x7102, 0x6116, 0xA057, 0x610C, 0x901D, 0x611E, 0xA0E9, 0x510B, 0x611F, 0x610D, 0x902C,
+ 0x6000, 0x7106, 0x6117, 0xA072, 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BC,
+ 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA09A, 0x5121, 0x70FF, 0x6115, 0xA04D,
+ 0x610A, 0x9017, 0x611D, 0xA0E1, 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA089,
+ 0x5111, 0x700A, 0x6114, 0xA02B, 0x6109, 0x80FE, 0x611C, 0xA0CF, 0x510F, 0x7006, 0x6112, 0x9082,
+ 0x6107, 0x8011, 0x611A, 0xA0AA, 0x5121, 0x7103, 0x6116, 0xA061, 0x610C, 0x9022, 0x611E, 0xA0F6,
+ 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06D, 0x5111, 0x7007, 0x6113, 0x90CC,
+ 0x6108, 0x8019, 0x611B, 0xA0B8, 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA096,
+ 0x5121, 0x7080, 0x6115, 0xA047, 0x610A, 0x9015, 0x611D, 0xA0DC, 0x510B, 0x6122, 0x610E, 0x9038,
+ 0x6001, 0x7123, 0x6118, 0xA083, 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0CA,
+ 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A6, 0x5121, 0x7102, 0x6116, 0xA05C,
+ 0x610C, 0x901F, 0x611E, 0xA0ED, 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA076,
+ 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0C1, 0x510F, 0x7004, 0x6110, 0x9051,
+ 0x6002, 0x800E, 0x6119, 0xA09E, 0x5121, 0x70FF, 0x6115, 0xA053, 0x610A, 0x901B, 0x611D, 0xA0E5,
+ 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08D, 0x5111, 0x700A, 0x6114, 0xA032,
+ 0x6109, 0x8120, 0x611C, 0xA0D4, 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AF,
+ 0x5121, 0x7103, 0x6116, 0xA065, 0x610C, 0x9025, 0x611E, 0xA0FB, 0x510B, 0x611F, 0x610D, 0x9028,
+ 0x6000, 0x7105, 0x6117, 0xA06B, 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B6,
+ 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA094, 0x5121, 0x7080, 0x6115, 0xA045,
+ 0x610A, 0x9014, 0x611D, 0xA0DA, 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07D,
+ 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C8, 0x510F, 0x7005, 0x6112, 0x9078,
+ 0x6107, 0x800F, 0x611A, 0xA0A4, 0x5121, 0x7102, 0x6116, 0xA05A, 0x610C, 0x901E, 0x611E, 0xA0EB,
+ 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA074, 0x5111, 0x7008, 0x6113, 0x90EE,
+ 0x6108, 0x8020, 0x611B, 0xA0BE, 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09C,
+ 0x5121, 0x70FF, 0x6115, 0xA04F, 0x610A, 0x901A, 0x611D, 0xA0E3, 0x510B, 0x6122, 0x610E, 0x903E,
+ 0x6001, 0x7124, 0x6118, 0xA08B, 0x5111, 0x700A, 0x6114, 0xA02E, 0x6109, 0x80FE, 0x611C, 0xA0D2,
+ 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AD, 0x5121, 0x7103, 0x6116, 0xA063,
+ 0x610C, 0x9024, 0x611E, 0xA0F9, 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06F,
+ 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0BA, 0x510F, 0x7003, 0x6110, 0x9048,
+ 0x6002, 0x800C, 0x6119, 0xA098, 0x5121, 0x7080, 0x6115, 0xA04B, 0x610A, 0x9016, 0x611D, 0xA0DE,
+ 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA086, 0x5111, 0x7009, 0x6114, 0x90FD,
+ 0x6109, 0x80F0, 0x611C, 0xA0CD, 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A8,
+ 0x5121, 0x7102, 0x6116, 0xA05E, 0x610C, 0x9021, 0x611E, 0xA0F3, 0x510B, 0x611F, 0x610D, 0x9033,
+ 0x6000, 0x7106, 0x6117, 0xA079, 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C3,
+ 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA0A0, 0x5121, 0x70FF, 0x6115, 0xA055,
+ 0x610A, 0x901C, 0x611D, 0xA0E7, 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08F,
+ 0x5111, 0x700A, 0x6114, 0xA036, 0x6109, 0x8120, 0x611C, 0xA0D6, 0x510F, 0x7006, 0x6112, 0x9090,
+ 0x6107, 0x8013, 0x611A, 0xA0B1, 0x5121, 0x7103, 0x6116, 0xA067, 0x610C, 0x9026, 0x611E, 0xB0B2,
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA091,
+ 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C4,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1, 0x5121, 0x7102, 0x6116, 0xA056,
+ 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA071,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C, 0x610A, 0x9017, 0x611D, 0xA0DF,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087, 0x5111, 0x700A, 0x6114, 0xA023,
+ 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0A9,
+ 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B7,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095, 0x5121, 0x7080, 0x6115, 0xA046,
+ 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA07E,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B, 0x610C, 0x901F, 0x611E, 0xA0EC,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09D,
+ 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F, 0x6109, 0x8120, 0x611C, 0xA0D3,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE, 0x5121, 0x7103, 0x6116, 0xA064,
+ 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06A,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D, 0x610A, 0x9014, 0x611D, 0xA0D9,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A3,
+ 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BD,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B, 0x5121, 0x70FF, 0x6115, 0xA04E,
+ 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08A,
+ 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062, 0x610C, 0x9024, 0x611E, 0xA0F7,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA097,
+ 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CB,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7, 0x5121, 0x7102, 0x6116, 0xA05D,
+ 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA077,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054, 0x610A, 0x901C, 0x611D, 0xA0E6,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E, 0x5111, 0x700A, 0x6114, 0xA034,
+ 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B0,
+ 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104, 0x510B, 0x611F, 0x610D, 0x9027,
+ 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B4,
+ 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092, 0x5121, 0x7080, 0x6115, 0xA03B,
+ 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07B,
+ 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5, 0x510F, 0x7005, 0x6112, 0x9070,
+ 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057, 0x610C, 0x901D, 0x611E, 0xA0E9,
+ 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072, 0x5111, 0x7008, 0x6113, 0x90E0,
+ 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA09A,
+ 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1, 0x510B, 0x6122, 0x610E, 0x903C,
+ 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B, 0x6109, 0x80FE, 0x611C, 0xA0CF,
+ 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA, 0x5121, 0x7103, 0x6116, 0xA061,
+ 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06D,
+ 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8, 0x510F, 0x7003, 0x6110, 0x9044,
+ 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047, 0x610A, 0x9015, 0x611D, 0xA0DC,
+ 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083, 0x5111, 0x7009, 0x6114, 0x90FC,
+ 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A6,
+ 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED, 0x510B, 0x611F, 0x610D, 0x9031,
+ 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0C1,
+ 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E, 0x5121, 0x70FF, 0x6115, 0xA053,
+ 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08D,
+ 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4, 0x510F, 0x7006, 0x6112, 0x9088,
+ 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065, 0x610C, 0x9025, 0x611E, 0xA0FB,
+ 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B, 0x5111, 0x7007, 0x6113, 0x90C6,
+ 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA094,
+ 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA, 0x510B, 0x6122, 0x610E, 0x9037,
+ 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C8,
+ 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4, 0x5121, 0x7102, 0x6116, 0xA05A,
+ 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA074,
+ 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE, 0x510F, 0x7004, 0x6110, 0x9050,
+ 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F, 0x610A, 0x901A, 0x611D, 0xA0E3,
+ 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B, 0x5111, 0x700A, 0x6114, 0xA02E,
+ 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AD,
+ 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9, 0x510B, 0x611F, 0x610D, 0x902A,
+ 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0BA,
+ 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098, 0x5121, 0x7080, 0x6115, 0xA04B,
+ 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA086,
+ 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD, 0x510F, 0x7005, 0x6112, 0x9081,
+ 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E, 0x610C, 0x9021, 0x611E, 0xA0F3,
+ 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079, 0x5111, 0x7008, 0x6113, 0x90F2,
+ 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA0A0,
+ 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7, 0x510B, 0x6122, 0x610E, 0x9041,
+ 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036, 0x6109, 0x8120, 0x611C, 0xA0D6,
+ 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1, 0x5121, 0x7103, 0x6116, 0xA067,
+ 0x610C, 0x9026, 0x611E, 0xD101, 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068,
+ 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042,
+ 0x6002, 0x800B, 0x6119, 0xA091, 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7,
+ 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4,
+ 0x6109, 0x8060, 0x611C, 0xA0C4, 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1,
+ 0x5121, 0x7102, 0x6116, 0xA056, 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C,
+ 0x6000, 0x7106, 0x6117, 0xA071, 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB,
+ 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C,
+ 0x610A, 0x9017, 0x611D, 0xA0DF, 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087,
+ 0x5111, 0x700A, 0x6114, 0xA023, 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082,
+ 0x6107, 0x8011, 0x611A, 0xA0A9, 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5,
+ 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC,
+ 0x6108, 0x8019, 0x611B, 0xA0B7, 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095,
+ 0x5121, 0x7080, 0x6115, 0xA046, 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038,
+ 0x6001, 0x7123, 0x6118, 0xA07E, 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9,
+ 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B,
+ 0x610C, 0x901F, 0x611E, 0xA0EC, 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075,
+ 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051,
+ 0x6002, 0x800E, 0x6119, 0xA09D, 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4,
+ 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F,
+ 0x6109, 0x8120, 0x611C, 0xA0D3, 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE,
+ 0x5121, 0x7103, 0x6116, 0xA064, 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028,
+ 0x6000, 0x7105, 0x6117, 0xA06A, 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5,
+ 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D,
+ 0x610A, 0x9014, 0x611D, 0xA0D9, 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C,
+ 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078,
+ 0x6107, 0x800F, 0x611A, 0xA0A3, 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA,
+ 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE,
+ 0x6108, 0x8020, 0x611B, 0xA0BD, 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B,
+ 0x5121, 0x70FF, 0x6115, 0xA04E, 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E,
+ 0x6001, 0x7124, 0x6118, 0xA08A, 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1,
+ 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062,
+ 0x610C, 0x9024, 0x611E, 0xA0F7, 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E,
+ 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048,
+ 0x6002, 0x800C, 0x6119, 0xA097, 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD,
+ 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD,
+ 0x6109, 0x80F0, 0x611C, 0xA0CB, 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7,
+ 0x5121, 0x7102, 0x6116, 0xA05D, 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033,
+ 0x6000, 0x7106, 0x6117, 0xA077, 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2,
+ 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054,
+ 0x610A, 0x901C, 0x611D, 0xA0E6, 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E,
+ 0x5111, 0x700A, 0x6114, 0xA034, 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090,
+ 0x6107, 0x8013, 0x611A, 0xA0B0, 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104,
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B4, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092,
+ 0x5121, 0x7080, 0x6115, 0xA03B, 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07B, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057,
+ 0x610C, 0x901D, 0x611E, 0xA0E9, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA09A, 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B,
+ 0x6109, 0x80FE, 0x611C, 0xA0CF, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA,
+ 0x5121, 0x7103, 0x6116, 0xA061, 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06D, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047,
+ 0x610A, 0x9015, 0x611D, 0xA0DC, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A6, 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0C1, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E,
+ 0x5121, 0x70FF, 0x6115, 0xA053, 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08D, 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065,
+ 0x610C, 0x9025, 0x611E, 0xA0FB, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA094, 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C8, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4,
+ 0x5121, 0x7102, 0x6116, 0xA05A, 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA074, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F,
+ 0x610A, 0x901A, 0x611D, 0xA0E3, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B,
+ 0x5111, 0x700A, 0x6114, 0xA02E, 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AD, 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0BA, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098,
+ 0x5121, 0x7080, 0x6115, 0xA04B, 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA086, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E,
+ 0x610C, 0x9021, 0x611E, 0xA0F3, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA0A0, 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036,
+ 0x6109, 0x8120, 0x611C, 0xA0D6, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1,
+ 0x5121, 0x7103, 0x6116, 0xA067, 0x610C, 0x9026, 0x611E, 0xB0B2, 0x510B, 0x611F, 0x610D, 0x9027,
+ 0x6000, 0x7105, 0x6117, 0xA068, 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B3,
+ 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA091, 0x5121, 0x7080, 0x6115, 0xA03A,
+ 0x610A, 0x9012, 0x611D, 0xA0D7, 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07A,
+ 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C4, 0x510F, 0x7005, 0x6112, 0x9070,
+ 0x6107, 0x800F, 0x611A, 0xA0A1, 0x5121, 0x7102, 0x6116, 0xA056, 0x610C, 0x901D, 0x611E, 0xA0E8,
+ 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA071, 0x5111, 0x7008, 0x6113, 0x90E0,
+ 0x6108, 0x8020, 0x611B, 0xA0BB, 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA099,
+ 0x5121, 0x70FF, 0x6115, 0xA04C, 0x610A, 0x9017, 0x611D, 0xA0DF, 0x510B, 0x6122, 0x610E, 0x903C,
+ 0x6001, 0x7124, 0x6118, 0xA087, 0x5111, 0x700A, 0x6114, 0xA023, 0x6109, 0x80FE, 0x611C, 0xA0CE,
+ 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0A9, 0x5121, 0x7103, 0x6116, 0xA05F,
+ 0x610C, 0x9022, 0x611E, 0xA0F5, 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06C,
+ 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B7, 0x510F, 0x7003, 0x6110, 0x9044,
+ 0x6002, 0x800C, 0x6119, 0xA095, 0x5121, 0x7080, 0x6115, 0xA046, 0x610A, 0x9015, 0x611D, 0xA0DB,
+ 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA07E, 0x5111, 0x7009, 0x6114, 0x90FC,
+ 0x6109, 0x80F0, 0x611C, 0xA0C9, 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A5,
+ 0x5121, 0x7102, 0x6116, 0xA05B, 0x610C, 0x901F, 0x611E, 0xA0EC, 0x510B, 0x611F, 0x610D, 0x9031,
+ 0x6000, 0x7106, 0x6117, 0xA075, 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0BF,
+ 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09D, 0x5121, 0x70FF, 0x6115, 0xA052,
+ 0x610A, 0x901B, 0x611D, 0xA0E4, 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08C,
+ 0x5111, 0x700A, 0x6114, 0xA02F, 0x6109, 0x8120, 0x611C, 0xA0D3, 0x510F, 0x7006, 0x6112, 0x9088,
+ 0x6107, 0x8013, 0x611A, 0xA0AE, 0x5121, 0x7103, 0x6116, 0xA064, 0x610C, 0x9025, 0x611E, 0xA0FA,
+ 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06A, 0x5111, 0x7007, 0x6113, 0x90C6,
+ 0x6108, 0x8018, 0x611B, 0xA0B5, 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA093,
+ 0x5121, 0x7080, 0x6115, 0xA03D, 0x610A, 0x9014, 0x611D, 0xA0D9, 0x510B, 0x6122, 0x610E, 0x9037,
+ 0x6001, 0x7123, 0x6118, 0xA07C, 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C7,
+ 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A3, 0x5121, 0x7102, 0x6116, 0xA058,
+ 0x610C, 0x901E, 0x611E, 0xA0EA, 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA073,
+ 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BD, 0x510F, 0x7004, 0x6110, 0x9050,
+ 0x6002, 0x800D, 0x6119, 0xA09B, 0x5121, 0x70FF, 0x6115, 0xA04E, 0x610A, 0x901A, 0x611D, 0xA0E2,
+ 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08A, 0x5111, 0x700A, 0x6114, 0xA02D,
+ 0x6109, 0x80FE, 0x611C, 0xA0D1, 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AC,
+ 0x5121, 0x7103, 0x6116, 0xA062, 0x610C, 0x9024, 0x611E, 0xA0F7, 0x510B, 0x611F, 0x610D, 0x902A,
+ 0x6000, 0x7105, 0x6117, 0xA06E, 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0B9,
+ 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA097, 0x5121, 0x7080, 0x6115, 0xA04A,
+ 0x610A, 0x9016, 0x611D, 0xA0DD, 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA085,
+ 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CB, 0x510F, 0x7005, 0x6112, 0x9081,
+ 0x6107, 0x8010, 0x611A, 0xA0A7, 0x5121, 0x7102, 0x6116, 0xA05D, 0x610C, 0x9021, 0x611E, 0xA0EF,
+ 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA077, 0x5111, 0x7008, 0x6113, 0x90F2,
+ 0x6108, 0x8040, 0x611B, 0xA0C2, 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA09F,
+ 0x5121, 0x70FF, 0x6115, 0xA054, 0x610A, 0x901C, 0x611D, 0xA0E6, 0x510B, 0x6122, 0x610E, 0x9041,
+ 0x6001, 0x7124, 0x6118, 0xA08E, 0x5111, 0x700A, 0x6114, 0xA034, 0x6109, 0x8120, 0x611C, 0xA0D5,
+ 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B0, 0x5121, 0x7103, 0x6116, 0xA066,
+ 0x610C, 0x9026, 0x611E, 0xA104, 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA069,
+ 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B4, 0x510F, 0x7003, 0x6110, 0x9042,
+ 0x6002, 0x800B, 0x6119, 0xA092, 0x5121, 0x7080, 0x6115, 0xA03B, 0x610A, 0x9012, 0x611D, 0xA0D8,
+ 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07B, 0x5111, 0x7009, 0x6114, 0x90F4,
+ 0x6109, 0x8060, 0x611C, 0xA0C5, 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A2,
+ 0x5121, 0x7102, 0x6116, 0xA057, 0x610C, 0x901D, 0x611E, 0xA0E9, 0x510B, 0x611F, 0x610D, 0x902C,
+ 0x6000, 0x7106, 0x6117, 0xA072, 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BC,
+ 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA09A, 0x5121, 0x70FF, 0x6115, 0xA04D,
+ 0x610A, 0x9017, 0x611D, 0xA0E1, 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA089,
+ 0x5111, 0x700A, 0x6114, 0xA02B, 0x6109, 0x80FE, 0x611C, 0xA0CF, 0x510F, 0x7006, 0x6112, 0x9082,
+ 0x6107, 0x8011, 0x611A, 0xA0AA, 0x5121, 0x7103, 0x6116, 0xA061, 0x610C, 0x9022, 0x611E, 0xA0F6,
+ 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06D, 0x5111, 0x7007, 0x6113, 0x90CC,
+ 0x6108, 0x8019, 0x611B, 0xA0B8, 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA096,
+ 0x5121, 0x7080, 0x6115, 0xA047, 0x610A, 0x9015, 0x611D, 0xA0DC, 0x510B, 0x6122, 0x610E, 0x9038,
+ 0x6001, 0x7123, 0x6118, 0xA083, 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0CA,
+ 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A6, 0x5121, 0x7102, 0x6116, 0xA05C,
+ 0x610C, 0x901F, 0x611E, 0xA0ED, 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA076,
+ 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0C1, 0x510F, 0x7004, 0x6110, 0x9051,
+ 0x6002, 0x800E, 0x6119, 0xA09E, 0x5121, 0x70FF, 0x6115, 0xA053, 0x610A, 0x901B, 0x611D, 0xA0E5,
+ 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08D, 0x5111, 0x700A, 0x6114, 0xA032,
+ 0x6109, 0x8120, 0x611C, 0xA0D4, 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AF,
+ 0x5121, 0x7103, 0x6116, 0xA065, 0x610C, 0x9025, 0x611E, 0xA0FB, 0x510B, 0x611F, 0x610D, 0x9028,
+ 0x6000, 0x7105, 0x6117, 0xA06B, 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B6,
+ 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA094, 0x5121, 0x7080, 0x6115, 0xA045,
+ 0x610A, 0x9014, 0x611D, 0xA0DA, 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07D,
+ 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C8, 0x510F, 0x7005, 0x6112, 0x9078,
+ 0x6107, 0x800F, 0x611A, 0xA0A4, 0x5121, 0x7102, 0x6116, 0xA05A, 0x610C, 0x901E, 0x611E, 0xA0EB,
+ 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA074, 0x5111, 0x7008, 0x6113, 0x90EE,
+ 0x6108, 0x8020, 0x611B, 0xA0BE, 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09C,
+ 0x5121, 0x70FF, 0x6115, 0xA04F, 0x610A, 0x901A, 0x611D, 0xA0E3, 0x510B, 0x6122, 0x610E, 0x903E,
+ 0x6001, 0x7124, 0x6118, 0xA08B, 0x5111, 0x700A, 0x6114, 0xA02E, 0x6109, 0x80FE, 0x611C, 0xA0D2,
+ 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AD, 0x5121, 0x7103, 0x6116, 0xA063,
+ 0x610C, 0x9024, 0x611E, 0xA0F9, 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06F,
+ 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0BA, 0x510F, 0x7003, 0x6110, 0x9048,
+ 0x6002, 0x800C, 0x6119, 0xA098, 0x5121, 0x7080, 0x6115, 0xA04B, 0x610A, 0x9016, 0x611D, 0xA0DE,
+ 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA086, 0x5111, 0x7009, 0x6114, 0x90FD,
+ 0x6109, 0x80F0, 0x611C, 0xA0CD, 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A8,
+ 0x5121, 0x7102, 0x6116, 0xA05E, 0x610C, 0x9021, 0x611E, 0xA0F3, 0x510B, 0x611F, 0x610D, 0x9033,
+ 0x6000, 0x7106, 0x6117, 0xA079, 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C3,
+ 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA0A0, 0x5121, 0x70FF, 0x6115, 0xA055,
+ 0x610A, 0x901C, 0x611D, 0xA0E7, 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08F,
+ 0x5111, 0x700A, 0x6114, 0xA036, 0x6109, 0x8120, 0x611C, 0xA0D6, 0x510F, 0x7006, 0x6112, 0x9090,
+ 0x6107, 0x8013, 0x611A, 0xA0B1, 0x5121, 0x7103, 0x6116, 0xA067, 0x610C, 0x9026, 0x611E, 0xD100,
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA091,
+ 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C4,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1, 0x5121, 0x7102, 0x6116, 0xA056,
+ 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA071,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C, 0x610A, 0x9017, 0x611D, 0xA0DF,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087, 0x5111, 0x700A, 0x6114, 0xA023,
+ 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0A9,
+ 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B7,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095, 0x5121, 0x7080, 0x6115, 0xA046,
+ 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA07E,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B, 0x610C, 0x901F, 0x611E, 0xA0EC,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09D,
+ 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F, 0x6109, 0x8120, 0x611C, 0xA0D3,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE, 0x5121, 0x7103, 0x6116, 0xA064,
+ 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06A,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D, 0x610A, 0x9014, 0x611D, 0xA0D9,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A3,
+ 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BD,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B, 0x5121, 0x70FF, 0x6115, 0xA04E,
+ 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08A,
+ 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062, 0x610C, 0x9024, 0x611E, 0xA0F7,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA097,
+ 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CB,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7, 0x5121, 0x7102, 0x6116, 0xA05D,
+ 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA077,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054, 0x610A, 0x901C, 0x611D, 0xA0E6,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E, 0x5111, 0x700A, 0x6114, 0xA034,
+ 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B0,
+ 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104, 0x510B, 0x611F, 0x610D, 0x9027,
+ 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B4,
+ 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092, 0x5121, 0x7080, 0x6115, 0xA03B,
+ 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07B,
+ 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5, 0x510F, 0x7005, 0x6112, 0x9070,
+ 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057, 0x610C, 0x901D, 0x611E, 0xA0E9,
+ 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072, 0x5111, 0x7008, 0x6113, 0x90E0,
+ 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA09A,
+ 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1, 0x510B, 0x6122, 0x610E, 0x903C,
+ 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B, 0x6109, 0x80FE, 0x611C, 0xA0CF,
+ 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA, 0x5121, 0x7103, 0x6116, 0xA061,
+ 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06D,
+ 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8, 0x510F, 0x7003, 0x6110, 0x9044,
+ 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047, 0x610A, 0x9015, 0x611D, 0xA0DC,
+ 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083, 0x5111, 0x7009, 0x6114, 0x90FC,
+ 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A6,
+ 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED, 0x510B, 0x611F, 0x610D, 0x9031,
+ 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0C1,
+ 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E, 0x5121, 0x70FF, 0x6115, 0xA053,
+ 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08D,
+ 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4, 0x510F, 0x7006, 0x6112, 0x9088,
+ 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065, 0x610C, 0x9025, 0x611E, 0xA0FB,
+ 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B, 0x5111, 0x7007, 0x6113, 0x90C6,
+ 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA094,
+ 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA, 0x510B, 0x6122, 0x610E, 0x9037,
+ 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C8,
+ 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4, 0x5121, 0x7102, 0x6116, 0xA05A,
+ 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA074,
+ 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE, 0x510F, 0x7004, 0x6110, 0x9050,
+ 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F, 0x610A, 0x901A, 0x611D, 0xA0E3,
+ 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B, 0x5111, 0x700A, 0x6114, 0xA02E,
+ 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AD,
+ 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9, 0x510B, 0x611F, 0x610D, 0x902A,
+ 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0BA,
+ 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098, 0x5121, 0x7080, 0x6115, 0xA04B,
+ 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA086,
+ 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD, 0x510F, 0x7005, 0x6112, 0x9081,
+ 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E, 0x610C, 0x9021, 0x611E, 0xA0F3,
+ 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079, 0x5111, 0x7008, 0x6113, 0x90F2,
+ 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA0A0,
+ 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7, 0x510B, 0x6122, 0x610E, 0x9041,
+ 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036, 0x6109, 0x8120, 0x611C, 0xA0D6,
+ 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1, 0x5121, 0x7103, 0x6116, 0xA067,
+ 0x610C, 0x9026, 0x611E, 0xB0B2, 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA068,
+ 0x5111, 0x7007, 0x6113, 0x90C0, 0x6108, 0x8018, 0x611B, 0xA0B3, 0x510F, 0x7003, 0x6110, 0x9042,
+ 0x6002, 0x800B, 0x6119, 0xA091, 0x5121, 0x7080, 0x6115, 0xA03A, 0x610A, 0x9012, 0x611D, 0xA0D7,
+ 0x510B, 0x6122, 0x610E, 0x9035, 0x6001, 0x7123, 0x6118, 0xA07A, 0x5111, 0x7009, 0x6114, 0x90F4,
+ 0x6109, 0x8060, 0x611C, 0xA0C4, 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A1,
+ 0x5121, 0x7102, 0x6116, 0xA056, 0x610C, 0x901D, 0x611E, 0xA0E8, 0x510B, 0x611F, 0x610D, 0x902C,
+ 0x6000, 0x7106, 0x6117, 0xA071, 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BB,
+ 0x510F, 0x7004, 0x6110, 0x9049, 0x6002, 0x800D, 0x6119, 0xA099, 0x5121, 0x70FF, 0x6115, 0xA04C,
+ 0x610A, 0x9017, 0x611D, 0xA0DF, 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA087,
+ 0x5111, 0x700A, 0x6114, 0xA023, 0x6109, 0x80FE, 0x611C, 0xA0CE, 0x510F, 0x7006, 0x6112, 0x9082,
+ 0x6107, 0x8011, 0x611A, 0xA0A9, 0x5121, 0x7103, 0x6116, 0xA05F, 0x610C, 0x9022, 0x611E, 0xA0F5,
+ 0x510B, 0x611F, 0x610D, 0x9029, 0x6000, 0x7105, 0x6117, 0xA06C, 0x5111, 0x7007, 0x6113, 0x90CC,
+ 0x6108, 0x8019, 0x611B, 0xA0B7, 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA095,
+ 0x5121, 0x7080, 0x6115, 0xA046, 0x610A, 0x9015, 0x611D, 0xA0DB, 0x510B, 0x6122, 0x610E, 0x9038,
+ 0x6001, 0x7123, 0x6118, 0xA07E, 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0C9,
+ 0x510F, 0x7005, 0x6112, 0x907F, 0x6107, 0x8010, 0x611A, 0xA0A5, 0x5121, 0x7102, 0x6116, 0xA05B,
+ 0x610C, 0x901F, 0x611E, 0xA0EC, 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA075,
+ 0x5111, 0x7008, 0x6113, 0x90F1, 0x6108, 0x8040, 0x611B, 0xA0BF, 0x510F, 0x7004, 0x6110, 0x9051,
+ 0x6002, 0x800E, 0x6119, 0xA09D, 0x5121, 0x70FF, 0x6115, 0xA052, 0x610A, 0x901B, 0x611D, 0xA0E4,
+ 0x510B, 0x6122, 0x610E, 0x903F, 0x6001, 0x7124, 0x6118, 0xA08C, 0x5111, 0x700A, 0x6114, 0xA02F,
+ 0x6109, 0x8120, 0x611C, 0xA0D3, 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AE,
+ 0x5121, 0x7103, 0x6116, 0xA064, 0x610C, 0x9025, 0x611E, 0xA0FA, 0x510B, 0x611F, 0x610D, 0x9028,
+ 0x6000, 0x7105, 0x6117, 0xA06A, 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B5,
+ 0x510F, 0x7003, 0x6110, 0x9043, 0x6002, 0x800B, 0x6119, 0xA093, 0x5121, 0x7080, 0x6115, 0xA03D,
+ 0x610A, 0x9014, 0x611D, 0xA0D9, 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07C,
+ 0x5111, 0x7009, 0x6114, 0x90F8, 0x6109, 0x8060, 0x611C, 0xA0C7, 0x510F, 0x7005, 0x6112, 0x9078,
+ 0x6107, 0x800F, 0x611A, 0xA0A3, 0x5121, 0x7102, 0x6116, 0xA058, 0x610C, 0x901E, 0x611E, 0xA0EA,
+ 0x510B, 0x611F, 0x610D, 0x9030, 0x6000, 0x7106, 0x6117, 0xA073, 0x5111, 0x7008, 0x6113, 0x90EE,
+ 0x6108, 0x8020, 0x611B, 0xA0BD, 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09B,
+ 0x5121, 0x70FF, 0x6115, 0xA04E, 0x610A, 0x901A, 0x611D, 0xA0E2, 0x510B, 0x6122, 0x610E, 0x903E,
+ 0x6001, 0x7124, 0x6118, 0xA08A, 0x5111, 0x700A, 0x6114, 0xA02D, 0x6109, 0x80FE, 0x611C, 0xA0D1,
+ 0x510F, 0x7006, 0x6112, 0x9084, 0x6107, 0x8011, 0x611A, 0xA0AC, 0x5121, 0x7103, 0x6116, 0xA062,
+ 0x610C, 0x9024, 0x611E, 0xA0F7, 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06E,
+ 0x5111, 0x7007, 0x6113, 0x90D0, 0x6108, 0x8019, 0x611B, 0xA0B9, 0x510F, 0x7003, 0x6110, 0x9048,
+ 0x6002, 0x800C, 0x6119, 0xA097, 0x5121, 0x7080, 0x6115, 0xA04A, 0x610A, 0x9016, 0x611D, 0xA0DD,
+ 0x510B, 0x6122, 0x610E, 0x9039, 0x6001, 0x7123, 0x6118, 0xA085, 0x5111, 0x7009, 0x6114, 0x90FD,
+ 0x6109, 0x80F0, 0x611C, 0xA0CB, 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A7,
+ 0x5121, 0x7102, 0x6116, 0xA05D, 0x610C, 0x9021, 0x611E, 0xA0EF, 0x510B, 0x611F, 0x610D, 0x9033,
+ 0x6000, 0x7106, 0x6117, 0xA077, 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C2,
+ 0x510F, 0x7004, 0x6110, 0x9059, 0x6002, 0x800E, 0x6119, 0xA09F, 0x5121, 0x70FF, 0x6115, 0xA054,
+ 0x610A, 0x901C, 0x611D, 0xA0E6, 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08E,
+ 0x5111, 0x700A, 0x6114, 0xA034, 0x6109, 0x8120, 0x611C, 0xA0D5, 0x510F, 0x7006, 0x6112, 0x9090,
+ 0x6107, 0x8013, 0x611A, 0xA0B0, 0x5121, 0x7103, 0x6116, 0xA066, 0x610C, 0x9026, 0x611E, 0xA104,
+ 0x510B, 0x611F, 0x610D, 0x9027, 0x6000, 0x7105, 0x6117, 0xA069, 0x5111, 0x7007, 0x6113, 0x90C0,
+ 0x6108, 0x8018, 0x611B, 0xA0B4, 0x510F, 0x7003, 0x6110, 0x9042, 0x6002, 0x800B, 0x6119, 0xA092,
+ 0x5121, 0x7080, 0x6115, 0xA03B, 0x610A, 0x9012, 0x611D, 0xA0D8, 0x510B, 0x6122, 0x610E, 0x9035,
+ 0x6001, 0x7123, 0x6118, 0xA07B, 0x5111, 0x7009, 0x6114, 0x90F4, 0x6109, 0x8060, 0x611C, 0xA0C5,
+ 0x510F, 0x7005, 0x6112, 0x9070, 0x6107, 0x800F, 0x611A, 0xA0A2, 0x5121, 0x7102, 0x6116, 0xA057,
+ 0x610C, 0x901D, 0x611E, 0xA0E9, 0x510B, 0x611F, 0x610D, 0x902C, 0x6000, 0x7106, 0x6117, 0xA072,
+ 0x5111, 0x7008, 0x6113, 0x90E0, 0x6108, 0x8020, 0x611B, 0xA0BC, 0x510F, 0x7004, 0x6110, 0x9049,
+ 0x6002, 0x800D, 0x6119, 0xA09A, 0x5121, 0x70FF, 0x6115, 0xA04D, 0x610A, 0x9017, 0x611D, 0xA0E1,
+ 0x510B, 0x6122, 0x610E, 0x903C, 0x6001, 0x7124, 0x6118, 0xA089, 0x5111, 0x700A, 0x6114, 0xA02B,
+ 0x6109, 0x80FE, 0x611C, 0xA0CF, 0x510F, 0x7006, 0x6112, 0x9082, 0x6107, 0x8011, 0x611A, 0xA0AA,
+ 0x5121, 0x7103, 0x6116, 0xA061, 0x610C, 0x9022, 0x611E, 0xA0F6, 0x510B, 0x611F, 0x610D, 0x9029,
+ 0x6000, 0x7105, 0x6117, 0xA06D, 0x5111, 0x7007, 0x6113, 0x90CC, 0x6108, 0x8019, 0x611B, 0xA0B8,
+ 0x510F, 0x7003, 0x6110, 0x9044, 0x6002, 0x800C, 0x6119, 0xA096, 0x5121, 0x7080, 0x6115, 0xA047,
+ 0x610A, 0x9015, 0x611D, 0xA0DC, 0x510B, 0x6122, 0x610E, 0x9038, 0x6001, 0x7123, 0x6118, 0xA083,
+ 0x5111, 0x7009, 0x6114, 0x90FC, 0x6109, 0x80F0, 0x611C, 0xA0CA, 0x510F, 0x7005, 0x6112, 0x907F,
+ 0x6107, 0x8010, 0x611A, 0xA0A6, 0x5121, 0x7102, 0x6116, 0xA05C, 0x610C, 0x901F, 0x611E, 0xA0ED,
+ 0x510B, 0x611F, 0x610D, 0x9031, 0x6000, 0x7106, 0x6117, 0xA076, 0x5111, 0x7008, 0x6113, 0x90F1,
+ 0x6108, 0x8040, 0x611B, 0xA0C1, 0x510F, 0x7004, 0x6110, 0x9051, 0x6002, 0x800E, 0x6119, 0xA09E,
+ 0x5121, 0x70FF, 0x6115, 0xA053, 0x610A, 0x901B, 0x611D, 0xA0E5, 0x510B, 0x6122, 0x610E, 0x903F,
+ 0x6001, 0x7124, 0x6118, 0xA08D, 0x5111, 0x700A, 0x6114, 0xA032, 0x6109, 0x8120, 0x611C, 0xA0D4,
+ 0x510F, 0x7006, 0x6112, 0x9088, 0x6107, 0x8013, 0x611A, 0xA0AF, 0x5121, 0x7103, 0x6116, 0xA065,
+ 0x610C, 0x9025, 0x611E, 0xA0FB, 0x510B, 0x611F, 0x610D, 0x9028, 0x6000, 0x7105, 0x6117, 0xA06B,
+ 0x5111, 0x7007, 0x6113, 0x90C6, 0x6108, 0x8018, 0x611B, 0xA0B6, 0x510F, 0x7003, 0x6110, 0x9043,
+ 0x6002, 0x800B, 0x6119, 0xA094, 0x5121, 0x7080, 0x6115, 0xA045, 0x610A, 0x9014, 0x611D, 0xA0DA,
+ 0x510B, 0x6122, 0x610E, 0x9037, 0x6001, 0x7123, 0x6118, 0xA07D, 0x5111, 0x7009, 0x6114, 0x90F8,
+ 0x6109, 0x8060, 0x611C, 0xA0C8, 0x510F, 0x7005, 0x6112, 0x9078, 0x6107, 0x800F, 0x611A, 0xA0A4,
+ 0x5121, 0x7102, 0x6116, 0xA05A, 0x610C, 0x901E, 0x611E, 0xA0EB, 0x510B, 0x611F, 0x610D, 0x9030,
+ 0x6000, 0x7106, 0x6117, 0xA074, 0x5111, 0x7008, 0x6113, 0x90EE, 0x6108, 0x8020, 0x611B, 0xA0BE,
+ 0x510F, 0x7004, 0x6110, 0x9050, 0x6002, 0x800D, 0x6119, 0xA09C, 0x5121, 0x70FF, 0x6115, 0xA04F,
+ 0x610A, 0x901A, 0x611D, 0xA0E3, 0x510B, 0x6122, 0x610E, 0x903E, 0x6001, 0x7124, 0x6118, 0xA08B,
+ 0x5111, 0x700A, 0x6114, 0xA02E, 0x6109, 0x80FE, 0x611C, 0xA0D2, 0x510F, 0x7006, 0x6112, 0x9084,
+ 0x6107, 0x8011, 0x611A, 0xA0AD, 0x5121, 0x7103, 0x6116, 0xA063, 0x610C, 0x9024, 0x611E, 0xA0F9,
+ 0x510B, 0x611F, 0x610D, 0x902A, 0x6000, 0x7105, 0x6117, 0xA06F, 0x5111, 0x7007, 0x6113, 0x90D0,
+ 0x6108, 0x8019, 0x611B, 0xA0BA, 0x510F, 0x7003, 0x6110, 0x9048, 0x6002, 0x800C, 0x6119, 0xA098,
+ 0x5121, 0x7080, 0x6115, 0xA04B, 0x610A, 0x9016, 0x611D, 0xA0DE, 0x510B, 0x6122, 0x610E, 0x9039,
+ 0x6001, 0x7123, 0x6118, 0xA086, 0x5111, 0x7009, 0x6114, 0x90FD, 0x6109, 0x80F0, 0x611C, 0xA0CD,
+ 0x510F, 0x7005, 0x6112, 0x9081, 0x6107, 0x8010, 0x611A, 0xA0A8, 0x5121, 0x7102, 0x6116, 0xA05E,
+ 0x610C, 0x9021, 0x611E, 0xA0F3, 0x510B, 0x611F, 0x610D, 0x9033, 0x6000, 0x7106, 0x6117, 0xA079,
+ 0x5111, 0x7008, 0x6113, 0x90F2, 0x6108, 0x8040, 0x611B, 0xA0C3, 0x510F, 0x7004, 0x6110, 0x9059,
+ 0x6002, 0x800E, 0x6119, 0xA0A0, 0x5121, 0x70FF, 0x6115, 0xA055, 0x610A, 0x901C, 0x611D, 0xA0E7,
+ 0x510B, 0x6122, 0x610E, 0x9041, 0x6001, 0x7124, 0x6118, 0xA08F, 0x5111, 0x700A, 0x6114, 0xA036,
+ 0x6109, 0x8120, 0x611C, 0xA0D6, 0x510F, 0x7006, 0x6112, 0x9090, 0x6107, 0x8013, 0x611A, 0xA0B1,
+ 0x5121, 0x7103, 0x6116, 0xA067, 0x610C, 0x9026, 0x611E, 0xD125
+};
+
+static const UINT16 HuffTableLOM[512] = {
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x700D, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600B,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x8012, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x7010,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C, 0x2001, 0x4003, 0x3002, 0x5009,
+ 0x2001, 0x4006, 0x3004, 0x9018, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A,
+ 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x700E, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x600B, 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x9013,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x800F, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x901C, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x700D,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600B, 0x2001, 0x4003, 0x3002, 0x5009,
+ 0x2001, 0x4006, 0x3004, 0x8015, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A,
+ 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x7010, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x600C, 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x901A,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x700E, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600B,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x9016, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x8011,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C, 0x2001, 0x4003, 0x3002, 0x5009,
+ 0x2001, 0x4006, 0x3004, 0x901E, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A,
+ 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x700D, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x600B, 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x8012,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x7010, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x9019, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x700E,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600B, 0x2001, 0x4003, 0x3002, 0x5009,
+ 0x2001, 0x4006, 0x3004, 0x9014, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A,
+ 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x800F, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x600C, 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x901D,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x700D, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600B,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x8015, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x7010,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C, 0x2001, 0x4003, 0x3002, 0x5009,
+ 0x2001, 0x4006, 0x3004, 0x901B, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A,
+ 0x2001, 0x4003, 0x3002, 0x5007, 0x2001, 0x4006, 0x3004, 0x700E, 0x2001, 0x4000, 0x3002, 0x4008,
+ 0x2001, 0x4005, 0x3004, 0x600B, 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x9017,
+ 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x500A, 0x2001, 0x4003, 0x3002, 0x5007,
+ 0x2001, 0x4006, 0x3004, 0x8011, 0x2001, 0x4000, 0x3002, 0x4008, 0x2001, 0x4005, 0x3004, 0x600C,
+ 0x2001, 0x4003, 0x3002, 0x5009, 0x2001, 0x4006, 0x3004, 0x901F
+};
+
+static const BYTE HuffTableMask[39] = {
+ 0x11, /* 0 */
+ 0x9E, /* 1 */
+ 0xA1, /* 2 */
+ 0x00, /* 3 */
+ 0x00, /* 4 */
+ 0x01, /* 5 */
+ 0x00, /* 6 */
+ 0x03, /* 7 */
+ 0x00, /* 8 */
+ 0x07, /* 9 */
+ 0x00, /* 10 */
+ 0x0F, /* 11 */
+ 0x00, /* 12 */
+ 0x1F, /* 13 */
+ 0x00, /* 14 */
+ 0x3F, /* 15 */
+ 0x00, /* 16 */
+ 0x7F, /* 17 */
+ 0x00, /* 18 */
+ 0xFF, /* 19 */
+ 0x00, /* 20 */
+ 0xFF, /* 21 */
+ 0x01, /* 22 */
+ 0xFF, /* 23 */
+ 0x03, /* 24 */
+ 0xFF, /* 25 */
+ 0x07, /* 26 */
+ 0xFF, /* 27 */
+ 0x0F, /* 28 */
+ 0xFF, /* 29 */
+ 0x1F, /* 30 */
+ 0xFF, /* 31 */
+ 0x3F, /* 32 */
+ 0xFF, /* 33 */
+ 0x7F, /* 34 */
+ 0xFF, /* 35 */
+ 0xFF, /* 36 */
+ 0x00, /* 37 */
+ 0x00 /* 38 */
+};
+
+static const BYTE HuffLengthLEC[294] = {
+ 6, /* 0 */
+ 6, /* 1 */
+ 6, /* 2 */
+ 7, /* 3 */
+ 7, /* 4 */
+ 7, /* 5 */
+ 7, /* 6 */
+ 7, /* 7 */
+ 7, /* 8 */
+ 7, /* 9 */
+ 7, /* 10 */
+ 8, /* 11 */
+ 8, /* 12 */
+ 8, /* 13 */
+ 8, /* 14 */
+ 8, /* 15 */
+ 8, /* 16 */
+ 8, /* 17 */
+ 9, /* 18 */
+ 8, /* 19 */
+ 9, /* 20 */
+ 9, /* 21 */
+ 9, /* 22 */
+ 9, /* 23 */
+ 8, /* 24 */
+ 8, /* 25 */
+ 9, /* 26 */
+ 9, /* 27 */
+ 9, /* 28 */
+ 9, /* 29 */
+ 9, /* 30 */
+ 9, /* 31 */
+ 8, /* 32 */
+ 9, /* 33 */
+ 9, /* 34 */
+ 10, /* 35 */
+ 9, /* 36 */
+ 9, /* 37 */
+ 9, /* 38 */
+ 9, /* 39 */
+ 9, /* 40 */
+ 9, /* 41 */
+ 9, /* 42 */
+ 10, /* 43 */
+ 9, /* 44 */
+ 10, /* 45 */
+ 10, /* 46 */
+ 10, /* 47 */
+ 9, /* 48 */
+ 9, /* 49 */
+ 10, /* 50 */
+ 9, /* 51 */
+ 10, /* 52 */
+ 9, /* 53 */
+ 10, /* 54 */
+ 9, /* 55 */
+ 9, /* 56 */
+ 9, /* 57 */
+ 10, /* 58 */
+ 10, /* 59 */
+ 9, /* 60 */
+ 10, /* 61 */
+ 9, /* 62 */
+ 9, /* 63 */
+ 8, /* 64 */
+ 9, /* 65 */
+ 9, /* 66 */
+ 9, /* 67 */
+ 9, /* 68 */
+ 10, /* 69 */
+ 10, /* 70 */
+ 10, /* 71 */
+ 9, /* 72 */
+ 9, /* 73 */
+ 10, /* 74 */
+ 10, /* 75 */
+ 10, /* 76 */
+ 10, /* 77 */
+ 10, /* 78 */
+ 10, /* 79 */
+ 9, /* 80 */
+ 9, /* 81 */
+ 10, /* 82 */
+ 10, /* 83 */
+ 10, /* 84 */
+ 10, /* 85 */
+ 10, /* 86 */
+ 10, /* 87 */
+ 10, /* 88 */
+ 9, /* 89 */
+ 10, /* 90 */
+ 10, /* 91 */
+ 10, /* 92 */
+ 10, /* 93 */
+ 10, /* 94 */
+ 10, /* 95 */
+ 8, /* 96 */
+ 10, /* 97 */
+ 10, /* 98 */
+ 10, /* 99 */
+ 10, /* 100 */
+ 10, /* 101 */
+ 10, /* 102 */
+ 10, /* 103 */
+ 10, /* 104 */
+ 10, /* 105 */
+ 10, /* 106 */
+ 10, /* 107 */
+ 10, /* 108 */
+ 10, /* 109 */
+ 10, /* 110 */
+ 10, /* 111 */
+ 9, /* 112 */
+ 10, /* 113 */
+ 10, /* 114 */
+ 10, /* 115 */
+ 10, /* 116 */
+ 10, /* 117 */
+ 10, /* 118 */
+ 10, /* 119 */
+ 9, /* 120 */
+ 10, /* 121 */
+ 10, /* 122 */
+ 10, /* 123 */
+ 10, /* 124 */
+ 10, /* 125 */
+ 10, /* 126 */
+ 9, /* 127 */
+ 7, /* 128 */
+ 9, /* 129 */
+ 9, /* 130 */
+ 10, /* 131 */
+ 9, /* 132 */
+ 10, /* 133 */
+ 10, /* 134 */
+ 10, /* 135 */
+ 9, /* 136 */
+ 10, /* 137 */
+ 10, /* 138 */
+ 10, /* 139 */
+ 10, /* 140 */
+ 10, /* 141 */
+ 10, /* 142 */
+ 10, /* 143 */
+ 9, /* 144 */
+ 10, /* 145 */
+ 10, /* 146 */
+ 10, /* 147 */
+ 10, /* 148 */
+ 10, /* 149 */
+ 10, /* 150 */
+ 10, /* 151 */
+ 10, /* 152 */
+ 10, /* 153 */
+ 10, /* 154 */
+ 10, /* 155 */
+ 10, /* 156 */
+ 10, /* 157 */
+ 10, /* 158 */
+ 10, /* 159 */
+ 10, /* 160 */
+ 10, /* 161 */
+ 10, /* 162 */
+ 10, /* 163 */
+ 10, /* 164 */
+ 10, /* 165 */
+ 10, /* 166 */
+ 10, /* 167 */
+ 10, /* 168 */
+ 10, /* 169 */
+ 10, /* 170 */
+ 13, /* 171 */
+ 10, /* 172 */
+ 10, /* 173 */
+ 10, /* 174 */
+ 10, /* 175 */
+ 10, /* 176 */
+ 10, /* 177 */
+ 11, /* 178 */
+ 10, /* 179 */
+ 10, /* 180 */
+ 10, /* 181 */
+ 10, /* 182 */
+ 10, /* 183 */
+ 10, /* 184 */
+ 10, /* 185 */
+ 10, /* 186 */
+ 10, /* 187 */
+ 10, /* 188 */
+ 10, /* 189 */
+ 10, /* 190 */
+ 10, /* 191 */
+ 9, /* 192 */
+ 10, /* 193 */
+ 10, /* 194 */
+ 10, /* 195 */
+ 10, /* 196 */
+ 10, /* 197 */
+ 9, /* 198 */
+ 10, /* 199 */
+ 10, /* 200 */
+ 10, /* 201 */
+ 10, /* 202 */
+ 10, /* 203 */
+ 9, /* 204 */
+ 10, /* 205 */
+ 10, /* 206 */
+ 10, /* 207 */
+ 9, /* 208 */
+ 10, /* 209 */
+ 10, /* 210 */
+ 10, /* 211 */
+ 10, /* 212 */
+ 10, /* 213 */
+ 10, /* 214 */
+ 10, /* 215 */
+ 10, /* 216 */
+ 10, /* 217 */
+ 10, /* 218 */
+ 10, /* 219 */
+ 10, /* 220 */
+ 10, /* 221 */
+ 10, /* 222 */
+ 10, /* 223 */
+ 9, /* 224 */
+ 10, /* 225 */
+ 10, /* 226 */
+ 10, /* 227 */
+ 10, /* 228 */
+ 10, /* 229 */
+ 10, /* 230 */
+ 10, /* 231 */
+ 10, /* 232 */
+ 10, /* 233 */
+ 10, /* 234 */
+ 10, /* 235 */
+ 10, /* 236 */
+ 10, /* 237 */
+ 9, /* 238 */
+ 10, /* 239 */
+ 8, /* 240 */
+ 9, /* 241 */
+ 9, /* 242 */
+ 10, /* 243 */
+ 9, /* 244 */
+ 10, /* 245 */
+ 10, /* 246 */
+ 10, /* 247 */
+ 9, /* 248 */
+ 10, /* 249 */
+ 10, /* 250 */
+ 10, /* 251 */
+ 9, /* 252 */
+ 9, /* 253 */
+ 8, /* 254 */
+ 7, /* 255 */
+ 13, /* 256 */
+ 13, /* 257 */
+ 7, /* 258 */
+ 7, /* 259 */
+ 10, /* 260 */
+ 7, /* 261 */
+ 7, /* 262 */
+ 6, /* 263 */
+ 6, /* 264 */
+ 6, /* 265 */
+ 6, /* 266 */
+ 5, /* 267 */
+ 6, /* 268 */
+ 6, /* 269 */
+ 6, /* 270 */
+ 5, /* 271 */
+ 6, /* 272 */
+ 5, /* 273 */
+ 6, /* 274 */
+ 6, /* 275 */
+ 6, /* 276 */
+ 6, /* 277 */
+ 6, /* 278 */
+ 6, /* 279 */
+ 6, /* 280 */
+ 6, /* 281 */
+ 6, /* 282 */
+ 6, /* 283 */
+ 6, /* 284 */
+ 6, /* 285 */
+ 6, /* 286 */
+ 6, /* 287 */
+ 8, /* 288 */
+ 5, /* 289 */
+ 6, /* 290 */
+ 7, /* 291 */
+ 7, /* 292 */
+ 13 /* 293 */
+};
+
+static const BYTE HuffCodeLEC[588] = {
+ 0x04, /* 0 */
+ 0x00, /* 1 */
+ 0x24, /* 2 */
+ 0x00, /* 3 */
+ 0x14, /* 4 */
+ 0x00, /* 5 */
+ 0x11, /* 6 */
+ 0x00, /* 7 */
+ 0x51, /* 8 */
+ 0x00, /* 9 */
+ 0x31, /* 10 */
+ 0x00, /* 11 */
+ 0x71, /* 12 */
+ 0x00, /* 13 */
+ 0x09, /* 14 */
+ 0x00, /* 15 */
+ 0x49, /* 16 */
+ 0x00, /* 17 */
+ 0x29, /* 18 */
+ 0x00, /* 19 */
+ 0x69, /* 20 */
+ 0x00, /* 21 */
+ 0x15, /* 22 */
+ 0x00, /* 23 */
+ 0x95, /* 24 */
+ 0x00, /* 25 */
+ 0x55, /* 26 */
+ 0x00, /* 27 */
+ 0xD5, /* 28 */
+ 0x00, /* 29 */
+ 0x35, /* 30 */
+ 0x00, /* 31 */
+ 0xB5, /* 32 */
+ 0x00, /* 33 */
+ 0x75, /* 34 */
+ 0x00, /* 35 */
+ 0x1D, /* 36 */
+ 0x00, /* 37 */
+ 0xF5, /* 38 */
+ 0x00, /* 39 */
+ 0x1D, /* 40 */
+ 0x01, /* 41 */
+ 0x9D, /* 42 */
+ 0x00, /* 43 */
+ 0x9D, /* 44 */
+ 0x01, /* 45 */
+ 0x5D, /* 46 */
+ 0x00, /* 47 */
+ 0x0D, /* 48 */
+ 0x00, /* 49 */
+ 0x8D, /* 50 */
+ 0x00, /* 51 */
+ 0x5D, /* 52 */
+ 0x01, /* 53 */
+ 0xDD, /* 54 */
+ 0x00, /* 55 */
+ 0xDD, /* 56 */
+ 0x01, /* 57 */
+ 0x3D, /* 58 */
+ 0x00, /* 59 */
+ 0x3D, /* 60 */
+ 0x01, /* 61 */
+ 0xBD, /* 62 */
+ 0x00, /* 63 */
+ 0x4D, /* 64 */
+ 0x00, /* 65 */
+ 0xBD, /* 66 */
+ 0x01, /* 67 */
+ 0x7D, /* 68 */
+ 0x00, /* 69 */
+ 0x6B, /* 70 */
+ 0x00, /* 71 */
+ 0x7D, /* 72 */
+ 0x01, /* 73 */
+ 0xFD, /* 74 */
+ 0x00, /* 75 */
+ 0xFD, /* 76 */
+ 0x01, /* 77 */
+ 0x03, /* 78 */
+ 0x00, /* 79 */
+ 0x03, /* 80 */
+ 0x01, /* 81 */
+ 0x83, /* 82 */
+ 0x00, /* 83 */
+ 0x83, /* 84 */
+ 0x01, /* 85 */
+ 0x6B, /* 86 */
+ 0x02, /* 87 */
+ 0x43, /* 88 */
+ 0x00, /* 89 */
+ 0x6B, /* 90 */
+ 0x01, /* 91 */
+ 0x6B, /* 92 */
+ 0x03, /* 93 */
+ 0xEB, /* 94 */
+ 0x00, /* 95 */
+ 0x43, /* 96 */
+ 0x01, /* 97 */
+ 0xC3, /* 98 */
+ 0x00, /* 99 */
+ 0xEB, /* 100 */
+ 0x02, /* 101 */
+ 0xC3, /* 102 */
+ 0x01, /* 103 */
+ 0xEB, /* 104 */
+ 0x01, /* 105 */
+ 0x23, /* 106 */
+ 0x00, /* 107 */
+ 0xEB, /* 108 */
+ 0x03, /* 109 */
+ 0x23, /* 110 */
+ 0x01, /* 111 */
+ 0xA3, /* 112 */
+ 0x00, /* 113 */
+ 0xA3, /* 114 */
+ 0x01, /* 115 */
+ 0x1B, /* 116 */
+ 0x00, /* 117 */
+ 0x1B, /* 118 */
+ 0x02, /* 119 */
+ 0x63, /* 120 */
+ 0x00, /* 121 */
+ 0x1B, /* 122 */
+ 0x01, /* 123 */
+ 0x63, /* 124 */
+ 0x01, /* 125 */
+ 0xE3, /* 126 */
+ 0x00, /* 127 */
+ 0xCD, /* 128 */
+ 0x00, /* 129 */
+ 0xE3, /* 130 */
+ 0x01, /* 131 */
+ 0x13, /* 132 */
+ 0x00, /* 133 */
+ 0x13, /* 134 */
+ 0x01, /* 135 */
+ 0x93, /* 136 */
+ 0x00, /* 137 */
+ 0x1B, /* 138 */
+ 0x03, /* 139 */
+ 0x9B, /* 140 */
+ 0x00, /* 141 */
+ 0x9B, /* 142 */
+ 0x02, /* 143 */
+ 0x93, /* 144 */
+ 0x01, /* 145 */
+ 0x53, /* 146 */
+ 0x00, /* 147 */
+ 0x9B, /* 148 */
+ 0x01, /* 149 */
+ 0x9B, /* 150 */
+ 0x03, /* 151 */
+ 0x5B, /* 152 */
+ 0x00, /* 153 */
+ 0x5B, /* 154 */
+ 0x02, /* 155 */
+ 0x5B, /* 156 */
+ 0x01, /* 157 */
+ 0x5B, /* 158 */
+ 0x03, /* 159 */
+ 0x53, /* 160 */
+ 0x01, /* 161 */
+ 0xD3, /* 162 */
+ 0x00, /* 163 */
+ 0xDB, /* 164 */
+ 0x00, /* 165 */
+ 0xDB, /* 166 */
+ 0x02, /* 167 */
+ 0xDB, /* 168 */
+ 0x01, /* 169 */
+ 0xDB, /* 170 */
+ 0x03, /* 171 */
+ 0x3B, /* 172 */
+ 0x00, /* 173 */
+ 0x3B, /* 174 */
+ 0x02, /* 175 */
+ 0x3B, /* 176 */
+ 0x01, /* 177 */
+ 0xD3, /* 178 */
+ 0x01, /* 179 */
+ 0x3B, /* 180 */
+ 0x03, /* 181 */
+ 0xBB, /* 182 */
+ 0x00, /* 183 */
+ 0xBB, /* 184 */
+ 0x02, /* 185 */
+ 0xBB, /* 186 */
+ 0x01, /* 187 */
+ 0xBB, /* 188 */
+ 0x03, /* 189 */
+ 0x7B, /* 190 */
+ 0x00, /* 191 */
+ 0x2D, /* 192 */
+ 0x00, /* 193 */
+ 0x7B, /* 194 */
+ 0x02, /* 195 */
+ 0x7B, /* 196 */
+ 0x01, /* 197 */
+ 0x7B, /* 198 */
+ 0x03, /* 199 */
+ 0xFB, /* 200 */
+ 0x00, /* 201 */
+ 0xFB, /* 202 */
+ 0x02, /* 203 */
+ 0xFB, /* 204 */
+ 0x01, /* 205 */
+ 0xFB, /* 206 */
+ 0x03, /* 207 */
+ 0x07, /* 208 */
+ 0x00, /* 209 */
+ 0x07, /* 210 */
+ 0x02, /* 211 */
+ 0x07, /* 212 */
+ 0x01, /* 213 */
+ 0x07, /* 214 */
+ 0x03, /* 215 */
+ 0x87, /* 216 */
+ 0x00, /* 217 */
+ 0x87, /* 218 */
+ 0x02, /* 219 */
+ 0x87, /* 220 */
+ 0x01, /* 221 */
+ 0x87, /* 222 */
+ 0x03, /* 223 */
+ 0x33, /* 224 */
+ 0x00, /* 225 */
+ 0x47, /* 226 */
+ 0x00, /* 227 */
+ 0x47, /* 228 */
+ 0x02, /* 229 */
+ 0x47, /* 230 */
+ 0x01, /* 231 */
+ 0x47, /* 232 */
+ 0x03, /* 233 */
+ 0xC7, /* 234 */
+ 0x00, /* 235 */
+ 0xC7, /* 236 */
+ 0x02, /* 237 */
+ 0xC7, /* 238 */
+ 0x01, /* 239 */
+ 0x33, /* 240 */
+ 0x01, /* 241 */
+ 0xC7, /* 242 */
+ 0x03, /* 243 */
+ 0x27, /* 244 */
+ 0x00, /* 245 */
+ 0x27, /* 246 */
+ 0x02, /* 247 */
+ 0x27, /* 248 */
+ 0x01, /* 249 */
+ 0x27, /* 250 */
+ 0x03, /* 251 */
+ 0xA7, /* 252 */
+ 0x00, /* 253 */
+ 0xB3, /* 254 */
+ 0x00, /* 255 */
+ 0x19, /* 256 */
+ 0x00, /* 257 */
+ 0xB3, /* 258 */
+ 0x01, /* 259 */
+ 0x73, /* 260 */
+ 0x00, /* 261 */
+ 0xA7, /* 262 */
+ 0x02, /* 263 */
+ 0x73, /* 264 */
+ 0x01, /* 265 */
+ 0xA7, /* 266 */
+ 0x01, /* 267 */
+ 0xA7, /* 268 */
+ 0x03, /* 269 */
+ 0x67, /* 270 */
+ 0x00, /* 271 */
+ 0xF3, /* 272 */
+ 0x00, /* 273 */
+ 0x67, /* 274 */
+ 0x02, /* 275 */
+ 0x67, /* 276 */
+ 0x01, /* 277 */
+ 0x67, /* 278 */
+ 0x03, /* 279 */
+ 0xE7, /* 280 */
+ 0x00, /* 281 */
+ 0xE7, /* 282 */
+ 0x02, /* 283 */
+ 0xE7, /* 284 */
+ 0x01, /* 285 */
+ 0xE7, /* 286 */
+ 0x03, /* 287 */
+ 0xF3, /* 288 */
+ 0x01, /* 289 */
+ 0x17, /* 290 */
+ 0x00, /* 291 */
+ 0x17, /* 292 */
+ 0x02, /* 293 */
+ 0x17, /* 294 */
+ 0x01, /* 295 */
+ 0x17, /* 296 */
+ 0x03, /* 297 */
+ 0x97, /* 298 */
+ 0x00, /* 299 */
+ 0x97, /* 300 */
+ 0x02, /* 301 */
+ 0x97, /* 302 */
+ 0x01, /* 303 */
+ 0x97, /* 304 */
+ 0x03, /* 305 */
+ 0x57, /* 306 */
+ 0x00, /* 307 */
+ 0x57, /* 308 */
+ 0x02, /* 309 */
+ 0x57, /* 310 */
+ 0x01, /* 311 */
+ 0x57, /* 312 */
+ 0x03, /* 313 */
+ 0xD7, /* 314 */
+ 0x00, /* 315 */
+ 0xD7, /* 316 */
+ 0x02, /* 317 */
+ 0xD7, /* 318 */
+ 0x01, /* 319 */
+ 0xD7, /* 320 */
+ 0x03, /* 321 */
+ 0x37, /* 322 */
+ 0x00, /* 323 */
+ 0x37, /* 324 */
+ 0x02, /* 325 */
+ 0x37, /* 326 */
+ 0x01, /* 327 */
+ 0x37, /* 328 */
+ 0x03, /* 329 */
+ 0xB7, /* 330 */
+ 0x00, /* 331 */
+ 0xB7, /* 332 */
+ 0x02, /* 333 */
+ 0xB7, /* 334 */
+ 0x01, /* 335 */
+ 0xB7, /* 336 */
+ 0x03, /* 337 */
+ 0x77, /* 338 */
+ 0x00, /* 339 */
+ 0x77, /* 340 */
+ 0x02, /* 341 */
+ 0xFF, /* 342 */
+ 0x07, /* 343 */
+ 0x77, /* 344 */
+ 0x01, /* 345 */
+ 0x77, /* 346 */
+ 0x03, /* 347 */
+ 0xF7, /* 348 */
+ 0x00, /* 349 */
+ 0xF7, /* 350 */
+ 0x02, /* 351 */
+ 0xF7, /* 352 */
+ 0x01, /* 353 */
+ 0xF7, /* 354 */
+ 0x03, /* 355 */
+ 0xFF, /* 356 */
+ 0x03, /* 357 */
+ 0x0F, /* 358 */
+ 0x00, /* 359 */
+ 0x0F, /* 360 */
+ 0x02, /* 361 */
+ 0x0F, /* 362 */
+ 0x01, /* 363 */
+ 0x0F, /* 364 */
+ 0x03, /* 365 */
+ 0x8F, /* 366 */
+ 0x00, /* 367 */
+ 0x8F, /* 368 */
+ 0x02, /* 369 */
+ 0x8F, /* 370 */
+ 0x01, /* 371 */
+ 0x8F, /* 372 */
+ 0x03, /* 373 */
+ 0x4F, /* 374 */
+ 0x00, /* 375 */
+ 0x4F, /* 376 */
+ 0x02, /* 377 */
+ 0x4F, /* 378 */
+ 0x01, /* 379 */
+ 0x4F, /* 380 */
+ 0x03, /* 381 */
+ 0xCF, /* 382 */
+ 0x00, /* 383 */
+ 0x0B, /* 384 */
+ 0x00, /* 385 */
+ 0xCF, /* 386 */
+ 0x02, /* 387 */
+ 0xCF, /* 388 */
+ 0x01, /* 389 */
+ 0xCF, /* 390 */
+ 0x03, /* 391 */
+ 0x2F, /* 392 */
+ 0x00, /* 393 */
+ 0x2F, /* 394 */
+ 0x02, /* 395 */
+ 0x0B, /* 396 */
+ 0x01, /* 397 */
+ 0x2F, /* 398 */
+ 0x01, /* 399 */
+ 0x2F, /* 400 */
+ 0x03, /* 401 */
+ 0xAF, /* 402 */
+ 0x00, /* 403 */
+ 0xAF, /* 404 */
+ 0x02, /* 405 */
+ 0xAF, /* 406 */
+ 0x01, /* 407 */
+ 0x8B, /* 408 */
+ 0x00, /* 409 */
+ 0xAF, /* 410 */
+ 0x03, /* 411 */
+ 0x6F, /* 412 */
+ 0x00, /* 413 */
+ 0x6F, /* 414 */
+ 0x02, /* 415 */
+ 0x8B, /* 416 */
+ 0x01, /* 417 */
+ 0x6F, /* 418 */
+ 0x01, /* 419 */
+ 0x6F, /* 420 */
+ 0x03, /* 421 */
+ 0xEF, /* 422 */
+ 0x00, /* 423 */
+ 0xEF, /* 424 */
+ 0x02, /* 425 */
+ 0xEF, /* 426 */
+ 0x01, /* 427 */
+ 0xEF, /* 428 */
+ 0x03, /* 429 */
+ 0x1F, /* 430 */
+ 0x00, /* 431 */
+ 0x1F, /* 432 */
+ 0x02, /* 433 */
+ 0x1F, /* 434 */
+ 0x01, /* 435 */
+ 0x1F, /* 436 */
+ 0x03, /* 437 */
+ 0x9F, /* 438 */
+ 0x00, /* 439 */
+ 0x9F, /* 440 */
+ 0x02, /* 441 */
+ 0x9F, /* 442 */
+ 0x01, /* 443 */
+ 0x9F, /* 444 */
+ 0x03, /* 445 */
+ 0x5F, /* 446 */
+ 0x00, /* 447 */
+ 0x4B, /* 448 */
+ 0x00, /* 449 */
+ 0x5F, /* 450 */
+ 0x02, /* 451 */
+ 0x5F, /* 452 */
+ 0x01, /* 453 */
+ 0x5F, /* 454 */
+ 0x03, /* 455 */
+ 0xDF, /* 456 */
+ 0x00, /* 457 */
+ 0xDF, /* 458 */
+ 0x02, /* 459 */
+ 0xDF, /* 460 */
+ 0x01, /* 461 */
+ 0xDF, /* 462 */
+ 0x03, /* 463 */
+ 0x3F, /* 464 */
+ 0x00, /* 465 */
+ 0x3F, /* 466 */
+ 0x02, /* 467 */
+ 0x3F, /* 468 */
+ 0x01, /* 469 */
+ 0x3F, /* 470 */
+ 0x03, /* 471 */
+ 0xBF, /* 472 */
+ 0x00, /* 473 */
+ 0xBF, /* 474 */
+ 0x02, /* 475 */
+ 0x4B, /* 476 */
+ 0x01, /* 477 */
+ 0xBF, /* 478 */
+ 0x01, /* 479 */
+ 0xAD, /* 480 */
+ 0x00, /* 481 */
+ 0xCB, /* 482 */
+ 0x00, /* 483 */
+ 0xCB, /* 484 */
+ 0x01, /* 485 */
+ 0xBF, /* 486 */
+ 0x03, /* 487 */
+ 0x2B, /* 488 */
+ 0x00, /* 489 */
+ 0x7F, /* 490 */
+ 0x00, /* 491 */
+ 0x7F, /* 492 */
+ 0x02, /* 493 */
+ 0x7F, /* 494 */
+ 0x01, /* 495 */
+ 0x2B, /* 496 */
+ 0x01, /* 497 */
+ 0x7F, /* 498 */
+ 0x03, /* 499 */
+ 0xFF, /* 500 */
+ 0x00, /* 501 */
+ 0xFF, /* 502 */
+ 0x02, /* 503 */
+ 0xAB, /* 504 */
+ 0x00, /* 505 */
+ 0xAB, /* 506 */
+ 0x01, /* 507 */
+ 0x6D, /* 508 */
+ 0x00, /* 509 */
+ 0x59, /* 510 */
+ 0x00, /* 511 */
+ 0xFF, /* 512 */
+ 0x17, /* 513 */
+ 0xFF, /* 514 */
+ 0x0F, /* 515 */
+ 0x39, /* 516 */
+ 0x00, /* 517 */
+ 0x79, /* 518 */
+ 0x00, /* 519 */
+ 0xFF, /* 520 */
+ 0x01, /* 521 */
+ 0x05, /* 522 */
+ 0x00, /* 523 */
+ 0x45, /* 524 */
+ 0x00, /* 525 */
+ 0x34, /* 526 */
+ 0x00, /* 527 */
+ 0x0C, /* 528 */
+ 0x00, /* 529 */
+ 0x2C, /* 530 */
+ 0x00, /* 531 */
+ 0x1C, /* 532 */
+ 0x00, /* 533 */
+ 0x00, /* 534 */
+ 0x00, /* 535 */
+ 0x3C, /* 536 */
+ 0x00, /* 537 */
+ 0x02, /* 538 */
+ 0x00, /* 539 */
+ 0x22, /* 540 */
+ 0x00, /* 541 */
+ 0x10, /* 542 */
+ 0x00, /* 543 */
+ 0x12, /* 544 */
+ 0x00, /* 545 */
+ 0x08, /* 546 */
+ 0x00, /* 547 */
+ 0x32, /* 548 */
+ 0x00, /* 549 */
+ 0x0A, /* 550 */
+ 0x00, /* 551 */
+ 0x2A, /* 552 */
+ 0x00, /* 553 */
+ 0x1A, /* 554 */
+ 0x00, /* 555 */
+ 0x3A, /* 556 */
+ 0x00, /* 557 */
+ 0x06, /* 558 */
+ 0x00, /* 559 */
+ 0x26, /* 560 */
+ 0x00, /* 561 */
+ 0x16, /* 562 */
+ 0x00, /* 563 */
+ 0x36, /* 564 */
+ 0x00, /* 565 */
+ 0x0E, /* 566 */
+ 0x00, /* 567 */
+ 0x2E, /* 568 */
+ 0x00, /* 569 */
+ 0x1E, /* 570 */
+ 0x00, /* 571 */
+ 0x3E, /* 572 */
+ 0x00, /* 573 */
+ 0x01, /* 574 */
+ 0x00, /* 575 */
+ 0xED, /* 576 */
+ 0x00, /* 577 */
+ 0x18, /* 578 */
+ 0x00, /* 579 */
+ 0x21, /* 580 */
+ 0x00, /* 581 */
+ 0x25, /* 582 */
+ 0x00, /* 583 */
+ 0x65, /* 584 */
+ 0x00, /* 585 */
+ 0xFF, /* 586 */
+ 0x1F /* 587 */
+};
+
+static const BYTE HuffLengthLOM[32] = {
+ 4, /* 0 */
+ 2, /* 1 */
+ 3, /* 2 */
+ 4, /* 3 */
+ 3, /* 4 */
+ 4, /* 5 */
+ 4, /* 6 */
+ 5, /* 7 */
+ 4, /* 8 */
+ 5, /* 9 */
+ 5, /* 10 */
+ 6, /* 11 */
+ 6, /* 12 */
+ 7, /* 13 */
+ 7, /* 14 */
+ 8, /* 15 */
+ 7, /* 16 */
+ 8, /* 17 */
+ 8, /* 18 */
+ 9, /* 19 */
+ 9, /* 20 */
+ 8, /* 21 */
+ 9, /* 22 */
+ 9, /* 23 */
+ 9, /* 24 */
+ 9, /* 25 */
+ 9, /* 26 */
+ 9, /* 27 */
+ 9, /* 28 */
+ 9, /* 29 */
+ 9, /* 30 */
+ 9 /* 31 */
+};
+
+static const UINT16 HuffCodeLOM[32] = {
+ 0x0001, /* 0 */
+ 0x0000, /* 1 */
+ 0x0002, /* 2 */
+ 0x0009, /* 3 */
+ 0x0006, /* 4 */
+ 0x0005, /* 5 */
+ 0x000D, /* 6 */
+ 0x000B, /* 7 */
+ 0x0003, /* 8 */
+ 0x001B, /* 9 */
+ 0x0007, /* 10 */
+ 0x0017, /* 11 */
+ 0x0037, /* 12 */
+ 0x000F, /* 13 */
+ 0x004F, /* 14 */
+ 0x006F, /* 15 */
+ 0x002F, /* 16 */
+ 0x00EF, /* 17 */
+ 0x001F, /* 18 */
+ 0x005F, /* 19 */
+ 0x015F, /* 20 */
+ 0x009F, /* 21 */
+ 0x00DF, /* 22 */
+ 0x01DF, /* 23 */
+ 0x003F, /* 24 */
+ 0x013F, /* 25 */
+ 0x00BF, /* 26 */
+ 0x01BF, /* 27 */
+ 0x007F, /* 28 */
+ 0x017F, /* 29 */
+ 0x00FF, /* 30 */
+ 0x01FF /* 31 */
+};
+
+static const UINT32 CopyOffsetBitsLUT[32] = {
+ 0x0, /* 0 */
+ 0x0, /* 1 */
+ 0x0, /* 2 */
+ 0x0, /* 3 */
+ 0x1, /* 4 */
+ 0x1, /* 5 */
+ 0x2, /* 6 */
+ 0x2, /* 7 */
+ 0x3, /* 8 */
+ 0x3, /* 9 */
+ 0x4, /* 10 */
+ 0x4, /* 11 */
+ 0x5, /* 12 */
+ 0x5, /* 13 */
+ 0x6, /* 14 */
+ 0x6, /* 15 */
+ 0x7, /* 16 */
+ 0x7, /* 17 */
+ 0x8, /* 18 */
+ 0x8, /* 19 */
+ 0x9, /* 20 */
+ 0x9, /* 21 */
+ 0xA, /* 22 */
+ 0xA, /* 23 */
+ 0xB, /* 24 */
+ 0xB, /* 25 */
+ 0xC, /* 26 */
+ 0xC, /* 27 */
+ 0xD, /* 28 */
+ 0xD, /* 29 */
+ 0xE, /* 30 */
+ 0xE /* 31 */
+};
+
+static const UINT32 CopyOffsetBaseLUT[32] = {
+ 0x1, /* 0 */
+ 0x2, /* 1 */
+ 0x3, /* 2 */
+ 0x4, /* 3 */
+ 0x5, /* 4 */
+ 0x7, /* 5 */
+ 0x9, /* 6 */
+ 0xD, /* 7 */
+ 0x11, /* 8 */
+ 0x19, /* 9 */
+ 0x21, /* 10 */
+ 0x31, /* 11 */
+ 0x41, /* 12 */
+ 0x61, /* 13 */
+ 0x81, /* 14 */
+ 0xC1, /* 15 */
+ 0x101, /* 16 */
+ 0x181, /* 17 */
+ 0x201, /* 18 */
+ 0x301, /* 19 */
+ 0x401, /* 20 */
+ 0x601, /* 21 */
+ 0x801, /* 22 */
+ 0xC01, /* 23 */
+ 0x1001, /* 24 */
+ 0x1801, /* 25 */
+ 0x2001, /* 26 */
+ 0x3001, /* 27 */
+ 0x4001, /* 28 */
+ 0x6001, /* 29 */
+ 0x8001, /* 30 */
+ 0xC001 /* 31 */
+};
+
+static const UINT32 LOMBitsLUT[30] = {
+ 0x0, /* 0 */
+ 0x0, /* 1 */
+ 0x0, /* 2 */
+ 0x0, /* 3 */
+ 0x0, /* 4 */
+ 0x0, /* 5 */
+ 0x0, /* 6 */
+ 0x0, /* 7 */
+ 0x1, /* 8 */
+ 0x1, /* 9 */
+ 0x1, /* 10 */
+ 0x1, /* 11 */
+ 0x2, /* 12 */
+ 0x2, /* 13 */
+ 0x2, /* 14 */
+ 0x2, /* 15 */
+ 0x3, /* 16 */
+ 0x3, /* 17 */
+ 0x3, /* 18 */
+ 0x3, /* 19 */
+ 0x4, /* 20 */
+ 0x4, /* 21 */
+ 0x4, /* 22 */
+ 0x4, /* 23 */
+ 0x6, /* 24 */
+ 0x6, /* 25 */
+ 0x8, /* 26 */
+ 0x8, /* 27 */
+ 0xE, /* 28 */
+ 0xE /* 29 */
+};
+
+static const UINT32 LOMBaseLUT[30] = {
+ 0x2, /* 0 */
+ 0x3, /* 1 */
+ 0x4, /* 2 */
+ 0x5, /* 3 */
+ 0x6, /* 4 */
+ 0x7, /* 5 */
+ 0x8, /* 6 */
+ 0x9, /* 7 */
+ 0xA, /* 8 */
+ 0xC, /* 9 */
+ 0xE, /* 10 */
+ 0x10, /* 11 */
+ 0x12, /* 12 */
+ 0x16, /* 13 */
+ 0x1A, /* 14 */
+ 0x1E, /* 15 */
+ 0x22, /* 16 */
+ 0x2A, /* 17 */
+ 0x32, /* 18 */
+ 0x3A, /* 19 */
+ 0x42, /* 20 */
+ 0x52, /* 21 */
+ 0x62, /* 22 */
+ 0x72, /* 23 */
+ 0x82, /* 24 */
+ 0xC2, /* 25 */
+ 0x102, /* 26 */
+ 0x202, /* 27 */
+ 0x2, /* 28 */
+ 0x2 /* 29 */
+};
+
+static INLINE UINT16 get_word(const BYTE* data)
+{
+ UINT16 tmp = 0;
+
+ WINPR_ASSERT(data);
+ tmp = *data++;
+ tmp |= *data << 8;
+ return tmp;
+}
+
+static INLINE UINT32 get_dword(const BYTE* data)
+{
+ UINT32 tmp = 0;
+ WINPR_ASSERT(data);
+ tmp = *data++;
+ tmp |= (UINT32)*data++ << 8U;
+ tmp |= (UINT32)*data++ << 16U;
+ tmp |= (UINT32)*data++ << 24U;
+ return tmp;
+}
+
+static INLINE BOOL NCrushFetchBits(const BYTE** SrcPtr, const BYTE** SrcEnd, INT32* nbits,
+ UINT32* bits)
+{
+ WINPR_ASSERT(SrcPtr);
+ WINPR_ASSERT(SrcEnd);
+ WINPR_ASSERT(nbits);
+ WINPR_ASSERT(bits);
+
+ if (*nbits < 16)
+ {
+ if ((*SrcPtr + 1) >= *SrcEnd)
+ {
+ if (*SrcPtr >= *SrcEnd)
+ {
+ if (*nbits < 0)
+ return FALSE;
+ }
+ else
+ {
+ *bits += *(*SrcPtr)++ << *nbits;
+ *nbits += 8;
+ }
+ }
+ else
+ {
+ UINT16 tmp = *(*SrcPtr)++;
+ tmp |= (*(*SrcPtr)++) << 8;
+ *bits += tmp << *nbits;
+ *nbits += 16;
+ }
+ }
+
+ return TRUE;
+}
+
+static INLINE void NCrushWriteStart(UINT32* bits, UINT32* offset, UINT32* accumulator)
+{
+ WINPR_ASSERT(bits);
+ WINPR_ASSERT(offset);
+ WINPR_ASSERT(accumulator);
+
+ *bits = 0;
+ *offset = 0;
+ *accumulator = 0;
+}
+
+static INLINE void NCrushWriteBits(BYTE** DstPtr, UINT32* accumulator, UINT32* offset, UINT32 _bits,
+ UINT32 _nbits)
+{
+ WINPR_ASSERT(DstPtr);
+ WINPR_ASSERT(accumulator);
+ WINPR_ASSERT(offset);
+
+ *accumulator |= _bits << *offset;
+ *offset += _nbits;
+
+ if (*offset >= 16)
+ {
+ *(*DstPtr)++ = (*accumulator & 0xFF);
+ *(*DstPtr)++ = ((*accumulator >> 8) & 0xFF);
+ *accumulator >>= 16;
+ *offset -= 16;
+ }
+}
+
+static INLINE void NCrushWriteFinish(BYTE** DstPtr, UINT32 accumulator)
+{
+ WINPR_ASSERT(DstPtr);
+
+ *(*DstPtr)++ = accumulator & 0xFF;
+ *(*DstPtr)++ = (accumulator >> 8) & 0xFF;
+}
+
+int ncrush_decompress(NCRUSH_CONTEXT* ncrush, const BYTE* pSrcData, UINT32 SrcSize,
+ const BYTE** ppDstData, UINT32* pDstSize, UINT32 flags)
+{
+ UINT32 index = 0;
+ BYTE Literal = 0;
+ UINT32 IndexLEC = 0;
+ UINT32 BitLength = 0;
+ UINT32 CopyOffset = 0;
+ UINT32 CopyLength = 0;
+ UINT32 OldCopyOffset = 0;
+ const BYTE* CopyOffsetPtr = NULL;
+ UINT32 LengthOfMatch = 0;
+ UINT32 CopyOffsetIndex = 0;
+ UINT32 OffsetCacheIndex = 0;
+ UINT32 CopyOffsetBits = 0;
+ UINT32 CopyOffsetBase = 0;
+ UINT32 LengthOfMatchBits = 0;
+ UINT32 LengthOfMatchBase = 0;
+
+ WINPR_ASSERT(ncrush);
+ WINPR_ASSERT(pSrcData);
+ WINPR_ASSERT(ppDstData);
+ WINPR_ASSERT(pDstSize);
+
+ if (ncrush->HistoryEndOffset != 65535)
+ return -1001;
+
+ BYTE* HistoryBuffer = ncrush->HistoryBuffer;
+ const BYTE* HistoryBufferEnd = &HistoryBuffer[ncrush->HistoryEndOffset];
+
+ if (flags & PACKET_AT_FRONT)
+ {
+ if ((ncrush->HistoryPtr - 32768) <= HistoryBuffer)
+ return -1002;
+
+ MoveMemory(HistoryBuffer, (ncrush->HistoryPtr - 32768), 32768);
+ ncrush->HistoryPtr = &(HistoryBuffer[32768]);
+ ZeroMemory(&HistoryBuffer[32768], 32768);
+ }
+
+ if (flags & PACKET_FLUSHED)
+ {
+ ncrush->HistoryPtr = HistoryBuffer;
+ ZeroMemory(HistoryBuffer, sizeof(ncrush->HistoryBuffer));
+ ZeroMemory(&(ncrush->OffsetCache), sizeof(ncrush->OffsetCache));
+ }
+
+ BYTE* HistoryPtr = ncrush->HistoryPtr;
+
+ if (!(flags & PACKET_COMPRESSED))
+ {
+ *ppDstData = pSrcData;
+ *pDstSize = SrcSize;
+ return 1;
+ }
+
+ const BYTE* SrcEnd = &pSrcData[SrcSize];
+ const BYTE* SrcPtr = pSrcData + 4;
+
+ INT32 nbits = 32;
+ UINT32 bits = get_dword(pSrcData);
+ while (1)
+ {
+ while (1)
+ {
+ const UINT16 Mask = get_word(&HuffTableMask[29]);
+ const UINT32 MaskedBits = bits & Mask;
+ if (MaskedBits >= ARRAYSIZE(HuffTableLEC))
+ return -1;
+ IndexLEC = HuffTableLEC[MaskedBits] & 0xFFF;
+ BitLength = HuffTableLEC[MaskedBits] >> 12;
+ bits >>= BitLength;
+ nbits -= BitLength;
+
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+
+ if (IndexLEC >= 256)
+ break;
+
+ if (HistoryPtr >= HistoryBufferEnd)
+ {
+ WLog_ERR(TAG, "ncrush_decompress error: HistoryPtr (%p) >= HistoryBufferEnd (%p)",
+ (const void*)HistoryPtr, (const void*)HistoryBufferEnd);
+ return -1003;
+ }
+
+ Literal = (HuffTableLEC[MaskedBits] & 0xFF);
+ *HistoryPtr++ = Literal;
+ }
+
+ if (IndexLEC == 256)
+ break; /* EOS */
+
+ CopyOffsetIndex = IndexLEC - 257;
+
+ if (CopyOffsetIndex >= 32)
+ {
+ OffsetCacheIndex = IndexLEC - 289;
+
+ if (OffsetCacheIndex >= 4)
+ return -1004;
+
+ {
+ CopyOffset = ncrush->OffsetCache[OffsetCacheIndex];
+ const UINT16 Mask = get_word(&HuffTableMask[21]);
+ const UINT32 MaskedBits = bits & Mask;
+ if (MaskedBits > ARRAYSIZE(HuffTableLOM))
+ return -1;
+ LengthOfMatch = HuffTableLOM[MaskedBits] & 0xFFF;
+ BitLength = HuffTableLOM[MaskedBits] >> 12;
+ bits >>= BitLength;
+ nbits -= BitLength;
+ }
+
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+
+ if (LengthOfMatch >= ARRAYSIZE(LOMBitsLUT))
+ return -1;
+
+ LengthOfMatchBits = LOMBitsLUT[LengthOfMatch];
+
+ if (LengthOfMatch >= ARRAYSIZE(LOMBaseLUT))
+ return -1;
+ LengthOfMatchBase = LOMBaseLUT[LengthOfMatch];
+
+ if (LengthOfMatchBits)
+ {
+ const size_t idx = (2ull * LengthOfMatchBits) + 3ull;
+ if (idx >= ARRAYSIZE(HuffTableMask))
+ return -1;
+
+ const UINT16 Mask = get_word(&HuffTableMask[idx]);
+ const UINT32 MaskedBits = bits & Mask;
+ bits >>= LengthOfMatchBits;
+ nbits -= LengthOfMatchBits;
+ LengthOfMatchBase += MaskedBits;
+
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+ }
+
+ OldCopyOffset = ncrush->OffsetCache[OffsetCacheIndex];
+ ncrush->OffsetCache[OffsetCacheIndex] = ncrush->OffsetCache[0];
+ ncrush->OffsetCache[0] = OldCopyOffset;
+ }
+ else
+ {
+ if (CopyOffsetIndex >= ARRAYSIZE(CopyOffsetBitsLUT))
+ return -1;
+
+ CopyOffsetBits = CopyOffsetBitsLUT[CopyOffsetIndex];
+
+ if (CopyOffsetIndex >= ARRAYSIZE(CopyOffsetBaseLUT))
+ return -1;
+ CopyOffsetBase = CopyOffsetBaseLUT[CopyOffsetIndex];
+ CopyOffset = CopyOffsetBase - 1;
+
+ if (CopyOffsetBits)
+ {
+ const size_t idx = (2ull * CopyOffsetBits) + 3ull;
+ if (idx >= ARRAYSIZE(HuffTableMask))
+ return -1;
+
+ {
+ const UINT16 Mask = get_word(&HuffTableMask[idx]);
+ const UINT32 MaskedBits = bits & Mask;
+ const UINT32 tmp = CopyOffsetBase + MaskedBits;
+ if (tmp < 1)
+ return -1;
+ CopyOffset = tmp - 1;
+ }
+ bits >>= CopyOffsetBits;
+ nbits -= CopyOffsetBits;
+
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+ }
+ {
+ const UINT16 Mask = get_word(&HuffTableMask[21]);
+ const UINT32 MaskedBits = bits & Mask;
+ if (MaskedBits >= ARRAYSIZE(HuffTableLOM))
+ return -1;
+
+ LengthOfMatch = HuffTableLOM[MaskedBits] & 0xFFF;
+ BitLength = HuffTableLOM[MaskedBits] >> 12;
+ bits >>= BitLength;
+ nbits -= BitLength;
+ }
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+
+ if (LengthOfMatch >= ARRAYSIZE(LOMBitsLUT))
+ return -1;
+
+ LengthOfMatchBits = LOMBitsLUT[LengthOfMatch];
+
+ if (LengthOfMatch >= ARRAYSIZE(LOMBaseLUT))
+ return -1;
+ LengthOfMatchBase = LOMBaseLUT[LengthOfMatch];
+
+ if (LengthOfMatchBits)
+ {
+ const size_t idx = (2ull * LengthOfMatchBits) + 3ull;
+ if (idx >= ARRAYSIZE(HuffTableMask))
+ return -1;
+
+ const UINT16 Mask = get_word(&HuffTableMask[idx]);
+ const UINT32 MaskedBits = bits & Mask;
+ bits >>= LengthOfMatchBits;
+ nbits -= LengthOfMatchBits;
+ LengthOfMatchBase += MaskedBits;
+
+ if (!NCrushFetchBits(&SrcPtr, &SrcEnd, &nbits, &bits))
+ return -1;
+ }
+
+ ncrush->OffsetCache[3] = ncrush->OffsetCache[2];
+ ncrush->OffsetCache[2] = ncrush->OffsetCache[1];
+ ncrush->OffsetCache[1] = ncrush->OffsetCache[0];
+ ncrush->OffsetCache[0] = CopyOffset;
+ }
+
+ CopyOffsetPtr = &HistoryBuffer[(HistoryPtr - HistoryBuffer - CopyOffset) & 0xFFFF];
+ LengthOfMatch = LengthOfMatchBase;
+
+ if (LengthOfMatch < 2)
+ return -1005;
+
+ if ((CopyOffsetPtr >= (HistoryBufferEnd - LengthOfMatch)) ||
+ (HistoryPtr >= (HistoryBufferEnd - LengthOfMatch)))
+ return -1006;
+
+ CopyOffsetPtr = HistoryPtr - CopyOffset;
+ index = 0;
+ CopyLength = (LengthOfMatch > CopyOffset) ? CopyOffset : LengthOfMatch;
+
+ if (CopyOffsetPtr >= HistoryBuffer)
+ {
+ while (CopyLength > 0)
+ {
+ *HistoryPtr++ = *CopyOffsetPtr++;
+ CopyLength--;
+ }
+
+ while (LengthOfMatch > CopyOffset)
+ {
+ index = ((index >= CopyOffset)) ? 0 : index;
+ *HistoryPtr++ = *(CopyOffsetPtr + index++);
+ LengthOfMatch--;
+ }
+ }
+ else
+ {
+ CopyOffsetPtr = HistoryBufferEnd - (CopyOffset - (HistoryPtr - HistoryBuffer));
+ CopyOffsetPtr++;
+
+ while (CopyLength && (CopyOffsetPtr <= HistoryBufferEnd))
+ {
+ *HistoryPtr++ = *CopyOffsetPtr++;
+ CopyLength--;
+ }
+
+ CopyOffsetPtr = HistoryBuffer;
+
+ while (LengthOfMatch > CopyOffset)
+ {
+ index = ((index >= CopyOffset)) ? 0 : index;
+ *HistoryPtr++ = *(CopyOffsetPtr + index++);
+ LengthOfMatch--;
+ }
+ }
+
+ LengthOfMatch = LengthOfMatchBase;
+
+ if (LengthOfMatch == 2)
+ continue;
+ }
+
+ if (IndexLEC != 256)
+ return -1;
+
+ if (ncrush->HistoryBufferFence != 0xABABABAB)
+ {
+ WLog_ERR(TAG, "NCrushDecompress: history buffer fence was overwritten, potential buffer "
+ "overflow detected!");
+ return -1007;
+ }
+
+ const intptr_t hsize = HistoryPtr - ncrush->HistoryPtr;
+ WINPR_ASSERT(hsize >= 0);
+ WINPR_ASSERT(hsize <= UINT32_MAX);
+ *pDstSize = (UINT32)hsize;
+ *ppDstData = ncrush->HistoryPtr;
+ ncrush->HistoryPtr = HistoryPtr;
+ return 1;
+}
+
+static int ncrush_hash_table_add(NCRUSH_CONTEXT* ncrush, const BYTE* pSrcData, UINT32 SrcSize,
+ UINT32 HistoryOffset)
+{
+ const BYTE* SrcPtr = pSrcData;
+ UINT32 Hash = 0;
+ UINT32 Offset = HistoryOffset;
+ UINT32 EndOffset = Offset + SrcSize - 8;
+
+ WINPR_ASSERT(ncrush);
+ WINPR_ASSERT(pSrcData);
+ WINPR_ASSERT(Offset + SrcSize >= 8);
+
+ while (Offset < EndOffset)
+ {
+ Hash = ncrush->HashTable[get_word(SrcPtr)];
+ ncrush->HashTable[get_word(SrcPtr)] = Offset;
+ ncrush->MatchTable[Offset] = Hash;
+ SrcPtr++;
+ Offset++;
+ }
+
+ return 1;
+}
+
+static int ncrush_find_match_length(const BYTE* Ptr1, const BYTE* Ptr2, BYTE* HistoryPtr)
+{
+ BYTE val1 = 0;
+ BYTE val2 = 0;
+ const BYTE* Ptr = Ptr1;
+
+ WINPR_ASSERT(Ptr1);
+ WINPR_ASSERT(Ptr2);
+ WINPR_ASSERT(HistoryPtr);
+
+ do
+ {
+ if (Ptr1 > HistoryPtr)
+ break;
+
+ val1 = *Ptr1++;
+ val2 = *Ptr2++;
+ } while (val1 == val2);
+
+ const intptr_t psize = Ptr1 - (Ptr + 1);
+ WINPR_ASSERT(psize <= INT_MAX);
+ WINPR_ASSERT(psize >= -INT_MAX);
+ return (int)psize;
+}
+
+static int ncrush_find_best_match(NCRUSH_CONTEXT* ncrush, UINT16 HistoryOffset,
+ UINT32* pMatchOffset)
+{
+ int Length = 0;
+ int MatchLength = 0;
+ BYTE* MatchPtr = NULL;
+ UINT16 Offset = 0;
+ UINT16 NextOffset = 0;
+ UINT16 MatchOffset = 0;
+ BYTE* HistoryBuffer = NULL;
+
+ WINPR_ASSERT(ncrush);
+ WINPR_ASSERT(pMatchOffset);
+
+ if (!ncrush->MatchTable[HistoryOffset])
+ return -1;
+
+ MatchLength = 2;
+ Offset = HistoryOffset;
+ HistoryBuffer = (BYTE*)ncrush->HistoryBuffer;
+ ncrush->MatchTable[0] = HistoryOffset;
+ MatchOffset = ncrush->MatchTable[HistoryOffset];
+ NextOffset = ncrush->MatchTable[Offset];
+ MatchPtr = &HistoryBuffer[MatchLength];
+
+ for (int i = 0; i < 4; i++)
+ {
+ int j = -1;
+
+ if (j < 0)
+ {
+ Offset = ncrush->MatchTable[NextOffset];
+
+ if (MatchPtr[NextOffset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 0;
+ }
+
+ if (j < 0)
+ {
+ NextOffset = ncrush->MatchTable[Offset];
+
+ if (MatchPtr[Offset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 1;
+ }
+
+ if (j < 0)
+ {
+ Offset = ncrush->MatchTable[NextOffset];
+
+ if (MatchPtr[NextOffset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 2;
+ }
+
+ if (j < 0)
+ {
+ NextOffset = ncrush->MatchTable[Offset];
+
+ if (MatchPtr[Offset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 3;
+ }
+
+ if (j < 0)
+ {
+ Offset = ncrush->MatchTable[NextOffset];
+
+ if (MatchPtr[NextOffset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 4;
+ }
+
+ if (j < 0)
+ {
+ NextOffset = ncrush->MatchTable[Offset];
+
+ if (MatchPtr[Offset] == HistoryBuffer[HistoryOffset + MatchLength])
+ j = 5;
+ }
+
+ if (j >= 0)
+ {
+ if ((j % 2) == 0)
+ Offset = NextOffset;
+
+ if ((Offset != HistoryOffset) && Offset)
+ {
+ Length = ncrush_find_match_length(&HistoryBuffer[HistoryOffset + 2],
+ &HistoryBuffer[Offset + 2], ncrush->HistoryPtr) +
+ 2;
+
+ if (Length < 2)
+ return -1;
+
+ if (Length > 16)
+ break;
+
+ if (Length > MatchLength)
+ {
+ MatchLength = Length;
+ MatchOffset = Offset;
+ }
+
+ if ((Length <= MatchLength) ||
+ (&HistoryBuffer[HistoryOffset + 2] < ncrush->HistoryPtr))
+ {
+ NextOffset = ncrush->MatchTable[Offset];
+ MatchPtr = &HistoryBuffer[MatchLength];
+ continue;
+ }
+ }
+
+ break;
+ }
+ }
+
+ ncrush->MatchTable[0] = 0;
+ *pMatchOffset = MatchOffset;
+ return MatchLength;
+}
+
+static int ncrush_move_encoder_windows(NCRUSH_CONTEXT* ncrush, BYTE* HistoryPtr)
+{
+ int NewHash = 0;
+ int NewMatch = 0;
+ UINT32 HistoryOffset = 0;
+
+ WINPR_ASSERT(ncrush);
+ WINPR_ASSERT(HistoryPtr);
+
+ if (HistoryPtr < &ncrush->HistoryBuffer[32768])
+ return -1;
+
+ if (HistoryPtr > &ncrush->HistoryBuffer[65536])
+ return -1;
+
+ MoveMemory(ncrush->HistoryBuffer, HistoryPtr - 32768, 32768);
+ const intptr_t hsize = HistoryPtr - 32768 - ncrush->HistoryBuffer;
+ WINPR_ASSERT(hsize <= UINT32_MAX);
+ WINPR_ASSERT(hsize >= 0);
+ HistoryOffset = (UINT32)hsize;
+
+ for (int i = 0; i < 65536; i += 4)
+ {
+ NewHash = ncrush->HashTable[i + 0] - HistoryOffset;
+ ncrush->HashTable[i + 0] = (NewHash <= 0) ? 0 : NewHash;
+ NewHash = ncrush->HashTable[i + 1] - HistoryOffset;
+ ncrush->HashTable[i + 1] = (NewHash <= 0) ? 0 : NewHash;
+ NewHash = ncrush->HashTable[i + 2] - HistoryOffset;
+ ncrush->HashTable[i + 2] = (NewHash <= 0) ? 0 : NewHash;
+ NewHash = ncrush->HashTable[i + 3] - HistoryOffset;
+ ncrush->HashTable[i + 3] = (NewHash <= 0) ? 0 : NewHash;
+ }
+
+ for (int j = 0; j < 32768; j += 4)
+ {
+ NewMatch = ncrush->MatchTable[HistoryOffset + j + 0] - HistoryOffset;
+ ncrush->MatchTable[j + 0] = (NewMatch <= 0) ? 0 : NewMatch;
+ NewMatch = ncrush->MatchTable[HistoryOffset + j + 1] - HistoryOffset;
+ ncrush->MatchTable[j + 1] = (NewMatch <= 0) ? 0 : NewMatch;
+ NewMatch = ncrush->MatchTable[HistoryOffset + j + 2] - HistoryOffset;
+ ncrush->MatchTable[j + 2] = (NewMatch <= 0) ? 0 : NewMatch;
+ NewMatch = ncrush->MatchTable[HistoryOffset + j + 3] - HistoryOffset;
+ ncrush->MatchTable[j + 3] = (NewMatch <= 0) ? 0 : NewMatch;
+ }
+
+ ZeroMemory(&ncrush->MatchTable[32768], 65536);
+ return 1;
+}
+
+int ncrush_compress(NCRUSH_CONTEXT* ncrush, const BYTE* pSrcData, UINT32 SrcSize, BYTE* pDstBuffer,
+ const BYTE** ppDstData, UINT32* pDstSize, UINT32* pFlags)
+{
+ BYTE Literal = 0;
+ const BYTE* SrcPtr = NULL;
+ BYTE* DstPtr = NULL;
+ UINT32 bits = 0;
+ UINT32 offset = 0;
+ UINT16 Mask = 0;
+ UINT32 MaskedBits = 0;
+ UINT32 accumulator = 0;
+ const BYTE* SrcEndPtr = NULL;
+ BYTE* DstEndPtr = NULL;
+ BYTE* HistoryPtr = NULL;
+ BYTE* pDstData = NULL;
+ UINT32 DstSize = 0;
+ BOOL PacketAtFront = FALSE;
+ BOOL PacketFlushed = FALSE;
+ UINT32 MatchLength = 0;
+ UINT32 IndexLEC = 0;
+ UINT32 IndexLOM = 0;
+ UINT32 IndexCO = 0;
+ UINT32 CodeLEC = 0;
+ UINT32 BitLength = 0;
+ UINT32 CopyOffset = 0;
+ UINT32 MatchOffset = 0;
+ UINT32 OldCopyOffset = 0;
+ UINT32* OffsetCache = NULL;
+ UINT32 OffsetCacheIndex = 0;
+ UINT32 HistoryOffset = 0;
+ BYTE* HistoryBuffer = NULL;
+ UINT32 HistoryBufferSize = 0;
+ BYTE* HistoryBufferEndPtr = NULL;
+ UINT32 CopyOffsetIndex = 0;
+ UINT32 CopyOffsetBits = 0;
+ UINT32 CompressionLevel = 2;
+
+ WINPR_ASSERT(ncrush);
+
+ WINPR_ASSERT(ncrush);
+ WINPR_ASSERT(pSrcData);
+ WINPR_ASSERT(pDstBuffer);
+ WINPR_ASSERT(ppDstData);
+ WINPR_ASSERT(pDstSize);
+ WINPR_ASSERT(pFlags);
+
+ HistoryBuffer = ncrush->HistoryBuffer;
+ *pFlags = 0;
+
+ if ((SrcSize + ncrush->HistoryOffset) >= 65529)
+ {
+ if (ncrush->HistoryOffset == (ncrush->HistoryBufferSize + 1))
+ {
+ ncrush->HistoryOffset = 0;
+ ncrush->HistoryPtr = HistoryBuffer;
+ PacketFlushed = TRUE;
+ }
+ else
+ {
+ if (ncrush_move_encoder_windows(ncrush, &(HistoryBuffer[ncrush->HistoryOffset])) < 0)
+ return -1001;
+
+ ncrush->HistoryPtr = &HistoryBuffer[32768];
+ ncrush->HistoryOffset = 32768;
+ PacketAtFront = TRUE;
+ }
+ }
+ else
+ {
+ *pFlags = 0;
+ }
+
+ pDstData = pDstBuffer;
+ *ppDstData = pDstBuffer;
+
+ if (!pDstData)
+ return -1002;
+
+ DstSize = *pDstSize;
+
+ if (DstSize < SrcSize)
+ return -1003;
+
+ DstSize = SrcSize;
+ NCrushWriteStart(&bits, &offset, &accumulator);
+ DstPtr = pDstData;
+ SrcPtr = pSrcData;
+ SrcEndPtr = &pSrcData[SrcSize];
+ DstEndPtr = &pDstData[DstSize - 1];
+ OffsetCache = ncrush->OffsetCache;
+ HistoryPtr = &HistoryBuffer[ncrush->HistoryOffset];
+ HistoryBufferEndPtr = &HistoryBuffer[65536];
+ HistoryBufferSize = ncrush->HistoryBufferSize;
+ CopyOffset = 0;
+ MatchOffset = 0;
+ const intptr_t thsize = HistoryPtr - HistoryBuffer;
+ WINPR_ASSERT(thsize >= 0);
+ WINPR_ASSERT(thsize <= UINT32_MAX);
+ ncrush_hash_table_add(ncrush, pSrcData, SrcSize, (UINT32)thsize);
+ CopyMemory(HistoryPtr, pSrcData, SrcSize);
+ ncrush->HistoryPtr = &HistoryPtr[SrcSize];
+
+ while (SrcPtr < (SrcEndPtr - 2))
+ {
+ MatchLength = 0;
+ const intptr_t hsize = HistoryPtr - HistoryBuffer;
+ WINPR_ASSERT(hsize <= UINT32_MAX);
+ WINPR_ASSERT(hsize >= 0);
+ HistoryOffset = (UINT32)hsize;
+
+ if (ncrush->HistoryPtr && (HistoryPtr > ncrush->HistoryPtr))
+ return -1;
+
+ if (HistoryOffset >= 65536)
+ return -1004;
+
+ if (ncrush->MatchTable[HistoryOffset])
+ {
+ int rc = 0;
+
+ MatchOffset = 0;
+ rc = ncrush_find_best_match(ncrush, HistoryOffset, &MatchOffset);
+
+ if (rc < 0)
+ return -1005;
+ MatchLength = (UINT32)rc;
+ }
+
+ if (MatchLength)
+ CopyOffset = (HistoryBufferSize - 1) & (HistoryPtr - &HistoryBuffer[MatchOffset]);
+
+ if ((MatchLength == 2) && (CopyOffset >= 64))
+ MatchLength = 0;
+
+ if (MatchLength == 0)
+ {
+ /* Literal */
+ Literal = *SrcPtr++;
+ HistoryPtr++;
+
+ if ((DstPtr + 2) > DstEndPtr) /* PACKET_FLUSH #1 */
+ {
+ ncrush_context_reset(ncrush, TRUE);
+ *pFlags = PACKET_FLUSHED;
+ *pFlags |= CompressionLevel;
+ *ppDstData = pSrcData;
+ *pDstSize = SrcSize;
+ return 1;
+ }
+
+ IndexLEC = Literal;
+ if (IndexLEC >= ARRAYSIZE(HuffLengthLEC))
+ return -1;
+ BitLength = HuffLengthLEC[IndexLEC];
+
+ if (IndexLEC * 2ull >= ARRAYSIZE(HuffCodeLEC))
+ return -1;
+ CodeLEC = get_word(&HuffCodeLEC[IndexLEC * 2]);
+
+ if (BitLength > 15)
+ return -1006;
+
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, CodeLEC, BitLength);
+ }
+ else
+ {
+ HistoryPtr += MatchLength;
+ SrcPtr += MatchLength;
+
+ if (!MatchLength)
+ return -1007;
+
+ if ((DstPtr + 8) > DstEndPtr) /* PACKET_FLUSH #2 */
+ {
+ ncrush_context_reset(ncrush, TRUE);
+ *pFlags = PACKET_FLUSHED;
+ *pFlags |= CompressionLevel;
+ *ppDstData = pSrcData;
+ *pDstSize = SrcSize;
+ return 1;
+ }
+
+ OffsetCacheIndex = 5;
+
+ if ((CopyOffset == OffsetCache[0]) || (CopyOffset == OffsetCache[1]) ||
+ (CopyOffset == OffsetCache[2]) || (CopyOffset == OffsetCache[3]))
+ {
+ if (CopyOffset == OffsetCache[3])
+ {
+ OldCopyOffset = OffsetCache[3];
+ OffsetCache[3] = OffsetCache[0];
+ OffsetCache[0] = OldCopyOffset;
+ OffsetCacheIndex = 3;
+ }
+ else
+ {
+ if (CopyOffset == OffsetCache[2])
+ {
+ OldCopyOffset = OffsetCache[2];
+ OffsetCache[2] = OffsetCache[0];
+ OffsetCache[0] = OldCopyOffset;
+ OffsetCacheIndex = 2;
+ }
+ else
+ {
+ if (CopyOffset == OffsetCache[1])
+ {
+ OldCopyOffset = OffsetCache[1];
+ OffsetCache[1] = OffsetCache[0];
+ OffsetCache[0] = OldCopyOffset;
+ OffsetCacheIndex = 1;
+ }
+ else
+ {
+ if (CopyOffset == OffsetCache[0])
+ {
+ OffsetCacheIndex = 0;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ OffsetCache[3] = OffsetCache[2];
+ OffsetCache[2] = OffsetCache[1];
+ OffsetCache[1] = OffsetCache[0];
+ OffsetCache[0] = CopyOffset;
+ }
+
+ if (OffsetCacheIndex >= 4)
+ {
+ /* CopyOffset not in OffsetCache */
+ if (CopyOffset >= 256)
+ bits = (CopyOffset >> 7) + 256;
+ else
+ bits = CopyOffset;
+
+ CopyOffsetIndex = ncrush->HuffTableCopyOffset[bits + 2];
+
+ if (CopyOffsetIndex >= ARRAYSIZE(CopyOffsetBitsLUT))
+ return -1;
+
+ CopyOffsetBits = CopyOffsetBitsLUT[CopyOffsetIndex];
+ IndexLEC = 257 + CopyOffsetIndex;
+ if (IndexLEC >= ARRAYSIZE(HuffLengthLEC))
+ return -1;
+ BitLength = HuffLengthLEC[IndexLEC];
+
+ if (IndexLEC * 2ull >= ARRAYSIZE(HuffCodeLEC))
+ return -1;
+ CodeLEC = get_word(&HuffCodeLEC[IndexLEC * 2]);
+
+ if (BitLength > 15)
+ return -1008;
+
+ if (CopyOffsetBits > 18)
+ return -1009;
+
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, CodeLEC, BitLength);
+ Mask = ((1 << CopyOffsetBits) - 1);
+ MaskedBits = CopyOffset & Mask;
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, MaskedBits, CopyOffsetBits);
+
+ if ((MatchLength - 2) >= 768)
+ IndexCO = 28;
+ else
+ IndexCO = ncrush->HuffTableLOM[MatchLength];
+
+ if (IndexCO >= ARRAYSIZE(HuffLengthLOM))
+ return -1;
+ BitLength = HuffLengthLOM[IndexCO];
+
+ if (IndexCO >= ARRAYSIZE(LOMBitsLUT))
+ return -1;
+ IndexLOM = LOMBitsLUT[IndexCO];
+
+ if (IndexCO >= ARRAYSIZE(HuffCodeLOM))
+ return -1;
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, HuffCodeLOM[IndexCO], BitLength);
+ Mask = ((1 << IndexLOM) - 1);
+ MaskedBits = (MatchLength - 2) & Mask;
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, MaskedBits, IndexLOM);
+
+ if (IndexCO >= ARRAYSIZE(LOMBaseLUT))
+ return -1;
+ if ((MaskedBits + LOMBaseLUT[IndexCO]) != MatchLength)
+ return -1010;
+ }
+ else
+ {
+ /* CopyOffset in OffsetCache */
+ IndexLEC = 289 + OffsetCacheIndex;
+ if (IndexLEC >= ARRAYSIZE(HuffLengthLEC))
+ return -1;
+ BitLength = HuffLengthLEC[IndexLEC];
+ if (IndexLEC * 2ull >= ARRAYSIZE(HuffCodeLEC))
+ return -1;
+ CodeLEC = get_word(&HuffCodeLEC[IndexLEC * 2]);
+
+ if (BitLength >= 15)
+ return -1011;
+
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, CodeLEC, BitLength);
+
+ if ((MatchLength - 2) >= 768)
+ IndexCO = 28;
+ else
+ IndexCO = ncrush->HuffTableLOM[MatchLength];
+
+ if (IndexCO >= ARRAYSIZE(HuffLengthLOM))
+ return -1;
+
+ BitLength = HuffLengthLOM[IndexCO];
+
+ if (IndexCO >= ARRAYSIZE(LOMBitsLUT))
+ return -1;
+ IndexLOM = LOMBitsLUT[IndexCO];
+
+ if (IndexCO >= ARRAYSIZE(HuffCodeLOM))
+ return -1;
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, HuffCodeLOM[IndexCO], BitLength);
+ Mask = ((1 << IndexLOM) - 1);
+ MaskedBits = (MatchLength - 2) & Mask;
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, MaskedBits, IndexLOM);
+
+ if (IndexCO >= ARRAYSIZE(LOMBaseLUT))
+ return -1;
+ if ((MaskedBits + LOMBaseLUT[IndexCO]) != MatchLength)
+ return -1012;
+ }
+ }
+
+ if (HistoryPtr >= HistoryBufferEndPtr)
+ return -1013;
+ }
+
+ while (SrcPtr < SrcEndPtr)
+ {
+ if ((DstPtr + 2) > DstEndPtr) /* PACKET_FLUSH #3 */
+ {
+ ncrush_context_reset(ncrush, TRUE);
+ *pFlags = PACKET_FLUSHED;
+ *pFlags |= CompressionLevel;
+ *ppDstData = pSrcData;
+ *pDstSize = SrcSize;
+ return 1;
+ }
+
+ Literal = *SrcPtr++;
+ HistoryPtr++;
+ IndexLEC = Literal;
+ if (IndexLEC >= ARRAYSIZE(HuffLengthLEC))
+ return -1;
+ if (IndexLEC * 2ull >= ARRAYSIZE(HuffCodeLEC))
+ return -1;
+ BitLength = HuffLengthLEC[IndexLEC];
+ CodeLEC = get_word(&HuffCodeLEC[IndexLEC * 2]);
+
+ if (BitLength > 15)
+ return -1014;
+
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, CodeLEC, BitLength);
+ }
+
+ if ((DstPtr + 4) >= DstEndPtr) /* PACKET_FLUSH #4 */
+ {
+ ncrush_context_reset(ncrush, TRUE);
+ *pFlags = PACKET_FLUSHED;
+ *pFlags |= CompressionLevel;
+ *ppDstData = pSrcData;
+ *pDstSize = SrcSize;
+ return 1;
+ }
+
+ IndexLEC = 256;
+ BitLength = HuffLengthLEC[IndexLEC];
+
+ if (BitLength > 15)
+ return -1015;
+
+ bits = get_word(&HuffCodeLEC[IndexLEC * 2]);
+ NCrushWriteBits(&DstPtr, &accumulator, &offset, bits, BitLength);
+ NCrushWriteFinish(&DstPtr, accumulator);
+ const intptr_t dsize = DstPtr - pDstData;
+ WINPR_ASSERT(dsize <= UINT32_MAX);
+ WINPR_ASSERT(dsize >= 0);
+ *pDstSize = (UINT32)dsize;
+
+ if (*pDstSize > SrcSize)
+ return -1016;
+
+ *pFlags |= PACKET_COMPRESSED;
+ *pFlags |= CompressionLevel;
+
+ if (PacketAtFront)
+ *pFlags |= PACKET_AT_FRONT;
+
+ if (PacketFlushed)
+ *pFlags |= PACKET_FLUSHED;
+
+ ncrush->HistoryOffset = HistoryPtr - HistoryBuffer;
+
+ if (ncrush->HistoryOffset >= ncrush->HistoryBufferSize)
+ return -1;
+
+ return 1;
+}
+
+static int ncrush_generate_tables(NCRUSH_CONTEXT* context)
+{
+ WINPR_ASSERT(context);
+ WINPR_ASSERT(28 < ARRAYSIZE(LOMBitsLUT));
+
+ UINT32 k = 0;
+ for (int i = 0; i < 28; i++)
+ {
+ for (int j = 0; j < 1 << LOMBitsLUT[i]; j++)
+ {
+ size_t l = (k++) + 2ull;
+ context->HuffTableLOM[l] = (int)i;
+ }
+ }
+
+ for (UINT32 k = 2; k < 4096; k++)
+ {
+ size_t i = 28;
+ if ((k - 2) < 768)
+ i = context->HuffTableLOM[k];
+
+ if (i >= ARRAYSIZE(LOMBitsLUT))
+ return -1;
+ if (i >= ARRAYSIZE(LOMBaseLUT))
+ return -1;
+
+ if (((((1 << LOMBitsLUT[i]) - 1) & (k - 2)) + LOMBaseLUT[i]) != k)
+ return -1;
+ }
+
+ k = 0;
+
+ for (int i = 0; i < 16; i++)
+ {
+ for (int j = 0; j < 1 << CopyOffsetBitsLUT[i]; j++)
+ {
+ size_t l = k++ + 2ull;
+ context->HuffTableCopyOffset[l] = i;
+ }
+ }
+
+ k /= 128;
+
+ for (int i = 16; i < 32; i++)
+ {
+ for (int j = 0; j < 1 << (CopyOffsetBitsLUT[i] - 7); j++)
+ {
+ size_t l = k++ + 2 + 256ull;
+ context->HuffTableCopyOffset[l] = i;
+ }
+ }
+
+ if ((k + 256) > 1024)
+ return -1;
+
+ return 1;
+}
+
+void ncrush_context_reset(NCRUSH_CONTEXT* ncrush, BOOL flush)
+{
+ WINPR_ASSERT(ncrush);
+
+ ZeroMemory(&(ncrush->HistoryBuffer), sizeof(ncrush->HistoryBuffer));
+ ZeroMemory(&(ncrush->OffsetCache), sizeof(ncrush->OffsetCache));
+ ZeroMemory(&(ncrush->MatchTable), sizeof(ncrush->MatchTable));
+ ZeroMemory(&(ncrush->HashTable), sizeof(ncrush->HashTable));
+
+ if (flush)
+ ncrush->HistoryOffset = ncrush->HistoryBufferSize + 1;
+ else
+ ncrush->HistoryOffset = 0;
+
+ ncrush->HistoryPtr = &(ncrush->HistoryBuffer[ncrush->HistoryOffset]);
+}
+
+NCRUSH_CONTEXT* ncrush_context_new(BOOL Compressor)
+{
+ NCRUSH_CONTEXT* ncrush = (NCRUSH_CONTEXT*)calloc(1, sizeof(NCRUSH_CONTEXT));
+
+ if (!ncrush)
+ goto fail;
+
+ ncrush->Compressor = Compressor;
+ ncrush->HistoryBufferSize = 65536;
+ ncrush->HistoryEndOffset = ncrush->HistoryBufferSize - 1;
+ ncrush->HistoryBufferFence = 0xABABABAB;
+ ncrush->HistoryOffset = 0;
+ ncrush->HistoryPtr = &(ncrush->HistoryBuffer[ncrush->HistoryOffset]);
+
+ if (ncrush_generate_tables(ncrush) < 0)
+ {
+ WLog_DBG(TAG, "ncrush_context_new: failed to initialize tables");
+ goto fail;
+ }
+
+ ncrush_context_reset(ncrush, FALSE);
+
+ return ncrush;
+fail:
+ ncrush_context_free(ncrush);
+ return NULL;
+}
+
+void ncrush_context_free(NCRUSH_CONTEXT* ncrush)
+{
+ free(ncrush);
+}