1760 {
1762 int num2 = 0;
1763 while ((uint)num2 < (uint)
source.Length)
1764 {
1765 nuint num3 = (uint)(
source[num2] - 48);
1766 if ((uint)num3 > 9)
1767 {
1768 if (num2 != 0)
1769 {
1770 break;
1771 }
1772 num2++;
1773 if ((int)num3 == -3)
1774 {
1775 num--;
1776 }
1777 else if ((int)num3 != -5)
1778 {
1779 break;
1780 }
1781 continue;
1782 }
1783 ulong num4 = num3;
1784 int num5 = 19 + num2;
1785 num2++;
1786 if (
source.Length < num5)
1787 {
1788 for (; (uint)num2 < (uint)
source.Length; num2++)
1789 {
1790 nuint num6 = (uint)(
source[num2] - 48);
1791 if ((uint)num6 > 9)
1792 {
1793 break;
1794 }
1795 num4 = num4 * 10 + num6;
1796 }
1797 }
1798 else
1799 {
1800 while ((uint)num2 < (uint)
source.Length)
1801 {
1802 nuint num7 = (uint)(
source[num2] - 48);
1803 if ((uint)num7 > 9)
1804 {
1805 break;
1806 }
1807 num2++;
1808 if (num4 < 922337203685477580
L)
1809 {
1810 num4 = num4 * 10 + num7;
1811 continue;
1812 }
1813 if (num4 != 922337203685477580
L || (
int)num7 + (int)num > 7)
1814 {
1815 goto end_IL_0005;
1816 }
1817 num4 = 9223372036854775800uL + (ulong)num7;
1818 }
1819 }
1820 bytesConsumed = num2;
1821 value = (long)(num4 ^ (ulong)num) - num;
1822 return true;
1823 continue;
1824 end_IL_0005:
1825 break;
1826 }
1827 bytesConsumed = 0;
1829 return false;
1830 }