178 {
179 string[] names = enumInfo.Names;
180 ulong[]
values = enumInfo.Values;
181 if (resultValue == 0
L)
182 {
184 {
185 return "0";
186 }
187 return names[0];
188 }
189 Span<int> span = stackalloc int[64];
190 int num;
191 for (num =
values.Length - 1; num >= 0; num--)
192 {
193 if (
values[num] == resultValue)
194 {
195 return names[num];
196 }
197 if (
values[num] < resultValue)
198 {
199 break;
200 }
201 }
202 int num2 = 0;
203 int num3 = 0;
204 while (num >= 0)
205 {
207 if (num == 0 && num4 == 0
L)
208 {
209 break;
210 }
211 if ((resultValue & num4) == num4)
212 {
213 resultValue -= num4;
214 span[num3++] = num;
215 num2 = checked(num2 + names[num].Length);
216 }
217 num--;
218 }
219 if (resultValue != 0
L)
220 {
221 return null;
222 }
223 string text =
string.FastAllocateString(checked(num2 + 2 * (num3 - 1)));
225 string text2 = names[span[--num3]];
228 while (--num3 >= 0)
229 {
233 text2 = names[span[num3]];
236 }
238 }