312 {
313 char* ptr = pBuffer;
315 {
320 {
321 char* ptr2 = pBuffer + bufferLength -
count;
322 pBuffer = (char*)((nuint)((byte*)pBuffer + count2) & ~(nuint)(count2 - 1));
324 {
326 if (pBuffer > ptr2)
327 {
328 break;
329 }
330 }
331 bufferLength -= (nuint)(nint)(pBuffer - ptr);
332 }
333 }
334 while (true)
335 {
336 uint num;
337 if (bufferLength >= 4)
338 {
339 num =
Unsafe.ReadUnaligned<uint>(pBuffer);
340 uint num2 =
Unsafe.ReadUnaligned<uint>(pBuffer + 2);
342 {
344 {
345 num = num2;
346 pBuffer += 2;
347 }
348 goto IL_0109;
349 }
350 pBuffer += 4;
351 bufferLength -= 4;
352 continue;
353 }
354 if ((bufferLength & 2) != 0)
355 {
356 num =
Unsafe.ReadUnaligned<uint>(pBuffer);
358 {
359 goto IL_0109;
360 }
361 pBuffer += 2;
362 }
363 if ((bufferLength & 1) != 0 && *pBuffer <= '\u007f')
364 {
365 pBuffer++;
366 }
367 break;
368 IL_0109:
370 {
371 pBuffer++;
372 }
373 break;
374 }
375 nuint num3 = (nuint)((byte*)pBuffer - (nuint)ptr);
376 return num3 / 2;
377 }
static bool IsHardwareAccelerated
static bool AllCharsInUInt32AreAscii(uint value)
static bool FirstCharInUInt32IsAscii(uint value)