289 {
290 int num =
value.Length;
291 bool flag;
292 if (num > 0)
293 {
294 byte b = (isBigEndian ?
value[0] :
value[num - 1]);
295 flag = (b & 0x80u) != 0 && !isUnsigned;
296 if (b == 0)
297 {
298 if (isBigEndian)
299 {
301 for (i = 1;
i < num &&
value[
i] == 0;
i++)
302 {
303 }
306 }
307 else
308 {
309 num -= 2;
310 while (num >= 0 &&
value[num] == 0)
311 {
312 num--;
313 }
314 num++;
315 }
316 }
317 }
318 else
319 {
320 flag = false;
321 }
322 if (num == 0)
323 {
326 return;
327 }
328 if (num <= 4)
329 {
330 _sign = (flag ? (-1) : 0);
331 if (isBigEndian)
332 {
333 for (int j = 0; j < num; j++)
334 {
336 }
337 }
338 else
339 {
340 for (int num2 = num - 1; num2 >= 0; num2--)
341 {
343 }
344 }
346 if (
_sign < 0 && !flag)
347 {
350 }
351 if (
_sign ==
int.MinValue)
352 {
354 }
355 return;
356 }
357 int num3 = num % 4;
358 int num4 = num / 4 + ((num3 != 0) ? 1 : 0);
359 uint[]
array =
new uint[num4];
360 int num5 = num - 1;
361 int k;
362 if (isBigEndian)
363 {
364 int num6 = num - 4;
365 for (k = 0; k < num4 - ((num3 != 0) ? 1 : 0); k++)
366 {
367 for (int l = 0; l < 4; l++)
368 {
369 byte b2 =
value[num6];
371 num6++;
372 }
373 num6 -= 8;
374 }
375 }
376 else
377 {
378 int num6 = 3;
379 for (k = 0; k < num4 - ((num3 != 0) ? 1 : 0); k++)
380 {
381 for (int m = 0; m < 4; m++)
382 {
383 byte b3 =
value[num6];
385 num6--;
386 }
387 num6 += 8;
388 }
389 }
390 if (num3 != 0)
391 {
392 if (flag)
393 {
394 array[num4 - 1] = uint.MaxValue;
395 }
396 if (isBigEndian)
397 {
398 for (int num6 = 0; num6 < num3; num6++)
399 {
400 byte b4 =
value[num6];
402 }
403 }
404 else
405 {
406 for (int num6 = num5; num6 >= num - num3; num6--)
407 {
408 byte b5 =
value[num6];
410 }
411 }
412 }
413 if (flag)
414 {
415 NumericsHelpers.DangerousMakeTwosComplement(
array);
416 int num7 = array.Length - 1;
417 while (num7 >= 0 &&
array[num7] == 0)
418 {
419 num7--;
420 }
421 num7++;
422 if (num7 == 1)
423 {
425 {
426 case 1u:
428 return;
429 case 2147483648u:
431 return;
432 }
433 if ((
int)
array[0] > 0)
434 {
437 return;
438 }
439 }
440 if (num7 !=
array.Length)
441 {
443 _bits =
new uint[num7];
445 }
446 else
447 {
450 }
451 }
452 else
453 {
456 }
457 }
static readonly BigInteger s_bnMinusOneInt
static readonly BigInteger s_bnMinInt