22 {
23 char* ptr = pBuffer;
25 {
30 {
31 char* ptr2 = pBuffer + bufferLength -
count;
32 pBuffer = (char*)((nuint)((byte*)pBuffer + count2) & ~(nuint)(count2 - 1));
34 {
36 if (pBuffer > ptr2)
37 {
38 break;
39 }
40 }
41 bufferLength -= (nuint)(nint)(pBuffer - ptr);
42 }
43 }
44 while (true)
45 {
46 uint num;
47 if (bufferLength >= 4)
48 {
49 num =
Unsafe.ReadUnaligned<uint>(pBuffer);
50 uint num2 =
Unsafe.ReadUnaligned<uint>(pBuffer + 2);
52 {
54 {
55 num = num2;
56 pBuffer += 2;
57 }
58 goto IL_010f;
59 }
60 pBuffer += 4;
61 bufferLength -= 4;
62 continue;
63 }
64 if ((bufferLength & 2) != 0)
65 {
66 num =
Unsafe.ReadUnaligned<uint>(pBuffer);
68 {
69 goto IL_010f;
70 }
71 pBuffer += 2;
72 }
73 if ((bufferLength & 1) != 0 && *pBuffer <= 'ΓΏ')
74 {
75 pBuffer++;
76 }
77 break;
78 IL_010f:
80 {
81 pBuffer++;
82 }
83 break;
84 }
85 nuint num3 = (nuint)((byte*)pBuffer - (nuint)ptr);
86 return num3 / 2;
87 }
static bool IsHardwareAccelerated
static bool FirstCharInUInt32IsLatin1(uint value)
static bool AllCharsInUInt32AreLatin1(uint value)