Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

453 lines
30 KiB

  1. /***************************************************************************
  2. Name : DECODER.C
  3. Comment : HDLC decoding routines
  4. Functions: (see Prototypes just below)
  5. Copyright (c) Microsoft Corp. 1991 1992 1993
  6. Revision Log
  7. Date Name Description
  8. -------- ----- ---------------------------------------------------------
  9. ***************************************************************************/
  10. #include "prep.h"
  11. #include "decoder.h"
  12. #include "debug.h"
  13. #include "glbproto.h"
  14. #define FILEID FILEID_DECODER
  15. extern BYTE CODEBASED DecLen[8][256], CODEBASED DecOut[8][256], CODEBASED DecWidth[8][256];
  16. USHORT SWECMEXP HDLC_Decode(PThrdGlbl pTG, LPBYTE lpbSrc, USHORT cbSrc, LPBYTE lpbDst, USHORT far* lpcbDst, LPDECODESTATE lpState)
  17. {
  18. BYTE FlagAbort = lpState->flagabort != FALSE;
  19. #ifdef PORTABLE_CODE
  20. BYTE StateLen = lpState->len;
  21. BYTE StateWidth = lpState->dec_width;
  22. USHORT SrcSize;
  23. BYTE InByte;
  24. LPBYTE CurrentSrc = lpbSrc;
  25. LPBYTE CurrentDst = lpbDst;
  26. USHORT ProcessWord = (USHORT) lpState->carry; //carry-in at the start of each loop iteration
  27. BYTE TmpLen;
  28. USHORT ExitLoop = FALSE;
  29. #ifdef CLASS1_TEST_HOOKS
  30. BYTE TstlpbDst[512];
  31. DECODESTATE TstState;
  32. LPDECODESTATE TstlpState = &TstState;
  33. USHORT TstcbSrc;
  34. USHORT TstcbDst;
  35. USHORT *TstlpcbDst = &TstcbDst;
  36. USHORT i;
  37. USHORT BadFlag = FALSE;
  38. CurrentDst = TstlpbDst;
  39. #endif //CLASS1_TEST_HOOKS
  40. // Processes input bytes until flag, abort or idle or cbSrc
  41. // Returns number of bytes written to lpbDst in *lpcbDst
  42. // Return value is number of bytes read
  43. // Returns reason in lpState->flagabort
  44. for (SrcSize = cbSrc;((SrcSize > 0) && !ExitLoop); SrcSize--) {
  45. InByte = *CurrentSrc++;
  46. ProcessWord |= (((USHORT) DecOut[StateLen][InByte]) << StateWidth); //Processed Inbyte Leftshift width or carryin
  47. StateWidth += DecWidth[StateLen][InByte];
  48. TmpLen = DecLen[StateLen][InByte];
  49. if ( TmpLen < 8) { //Normal Case
  50. StateLen = TmpLen;
  51. if (StateWidth >= 8) {
  52. *CurrentDst++ = LOBYTE(ProcessWord);
  53. ProcessWord >>= 8;
  54. FlagAbort = 0;
  55. StateWidth -= 8;
  56. }
  57. }
  58. else { //GotFlagAbort
  59. ProcessWord = (USHORT) DecOut[StateLen][InByte];
  60. StateWidth = DecWidth[StateLen][InByte];
  61. StateLen = TmpLen & 0x3f;
  62. switch (TmpLen & 0xc0) {
  63. case 0x40:
  64. if (FlagAbort != ABORT) {
  65. FlagAbort = ABORT;
  66. ExitLoop = TRUE;
  67. }
  68. break;
  69. case 0x80:
  70. if (StateWidth > 8) {
  71. DebugBreak();
  72. // ERRMSG((SZMOD "<<ERROR>> AssertFailed in decoder.c\r\n"));
  73. BG_CHK(FALSE);
  74. }
  75. else {
  76. if (FlagAbort != FLAG) {
  77. FlagAbort = FLAG;
  78. ExitLoop = TRUE;
  79. }
  80. }
  81. break;
  82. default:
  83. // only time 0x40 and 0x80 are together is when inlen=7 and inbyte=0x7E.
  84. DebugBreak();
  85. // ERRMSG((SZMOD "<<ERROR>> AssertFailed in decoder.c\r\n"));
  86. BG_CHK(FALSE);
  87. break;
  88. }
  89. }
  90. }
  91. #ifdef CLASS1_TEST_HOOKS
  92. TstlpState->carry = LOBYTE(ProcessWord);
  93. TstlpState->dec_width = StateWidth;
  94. TstlpState->len = StateLen;
  95. TstlpState->flagabort = FlagAbort;
  96. *TstlpcbDst = CurrentDst - TstlpbDst;
  97. TstcbSrc = CurrentSrc - lpbSrc;
  98. #else
  99. lpState->carry = LOBYTE(ProcessWord);
  100. lpState->dec_width = StateWidth;
  101. lpState->len = StateLen;
  102. lpState->flagabort = FlagAbort;
  103. *lpcbDst = (USHORT)(CurrentDst - lpbDst);
  104. cbSrc = (USHORT)(CurrentSrc - lpbSrc);
  105. #endif
  106. #endif //PORTABLE_CODE
  107. #ifdef CLASS1_TEST_HOOKS
  108. for (i = 0; (i < *lpcbDst) && !BadFlag; i++) {
  109. if (lpbDst[i] != TstlpbDst[i]) {
  110. BadFlag = TRUE;
  111. }
  112. }
  113. if (BadFlag || (cbSrc != TstcbSrc) || (*TstlpcbDst != *lpcbDst) || (lpState->carry != TstlpState->carry) || (lpState->len != TstlpState->len) ||
  114. (lpState->dec_width != TstlpState->dec_width) || lpState->flagabort != TstlpState->flagabort ){
  115. ERRORMSG(("HDLC_Decode: Assembly Decode != C Decode\n"));
  116. DebugBreak();
  117. }
  118. #endif //CLASS1_TEST_HOOKS
  119. return cbSrc;
  120. #if !defined(PORTABLE_CODE) || defined(CLASS1_TEST_HOOKS)
  121. AssertFail:
  122. #ifndef WIN32
  123. _asm pop ds
  124. #endif
  125. _asm int 3
  126. // ERRMSG((SZMOD "<<ERROR>> AssertFailed in decoder.c\r\n"));
  127. BG_CHK(FALSE);
  128. #endif // !defined(PORTABLE_CODE) || defined(CLASS1_TEST_HOOKS)
  129. }
  130. BYTE CODEBASED DecLen[8][256] = {
  131. // Input Len = 0
  132. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  133. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
  134. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  135. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64,
  136. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  137. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 129,
  138. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  139. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 71 },
  140. // Input Len = 1
  141. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
  142. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
  143. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
  144. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64,
  145. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 129,
  146. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 65,
  147. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 130,
  148. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 71 },
  149. // Input Len = 2
  150. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
  151. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
  152. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
  153. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64,
  154. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 65,
  155. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 65,
  156. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 130, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 66,
  157. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 131, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 71 },
  158. // Input Len = 3
  159. {0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64,
  160. 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64,
  161. 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64,
  162. 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 128, 64,
  163. 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 65, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 65,
  164. 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 65, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 65,
  165. 2, 2, 2, 2, 2, 2, 2, 130, 2, 2, 2, 2, 2, 2, 2, 66, 2, 2, 2, 2, 2, 2, 2, 130, 2, 2, 2, 2, 2, 2, 2, 66,
  166. 3, 3, 3, 3, 3, 3, 3, 131, 3, 3, 3, 3, 3, 3, 3, 67, 4, 4, 4, 4, 4, 4, 4, 132, 5, 5, 5, 5, 6, 6, 7, 71 },
  167. // Input Len = 4
  168. {0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64,
  169. 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64,
  170. 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64,
  171. 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 0, 64, 0, 0, 0, 128, 0, 0, 128, 64,
  172. 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65,
  173. 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65, 1, 1, 1, 129, 1, 1, 1, 65,
  174. 2, 2, 2, 130, 2, 2, 2, 66, 2, 2, 2, 130, 2, 2, 2, 66, 2, 2, 2, 130, 2, 2, 2, 66, 2, 2, 2, 130, 2, 2, 2, 66,
  175. 3, 3, 3, 131, 3, 3, 3, 67, 3, 3, 3, 131, 3, 3, 3, 67, 4, 4, 4, 132, 4, 4, 4, 68, 5, 5, 5, 133, 6, 6, 7, 71 },
  176. // Input Len = 5
  177. {0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64,
  178. 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64,
  179. 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64,
  180. 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 0, 64, 0, 128, 128, 64,
  181. 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65,
  182. 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65, 1, 129, 1, 65,
  183. 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66, 2, 130, 2, 66,
  184. 3, 131, 3, 67, 3, 131, 3, 67, 3, 131, 3, 67, 3, 131, 3, 67, 4, 132, 4, 68, 4, 132, 4, 68, 5, 133, 5, 69, 6, 134, 7, 71 },
  185. // Input Len = 6
  186. {128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64,
  187. 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64,
  188. 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64,
  189. 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64, 128, 64,
  190. 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65,
  191. 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65, 129, 65,
  192. 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66, 130, 66,
  193. 131, 67, 131, 67, 131, 67, 131, 67, 131, 67, 131, 67, 131, 67, 131, 67, 132, 68, 132, 68, 132, 68, 132, 68, 133, 69, 133, 69, 134, 70, 135, 71 },
  194. // Input Len = 7
  195. {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
  196. 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
  197. 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
  198. 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
  199. 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
  200. 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
  201. 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
  202. 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 70, 70, 71, 71 }
  203. }; // Len
  204. BYTE CODEBASED DecOut[8][256] = {
  205. // Input Len = 0
  206. {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  207. 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
  208. 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
  209. 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x00,
  210. 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
  211. 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x3f,
  212. 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
  213. 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x00,
  214. 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
  215. 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x5f,
  216. 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
  217. 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x7e, 0x01,
  218. 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
  219. 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x7f,
  220. 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
  221. 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00 },
  222. // Input Len = 1
  223. {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
  224. 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x00,
  225. 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x1f,
  226. 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x00,
  227. 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x2f,
  228. 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x01,
  229. 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x3f,
  230. 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x00,
  231. 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x4f,
  232. 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x02,
  233. 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0x5f,
  234. 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x7e, 0x02,
  235. 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0x6f,
  236. 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x03,
  237. 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0x7f,
  238. 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00 },
  239. // Input Len = 2
  240. {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x00,
  241. 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x0f, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x00,
  242. 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x17, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x01,
  243. 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x1f, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x00,
  244. 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x27, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x02,
  245. 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x2f, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x02,
  246. 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x37, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x03,
  247. 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x3f, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x00,
  248. 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x47, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x04,
  249. 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x4f, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x04,
  250. 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x57, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0x05,
  251. 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0x5f, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0x7e, 0x02,
  252. 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x67, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0x06,
  253. 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x6f, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x06,
  254. 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x77, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0x07,
  255. 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x7f, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00 },
  256. // Input Len = 3
  257. {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x08, 0x09, 0x0a, 0x07, 0x0c, 0x0d, 0x0e, 0x00,
  258. 0x10, 0x11, 0x12, 0x0b, 0x14, 0x15, 0x16, 0x01, 0x18, 0x19, 0x1a, 0x0f, 0x1c, 0x1d, 0x1e, 0x00,
  259. 0x20, 0x21, 0x22, 0x13, 0x24, 0x25, 0x26, 0x02, 0x28, 0x29, 0x2a, 0x17, 0x2c, 0x2d, 0x2e, 0x02,
  260. 0x30, 0x31, 0x32, 0x1b, 0x34, 0x35, 0x36, 0x03, 0x38, 0x39, 0x3a, 0x1f, 0x3c, 0x3d, 0x3e, 0x00,
  261. 0x40, 0x41, 0x42, 0x23, 0x44, 0x45, 0x46, 0x04, 0x48, 0x49, 0x4a, 0x27, 0x4c, 0x4d, 0x4e, 0x04,
  262. 0x50, 0x51, 0x52, 0x2b, 0x54, 0x55, 0x56, 0x05, 0x58, 0x59, 0x5a, 0x2f, 0x5c, 0x5d, 0x5e, 0x02,
  263. 0x60, 0x61, 0x62, 0x33, 0x64, 0x65, 0x66, 0x06, 0x68, 0x69, 0x6a, 0x37, 0x6c, 0x6d, 0x6e, 0x06,
  264. 0x70, 0x71, 0x72, 0x3b, 0x74, 0x75, 0x76, 0x07, 0x78, 0x79, 0x7a, 0x3f, 0x7c, 0x7d, 0x00, 0x00,
  265. 0x80, 0x81, 0x82, 0x43, 0x84, 0x85, 0x86, 0x08, 0x88, 0x89, 0x8a, 0x47, 0x8c, 0x8d, 0x8e, 0x08,
  266. 0x90, 0x91, 0x92, 0x4b, 0x94, 0x95, 0x96, 0x09, 0x98, 0x99, 0x9a, 0x4f, 0x9c, 0x9d, 0x9e, 0x04,
  267. 0xa0, 0xa1, 0xa2, 0x53, 0xa4, 0xa5, 0xa6, 0x0a, 0xa8, 0xa9, 0xaa, 0x57, 0xac, 0xad, 0xae, 0x0a,
  268. 0xb0, 0xb1, 0xb2, 0x5b, 0xb4, 0xb5, 0xb6, 0x0b, 0xb8, 0xb9, 0xba, 0x5f, 0xbc, 0xbd, 0x7e, 0x02,
  269. 0xc0, 0xc1, 0xc2, 0x63, 0xc4, 0xc5, 0xc6, 0x0c, 0xc8, 0xc9, 0xca, 0x67, 0xcc, 0xcd, 0xce, 0x0c,
  270. 0xd0, 0xd1, 0xd2, 0x6b, 0xd4, 0xd5, 0xd6, 0x0d, 0xd8, 0xd9, 0xda, 0x6f, 0xdc, 0xdd, 0xde, 0x06,
  271. 0xe0, 0xe1, 0xe2, 0x73, 0xe4, 0xe5, 0xe6, 0x0e, 0xe8, 0xe9, 0xea, 0x77, 0xec, 0xed, 0xee, 0x0e,
  272. 0xf0, 0xf1, 0xf2, 0x7b, 0xf4, 0xf5, 0xf6, 0x0f, 0xf8, 0xf9, 0xfa, 0x7f, 0xfc, 0xfd, 0xfe, 0x00 },
  273. // Input Len = 4
  274. {0x00, 0x01, 0x02, 0x00, 0x04, 0x03, 0x06, 0x00, 0x08, 0x05, 0x0a, 0x01, 0x0c, 0x07, 0x0e, 0x00,
  275. 0x10, 0x09, 0x12, 0x02, 0x14, 0x0b, 0x16, 0x02, 0x18, 0x0d, 0x1a, 0x03, 0x1c, 0x0f, 0x1e, 0x00,
  276. 0x20, 0x11, 0x22, 0x04, 0x24, 0x13, 0x26, 0x04, 0x28, 0x15, 0x2a, 0x05, 0x2c, 0x17, 0x2e, 0x02,
  277. 0x30, 0x19, 0x32, 0x06, 0x34, 0x1b, 0x36, 0x06, 0x38, 0x1d, 0x3a, 0x07, 0x3c, 0x1f, 0x3e, 0x00,
  278. 0x40, 0x21, 0x42, 0x08, 0x44, 0x23, 0x46, 0x08, 0x48, 0x25, 0x4a, 0x09, 0x4c, 0x27, 0x4e, 0x04,
  279. 0x50, 0x29, 0x52, 0x0a, 0x54, 0x2b, 0x56, 0x0a, 0x58, 0x2d, 0x5a, 0x0b, 0x5c, 0x2f, 0x5e, 0x02,
  280. 0x60, 0x31, 0x62, 0x0c, 0x64, 0x33, 0x66, 0x0c, 0x68, 0x35, 0x6a, 0x0d, 0x6c, 0x37, 0x6e, 0x06,
  281. 0x70, 0x39, 0x72, 0x0e, 0x74, 0x3b, 0x76, 0x0e, 0x78, 0x3d, 0x7a, 0x0f, 0x7c, 0x3f, 0x00, 0x00,
  282. 0x80, 0x41, 0x82, 0x10, 0x84, 0x43, 0x86, 0x10, 0x88, 0x45, 0x8a, 0x11, 0x8c, 0x47, 0x8e, 0x08,
  283. 0x90, 0x49, 0x92, 0x12, 0x94, 0x4b, 0x96, 0x12, 0x98, 0x4d, 0x9a, 0x13, 0x9c, 0x4f, 0x9e, 0x04,
  284. 0xa0, 0x51, 0xa2, 0x14, 0xa4, 0x53, 0xa6, 0x14, 0xa8, 0x55, 0xaa, 0x15, 0xac, 0x57, 0xae, 0x0a,
  285. 0xb0, 0x59, 0xb2, 0x16, 0xb4, 0x5b, 0xb6, 0x16, 0xb8, 0x5d, 0xba, 0x17, 0xbc, 0x5f, 0x7e, 0x02,
  286. 0xc0, 0x61, 0xc2, 0x18, 0xc4, 0x63, 0xc6, 0x18, 0xc8, 0x65, 0xca, 0x19, 0xcc, 0x67, 0xce, 0x0c,
  287. 0xd0, 0x69, 0xd2, 0x1a, 0xd4, 0x6b, 0xd6, 0x1a, 0xd8, 0x6d, 0xda, 0x1b, 0xdc, 0x6f, 0xde, 0x06,
  288. 0xe0, 0x71, 0xe2, 0x1c, 0xe4, 0x73, 0xe6, 0x1c, 0xe8, 0x75, 0xea, 0x1d, 0xec, 0x77, 0xee, 0x0e,
  289. 0xf0, 0x79, 0xf2, 0x1e, 0xf4, 0x7b, 0xf6, 0x1e, 0xf8, 0x7d, 0xfa, 0x1f, 0xfc, 0x7f, 0xfe, 0x00 },
  290. // Input Len = 5
  291. {0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00, 0x04, 0x02, 0x05, 0x02, 0x06, 0x03, 0x07, 0x00,
  292. 0x08, 0x04, 0x09, 0x04, 0x0a, 0x05, 0x0b, 0x02, 0x0c, 0x06, 0x0d, 0x06, 0x0e, 0x07, 0x0f, 0x00,
  293. 0x10, 0x08, 0x11, 0x08, 0x12, 0x09, 0x13, 0x04, 0x14, 0x0a, 0x15, 0x0a, 0x16, 0x0b, 0x17, 0x02,
  294. 0x18, 0x0c, 0x19, 0x0c, 0x1a, 0x0d, 0x1b, 0x06, 0x1c, 0x0e, 0x1d, 0x0e, 0x1e, 0x0f, 0x1f, 0x00,
  295. 0x20, 0x10, 0x21, 0x10, 0x22, 0x11, 0x23, 0x08, 0x24, 0x12, 0x25, 0x12, 0x26, 0x13, 0x27, 0x04,
  296. 0x28, 0x14, 0x29, 0x14, 0x2a, 0x15, 0x2b, 0x0a, 0x2c, 0x16, 0x2d, 0x16, 0x2e, 0x17, 0x2f, 0x02,
  297. 0x30, 0x18, 0x31, 0x18, 0x32, 0x19, 0x33, 0x0c, 0x34, 0x1a, 0x35, 0x1a, 0x36, 0x1b, 0x37, 0x06,
  298. 0x38, 0x1c, 0x39, 0x1c, 0x3a, 0x1d, 0x3b, 0x0e, 0x3c, 0x1e, 0x3d, 0x1e, 0x3e, 0x1f, 0x00, 0x00,
  299. 0x40, 0x20, 0x41, 0x20, 0x42, 0x21, 0x43, 0x10, 0x44, 0x22, 0x45, 0x22, 0x46, 0x23, 0x47, 0x08,
  300. 0x48, 0x24, 0x49, 0x24, 0x4a, 0x25, 0x4b, 0x12, 0x4c, 0x26, 0x4d, 0x26, 0x4e, 0x27, 0x4f, 0x04,
  301. 0x50, 0x28, 0x51, 0x28, 0x52, 0x29, 0x53, 0x14, 0x54, 0x2a, 0x55, 0x2a, 0x56, 0x2b, 0x57, 0x0a,
  302. 0x58, 0x2c, 0x59, 0x2c, 0x5a, 0x2d, 0x5b, 0x16, 0x5c, 0x2e, 0x5d, 0x2e, 0x5e, 0x2f, 0x3f, 0x02,
  303. 0x60, 0x30, 0x61, 0x30, 0x62, 0x31, 0x63, 0x18, 0x64, 0x32, 0x65, 0x32, 0x66, 0x33, 0x67, 0x0c,
  304. 0x68, 0x34, 0x69, 0x34, 0x6a, 0x35, 0x6b, 0x1a, 0x6c, 0x36, 0x6d, 0x36, 0x6e, 0x37, 0x6f, 0x06,
  305. 0x70, 0x38, 0x71, 0x38, 0x72, 0x39, 0x73, 0x1c, 0x74, 0x3a, 0x75, 0x3a, 0x76, 0x3b, 0x77, 0x0e,
  306. 0x78, 0x3c, 0x79, 0x3c, 0x7a, 0x3d, 0x7b, 0x1e, 0x7c, 0x3e, 0x7d, 0x3e, 0x7e, 0x3f, 0x7f, 0x00 },
  307. // Input Len = 6
  308. {0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x03, 0x00, 0x04, 0x04, 0x05, 0x02, 0x06, 0x06, 0x07, 0x00,
  309. 0x08, 0x08, 0x09, 0x04, 0x0a, 0x0a, 0x0b, 0x02, 0x0c, 0x0c, 0x0d, 0x06, 0x0e, 0x0e, 0x0f, 0x00,
  310. 0x10, 0x10, 0x11, 0x08, 0x12, 0x12, 0x13, 0x04, 0x14, 0x14, 0x15, 0x0a, 0x16, 0x16, 0x17, 0x02,
  311. 0x18, 0x18, 0x19, 0x0c, 0x1a, 0x1a, 0x1b, 0x06, 0x1c, 0x1c, 0x1d, 0x0e, 0x1e, 0x1e, 0x1f, 0x00,
  312. 0x20, 0x20, 0x21, 0x10, 0x22, 0x22, 0x23, 0x08, 0x24, 0x24, 0x25, 0x12, 0x26, 0x26, 0x27, 0x04,
  313. 0x28, 0x28, 0x29, 0x14, 0x2a, 0x2a, 0x2b, 0x0a, 0x2c, 0x2c, 0x2d, 0x16, 0x2e, 0x2e, 0x2f, 0x02,
  314. 0x30, 0x30, 0x31, 0x18, 0x32, 0x32, 0x33, 0x0c, 0x34, 0x34, 0x35, 0x1a, 0x36, 0x36, 0x37, 0x06,
  315. 0x38, 0x38, 0x39, 0x1c, 0x3a, 0x3a, 0x3b, 0x0e, 0x3c, 0x3c, 0x3d, 0x1e, 0x3e, 0x3e, 0x00, 0x00,
  316. 0x40, 0x40, 0x41, 0x20, 0x42, 0x42, 0x43, 0x10, 0x44, 0x44, 0x45, 0x22, 0x46, 0x46, 0x47, 0x08,
  317. 0x48, 0x48, 0x49, 0x24, 0x4a, 0x4a, 0x4b, 0x12, 0x4c, 0x4c, 0x4d, 0x26, 0x4e, 0x4e, 0x4f, 0x04,
  318. 0x50, 0x50, 0x51, 0x28, 0x52, 0x52, 0x53, 0x14, 0x54, 0x54, 0x55, 0x2a, 0x56, 0x56, 0x57, 0x0a,
  319. 0x58, 0x58, 0x59, 0x2c, 0x5a, 0x5a, 0x5b, 0x16, 0x5c, 0x5c, 0x5d, 0x2e, 0x5e, 0x5e, 0x3f, 0x02,
  320. 0x60, 0x60, 0x61, 0x30, 0x62, 0x62, 0x63, 0x18, 0x64, 0x64, 0x65, 0x32, 0x66, 0x66, 0x67, 0x0c,
  321. 0x68, 0x68, 0x69, 0x34, 0x6a, 0x6a, 0x6b, 0x1a, 0x6c, 0x6c, 0x6d, 0x36, 0x6e, 0x6e, 0x6f, 0x06,
  322. 0x70, 0x70, 0x71, 0x38, 0x72, 0x72, 0x73, 0x1c, 0x74, 0x74, 0x75, 0x3a, 0x76, 0x76, 0x77, 0x0e,
  323. 0x78, 0x78, 0x79, 0x3c, 0x7a, 0x7a, 0x7b, 0x1e, 0x7c, 0x7c, 0x7d, 0x3e, 0x7e, 0x7e, 0x7f, 0x00 },
  324. // Input Len = 7
  325. {0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x06, 0x00, 0x08, 0x04, 0x0a, 0x02, 0x0c, 0x06, 0x0e, 0x00,
  326. 0x10, 0x08, 0x12, 0x04, 0x14, 0x0a, 0x16, 0x02, 0x18, 0x0c, 0x1a, 0x06, 0x1c, 0x0e, 0x1e, 0x00,
  327. 0x20, 0x10, 0x22, 0x08, 0x24, 0x12, 0x26, 0x04, 0x28, 0x14, 0x2a, 0x0a, 0x2c, 0x16, 0x2e, 0x02,
  328. 0x30, 0x18, 0x32, 0x0c, 0x34, 0x1a, 0x36, 0x06, 0x38, 0x1c, 0x3a, 0x0e, 0x3c, 0x1e, 0x3e, 0x00,
  329. 0x40, 0x20, 0x42, 0x10, 0x44, 0x22, 0x46, 0x08, 0x48, 0x24, 0x4a, 0x12, 0x4c, 0x26, 0x4e, 0x04,
  330. 0x50, 0x28, 0x52, 0x14, 0x54, 0x2a, 0x56, 0x0a, 0x58, 0x2c, 0x5a, 0x16, 0x5c, 0x2e, 0x5e, 0x02,
  331. 0x60, 0x30, 0x62, 0x18, 0x64, 0x32, 0x66, 0x0c, 0x68, 0x34, 0x6a, 0x1a, 0x6c, 0x36, 0x6e, 0x06,
  332. 0x70, 0x38, 0x72, 0x1c, 0x74, 0x3a, 0x76, 0x0e, 0x78, 0x3c, 0x7a, 0x1e, 0x7c, 0x3e, 0x00, 0x00,
  333. 0x80, 0x40, 0x82, 0x20, 0x84, 0x42, 0x86, 0x10, 0x88, 0x44, 0x8a, 0x22, 0x8c, 0x46, 0x8e, 0x08,
  334. 0x90, 0x48, 0x92, 0x24, 0x94, 0x4a, 0x96, 0x12, 0x98, 0x4c, 0x9a, 0x26, 0x9c, 0x4e, 0x9e, 0x04,
  335. 0xa0, 0x50, 0xa2, 0x28, 0xa4, 0x52, 0xa6, 0x14, 0xa8, 0x54, 0xaa, 0x2a, 0xac, 0x56, 0xae, 0x0a,
  336. 0xb0, 0x58, 0xb2, 0x2c, 0xb4, 0x5a, 0xb6, 0x16, 0xb8, 0x5c, 0xba, 0x2e, 0xbc, 0x5e, 0x7e, 0x02,
  337. 0xc0, 0x60, 0xc2, 0x30, 0xc4, 0x62, 0xc6, 0x18, 0xc8, 0x64, 0xca, 0x32, 0xcc, 0x66, 0xce, 0x0c,
  338. 0xd0, 0x68, 0xd2, 0x34, 0xd4, 0x6a, 0xd6, 0x1a, 0xd8, 0x6c, 0xda, 0x36, 0xdc, 0x6e, 0xde, 0x06,
  339. 0xe0, 0x70, 0xe2, 0x38, 0xe4, 0x72, 0xe6, 0x1c, 0xe8, 0x74, 0xea, 0x3a, 0xec, 0x76, 0xee, 0x0e,
  340. 0xf0, 0x78, 0xf2, 0x3c, 0xf4, 0x7a, 0xf6, 0x1e, 0xf8, 0x7c, 0xfa, 0x3e, 0xfc, 0x7e, 0xfe, 0x00 }
  341. }; // End of Squeeze
  342. BYTE CODEBASED DecWidth[8][256] = {
  343. // Input Len = 0
  344. {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
  345. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 1,
  346. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
  347. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 0, 1,
  348. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
  349. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 1,
  350. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
  351. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0 },
  352. // Input Len = 1
  353. {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2,
  354. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 2,
  355. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2,
  356. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 0, 1,
  357. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2,
  358. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 2,
  359. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2,
  360. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0 },
  361. // Input Len = 2
  362. {8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3,
  363. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 7, 2,
  364. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3,
  365. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 7, 7, 0, 1,
  366. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3,
  367. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 7, 2,
  368. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3,
  369. 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 0 },
  370. // Input Len = 3
  371. {8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 3,
  372. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 7, 2,
  373. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 3,
  374. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 7, 7, 0, 1,
  375. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 3,
  376. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 7, 2,
  377. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 3,
  378. 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 4, 8, 8, 8, 7, 8, 8, 8, 0 },
  379. // Input Len = 4
  380. {8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 3,
  381. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 7, 2,
  382. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 3,
  383. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 7, 6, 0, 1,
  384. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 3,
  385. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 7, 2,
  386. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 3,
  387. 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 4, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 5, 8, 7, 8, 0 },
  388. // Input Len = 5
  389. {7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 3,
  390. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 6, 2,
  391. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 3,
  392. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 6, 5, 0, 1,
  393. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 3,
  394. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 6, 2,
  395. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 3,
  396. 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 4, 7, 6, 7, 6, 7, 6, 7, 5, 7, 6, 7, 6, 7, 6, 7, 0 },
  397. // Input Len = 6
  398. {7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 3,
  399. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 6, 2,
  400. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 3,
  401. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 6, 6, 0, 1,
  402. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 3,
  403. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 6, 2,
  404. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 3,
  405. 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 4, 7, 7, 7, 6, 7, 7, 7, 5, 7, 7, 7, 6, 7, 7, 7, 0 },
  406. // Input Len = 7
  407. {8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 3,
  408. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 7, 2,
  409. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 3,
  410. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 7, 6, 0, 1,
  411. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 3,
  412. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 7, 2,
  413. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 3,
  414. 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 4, 8, 7, 8, 6, 8, 7, 8, 5, 8, 7, 8, 6, 8, 7, 8, 0 }
  415. }; // width