68 {
69 ushort[]
array =
new ushort[3840];
72 int num = 0;
73 for (
int i = 0;
i <= 256;
i++)
74 {
75 uint num2 = array2[
i];
76 int num3 = encodingTableBitLengths[
i];
77 int num4 = 0;
78 int num5 = num3;
79 while (num5 > 0)
80 {
81 int num6 = (int)(num2 >> 24);
82 if (num5 <= 8)
83 {
84 int num7 = 1 << 8 - num5;
85 for (int j = 0; j < num7; j++)
86 {
87 if (i == 256)
88 {
89 array[(num4 << 8) + (num6 | j)] = 33023;
90 }
91 else
92 {
93 array[(num4 << 8) + (num6 | j)] = (ushort)((num5 << 8) |
i);
94 }
95 }
96 }
97 else
98 {
99 ushort num8 =
array[(num4 << 8) + num6];
100 if (num8 == 0)
101 {
102 num++;
103 array[(num4 << 8) + num6] = (ushort)((0x80 | num) << 8);
104 num4 = num;
105 }
106 else
107 {
108 num4 = (num8 & 0x7F00) >> 8;
109 }
110 }
111 num5 -= 8;
112 num2 <<= 8;
113 }
114 }
116 }
static readonly uint[] s_encodingTableCodes
static ReadOnlySpan< byte > EncodingTableBitLengths