Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GenerateDecodingLookupTree()

static ushort[] System.Net.Http.HPack.Huffman.GenerateDecodingLookupTree ( )
inlinestaticprivate

Definition at line 67 of file Huffman.cs.

68 {
69 ushort[] array = new ushort[3840];
70 uint[] array2 = s_encodingTableCodes;
71 ReadOnlySpan<byte> encodingTableBitLengths = EncodingTableBitLengths;
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 }
115 return array;
116 }
static readonly uint[] s_encodingTableCodes
Definition Huffman.cs:5
static ReadOnlySpan< byte > EncodingTableBitLengths
Definition Huffman.cs:37

References System.array, System.Net.Http.HPack.Huffman.EncodingTableBitLengths, and System.Net.Http.HPack.Huffman.s_encodingTableCodes.