3395 {
3396 textUsedExponentNotation = false;
3398 {
3399 bytesConsumed = 0;
3400 return false;
3401 }
3402 Span<byte> digits = number.Digits;
3404 int num = 0;
3406 if (b != 43)
3407 {
3408 if (b != 45)
3409 {
3410 goto IL_0055;
3411 }
3412 number.IsNegative = true;
3413 }
3416 {
3417 bytesConsumed = 0;
3418 return false;
3419 }
3421 goto IL_0055;
3422 IL_02a0:
3423 if ((byte)(b - 48) > 9)
3424 {
3425 bytesConsumed = 0;
3426 return false;
3427 }
3429 {
3430 value = uint.MaxValue;
3431 for (i += 10;
i !=
source.Length;
i++)
3432 {
3434 int num2 = (byte)(b - 48);
3435 if (num2 > 9)
3436 {
3437 break;
3438 }
3439 }
3440 }
3441 i += bytesConsumed2;
3442 bool flag;
3443 if (flag)
3444 {
3445 if (number.Scale <
int.MinValue +
value)
3446 {
3447 number.Scale = int.MinValue;
3448 }
3449 else
3450 {
3451 number.Scale -= (int)
value;
3452 }
3453 }
3454 else if (number.Scale > 2147483647
L - (
long)
value)
3455 {
3456 number.Scale = int.MaxValue;
3457 }
3458 else
3459 {
3460 number.Scale += (int)
value;
3461 }
3462 digits[num] = 0;
3463 number.DigitsCount = num;
3465 return true;
3466 IL_0055:
3468 int num4 = 0;
3469 int num5 = digits.Length - 1;
3471 {
3473 if (b != 48)
3474 {
3475 break;
3476 }
3477 }
3479 {
3481 return true;
3482 }
3484 int num7 = 0;
3485 while (i !=
source.Length)
3486 {
3488 int num8 = (byte)(b - 48);
3489 if (num8 > 9)
3490 {
3491 break;
3492 }
3494 num4++;
3495 if (num4 >= num5)
3496 {
3497 num7 |= num8;
3498 }
3499 }
3500 number.HasNonZeroTail = num7 != 0;
3501 int num9 =
i - num3;
3502 int num10 =
i - num6;
3503 int num11 = Math.Min(num10, num5);
3504 source.Slice(num6, num11).CopyTo(digits);
3505 num = num11;
3506 number.Scale = num10;
3508 {
3509 digits[num] = 0;
3510 number.DigitsCount = num;
3512 return true;
3513 }
3514 int num12 = 0;
3515 if (b == 46)
3516 {
3519 while (i !=
source.Length)
3520 {
3522 int num14 = (byte)(b - 48);
3523 if (num14 > 9)
3524 {
3525 break;
3526 }
3528 num4++;
3529 if (num4 >= num5)
3530 {
3531 num7 |= num14;
3532 }
3533 }
3534 number.HasNonZeroTail = num7 != 0;
3536 int j = num13;
3537 if (num == 0)
3538 {
3539 for (; j <
i &&
source[j] == 48; j++)
3540 {
3541 number.Scale--;
3542 }
3543 }
3544 int num15 = Math.Min(i - j, num5 - num);
3545 source.Slice(j, num15).CopyTo(digits.Slice(num));
3546 num += num15;
3548 {
3549 if (num9 == 0 && num12 == 0)
3550 {
3551 bytesConsumed = 0;
3552 return false;
3553 }
3554 digits[num] = 0;
3555 number.DigitsCount = num;
3557 return true;
3558 }
3559 }
3560 if (num9 == 0 && num12 == 0)
3561 {
3562 bytesConsumed = 0;
3563 return false;
3564 }
3565 if ((b & -33) != 69)
3566 {
3567 digits[num] = 0;
3568 number.DigitsCount = num;
3570 return true;
3571 }
3572 textUsedExponentNotation = true;
3575 {
3576 bytesConsumed = 0;
3577 return false;
3578 }
3580 {
3581 bytesConsumed = 0;
3582 return false;
3583 }
3584 flag = false;
3586 if (b != 43)
3587 {
3588 if (b != 45)
3589 {
3590 goto IL_02a0;
3591 }
3592 flag = true;
3593 }
3596 {
3597 bytesConsumed = 0;
3598 return false;
3599 }
3601 goto IL_02a0;
3602 }
static bool TryParseUInt32D(ReadOnlySpan< byte > source, out uint value, out int bytesConsumed)