281 {
282 nuint num = 0u;
283 uint num2 = 0u;
284 uint num3 = 0u;
285 ulong num4 = 0uL;
287 {
289 {
291 num4 =
Unsafe.ReadUnaligned<ulong>(pUtf16Buffer);
293 {
294 goto IL_0191;
295 }
297 }
298 }
300 {
302 if (elementCount >= 2 * num5)
303 {
305 num4 =
Unsafe.ReadUnaligned<ulong>(pUtf16Buffer);
307 {
308 goto IL_0191;
309 }
311 nuint num6 = elementCount - 2 * num5;
312 do
313 {
316 if (
Vector.GreaterThanAny(
Vector.BitwiseOr(vector, vector2), right))
317 {
318 break;
319 }
322 num += num5;
323 }
324 while (num <= num6);
325 }
326 }
327 nuint num7 = elementCount - num;
328 if (num7 < 4)
329 {
330 goto IL_013a;
331 }
332 nuint num8 = num + num7 - 4;
333 while (true)
334 {
336 num4 =
Unsafe.ReadUnaligned<ulong>(pUtf16Buffer + num);
338 {
339 break;
340 }
342 num += 4;
343 if (num <= num8)
344 {
345 continue;
346 }
347 goto IL_013a;
348 }
349 goto IL_0191;
350 IL_01ca:
352 {
353 if (!BitConverter.IsLittleEndian)
354 {
355 }
356 pLatin1Buffer[num] = (byte)num2;
357 num++;
358 }
359 goto IL_018f;
360 IL_018f:
361 return num;
362 IL_013a:
363 if (((uint)(int)num7 & 2u) != 0)
364 {
365 num2 =
Unsafe.ReadUnaligned<uint>(pUtf16Buffer + num);
367 {
368 goto IL_01ca;
369 }
371 num += 2;
372 }
373 if (((uint)(int)num7 & (true ? 1u : 0u)) != 0)
374 {
375 num2 = pUtf16Buffer[num];
376 if (num2 <= 255)
377 {
378 pLatin1Buffer[num] = (byte)num2;
379 num++;
380 }
381 }
382 goto IL_018f;
383 IL_0191:
385 _ = BitConverter.IsLittleEndian;
386 num2 = (uint)num4;
388 {
390 _ = BitConverter.IsLittleEndian;
391 num2 = (uint)(num4 >> 32);
392 num += 2;
393 }
394 goto IL_01ca;
395 }
static bool IsHardwareAccelerated
static unsafe Vector< byte > Narrow(Vector< ushort > low, Vector< ushort > high)
static new bool IsSupported
static bool FirstCharInUInt32IsLatin1(uint value)
static void NarrowTwoUtf16CharsToLatin1AndWriteToBuffer(ref byte outputBuffer, uint value)
static unsafe nuint NarrowUtf16ToLatin1_Sse2(char *pUtf16Buffer, byte *pLatin1Buffer, nuint elementCount)
static void NarrowFourUtf16CharsToLatin1AndWriteToBuffer(ref byte outputBuffer, ulong value)
static bool AllCharsInUInt32AreLatin1(uint value)
static bool AllCharsInUInt64AreLatin1(ulong value)