119 {
120 Span<byte> span = dstArray;
122 int num = 0;
123 uint num2 = 0u;
124 int num3 = 0;
125 int num4 = 0;
126 int num5 = 0;
128 {
129 num2 <<= 8;
130 num2 |= src[num4++];
131 num3 += 8;
132 do
133 {
134 int num6 = (byte)(num2 >> num3 - 8);
135 int num7 =
array[(num << 8) + num6];
136 if (num7 < 32768)
137 {
138 if (num5 == span.Length)
139 {
140 Array.Resize(ref dstArray, span.Length * 2);
141 span = dstArray;
142 }
143 span[num5++] = (byte)num7;
144 num = 0;
145 num3 -= num7 >> 8;
146 }
147 else
148 {
149 num = (num7 & 0x7F00) >> 8;
150 if (num == 0)
151 {
153 }
154 num3 -= 8;
155 }
156 }
157 while (num3 >= 8);
158 }
159 while (num3 > 0)
160 {
161 if (num == 0)
162 {
163 uint num8 = uint.MaxValue >> 32 - num3;
164 if ((num2 & num8) == num8)
165 {
166 break;
167 }
168 }
169 int num6 = (byte)(num2 << 8 - num3);
170 int num9 =
array[(num << 8) + num6];
171 if (num9 < 32768)
172 {
173 num3 -= num9 >> 8;
174 if (num3 < 0)
175 {
177 }
178 if (num5 == span.Length)
179 {
180 Array.Resize(ref dstArray, span.Length * 2);
181 span = dstArray;
182 }
183 span[num5++] = (byte)num9;
184 num = 0;
185 continue;
186 }
188 }
189 if (num != 0)
190 {
192 }
193 return num5;
194 }
static readonly ushort[] s_decodingTree
static string net_http_hpack_huffman_decode_failed