23 {
24 uint num;
26 {
28 {
29 _ = BitConverter.IsLittleEndian;
30 num = 128u;
31 if ((
count & (
true ? 1u : 0u)) != 0)
32 {
33 num =
Unsafe.AddByteOffset(ref data, (nuint)
count & (nuint)2u);
34 _ = BitConverter.IsLittleEndian;
35 num |= 0x8000u;
36 }
37 if ((
count & 2u) != 0)
38 {
39 _ = BitConverter.IsLittleEndian;
40 num <<= 16;
41 num |=
Unsafe.ReadUnaligned<ushort>(ref data);
42 }
43 goto IL_00a6;
44 }
45 }
46 else
47 {
48 uint num2 =
count / 8;
49 do
50 {
51 p0 +=
Unsafe.ReadUnaligned<uint>(ref data);
52 uint num3 =
Unsafe.ReadUnaligned<uint>(ref
Unsafe.AddByteOffset(ref data, 4u));
53 Block(ref p0, ref p1);
54 p0 += num3;
55 Block(ref p0, ref p1);
56 data = ref
Unsafe.AddByteOffset(ref data, 8u);
57 }
58 while (--num2 != 0);
60 {
61 goto IL_006a;
62 }
63 }
64 p0 +=
Unsafe.ReadUnaligned<uint>(ref data);
65 Block(ref p0, ref p1);
66 goto IL_006a;
67 IL_00a6:
68 p0 += num;
69 Block(ref p0, ref p1);
70 Block(ref p0, ref p1);
71 return (int)(p1 ^ p0);
72 IL_006a:
73 num =
Unsafe.ReadUnaligned<uint>(ref
Unsafe.Add(ref
Unsafe.AddByteOffset(ref data, (nuint)
count & (nuint)7u), -4));
75 _ = BitConverter.IsLittleEndian;
76 num >>= 8;
77 num |= 0x80000000u;
78 num >>= (int)(
count & 0x1F);
79 goto IL_00a6;
80 }
static void Block(ref uint rp0, ref uint rp1)