85 {
86 int num = (int)ASCIIUtility.GetIndexOfFirstNonAsciiChar(pInputBuffer, (uint)inputLength);
87 pInputBuffer += (uint)num;
88 inputLength -= num;
89 if (inputLength == 0)
90 {
91 utf8CodeUnitCountAdjustment = 0
L;
92 scalarCountAdjustment = 0;
93 return pInputBuffer;
94 }
96 int num3 = 0;
97 char* ptr = pInputBuffer + (uint)inputLength;
99 {
101 {
105 if (!BitConverter.IsLittleEndian)
106 {
107 }
110 do
111 {
113 {
114 }
118 {
119 }
122 {
123 }
128 {
129 }
131 while (
value != 65535)
132 {
135 {
136 }
138 uint num6 = num5 &
value;
139 uint num7 = (num5 ^ 0x5555u) &
value;
140 num7 <<= 2;
141 if ((ushort)num7 == num6)
142 {
143 if (num7 > 65535)
144 {
145 num7 = (ushort)num7;
146 num4 -= 2;
147 pInputBuffer--;
148 }
150 num3 -= (int)num8;
152 num2 -= (long)num8;
153 num2 -= (long)num8;
155 continue;
156 }
157 goto IL_01c6;
158 }
159 num2 += (long)num4;
160 continue;
161 IL_01c6:
163 break;
164 }
165 while (pInputBuffer <= ptr2);
166 }
167 }
169 {
175 while (true)
176 {
181 nuint num9 = 0u;
182 for (
int i = 0; i < Vector<UIntPtr>.Count;
i++)
183 {
184 num9 += (nuint)(nint)(nuint)vector7[i];
185 }
186 uint num10 = (uint)num9;
188 num10 += (uint)(int)(num9 >> 32);
189 num10 = (ushort)num10 + (num10 >> 16);
190 left2 -= vector4;
193 {
196 if (vector9[0] != 0)
197 {
198 break;
199 }
200 ushort num11 = 0;
201 int num12 = 0;
203 {
204 num11 -= right7[num12];
205 if (right7[num12] == vector9[num12 + 1])
206 {
207 num12++;
208 continue;
209 }
210 goto IL_03e0;
211 }
213 {
214 pInputBuffer--;
215 num10 -= 2;
216 }
217 nint num13 = num11;
218 num3 -= (int)num13;
219 num2 -= num13;
220 num2 -= num13;
221 }
222 num2 += num10;
224 if (pInputBuffer <= ptr3)
225 {
226 continue;
227 }
228 goto IL_03e0;
229 }
230 goto IL_03e4;
231 }
232 goto IL_03e0;
233 IL_03e0:
234 while (pInputBuffer < ptr)
235 {
236 uint num14 = *pInputBuffer;
237 if (num14 > 127)
238 {
239 num2 += num14 + 129024 >> 16;
240 if (UnicodeUtility.IsSurrogateCodePoint(num14))
241 {
242 num2 -= 2;
243 if ((nuint)((byte*)ptr - (nuint)pInputBuffer) < (nuint)4u)
244 {
245 break;
246 }
247 num14 =
Unsafe.ReadUnaligned<uint>(pInputBuffer);
248 uint num15 = num14;
249 if (!BitConverter.IsLittleEndian)
250 {
251 }
252 if (((num15 - 3691042816u) & 0xFC00FC00u) != 0)
253 {
254 break;
255 }
256 num3--;
257 num2 += 2;
258 pInputBuffer++;
259 }
260 }
261 pInputBuffer++;
262 }
263 goto IL_03e4;
264 IL_03e4:
265 utf8CodeUnitCountAdjustment = num2;
266 scalarCountAdjustment = num3;
267 return pInputBuffer;
268 }
static int PopCount(uint value)
static Vector< int > LessThan(Vector< float > left, Vector< float > right)
static bool IsHardwareAccelerated
static Vector< int > GreaterThanOrEqual(Vector< float > left, Vector< float > right)
static new bool IsSupported
static new bool IsSupported
static Vector128< byte > Create(byte value)
static unsafe Vector128< sbyte > LoadVector128(sbyte *address)
static int MoveMask(Vector128< sbyte > value)
static Vector128< sbyte > CompareLessThan(Vector128< sbyte > left, Vector128< sbyte > right)
static Vector128< byte > Or(Vector128< byte > left, Vector128< byte > right)
static Vector128< sbyte > AddSaturate(Vector128< sbyte > left, Vector128< sbyte > right)
static Vector128< byte > Add(Vector128< byte > left, Vector128< byte > right)
static Vector128< short > ShiftRightLogical(Vector128< short > value, Vector128< short > count)
static new bool IsSupported
static Vector128< sbyte > Min(Vector128< sbyte > left, Vector128< sbyte > right)