Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] xtqqczze/dotnet-runtime/MemoryExtensionsNullCheck #513

Open
MihuBot opened this issue Jul 12, 2024 · 3 comments
Open

[JitDiff X64] xtqqczze/dotnet-runtime/MemoryExtensionsNullCheck #513

MihuBot opened this issue Jul 12, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 12, 2024

Job completed in 14 minutes.

Diffs

Diffs
Found 291 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41782944
Total bytes of diff: 41782826
Total bytes of delta: -118 (-0.00 % of base)
Total relative delta: -0.47
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
          89 : System.Private.CoreLib.dasm (0.00 % of base)
          78 : System.Diagnostics.DiagnosticSource.dasm (0.03 % of base)
          45 : System.Security.Cryptography.Pkcs.dasm (0.01 % of base)
           6 : System.Net.Security.dasm (0.00 % of base)
           6 : System.Reflection.Metadata.dasm (0.00 % of base)
           5 : Microsoft.Extensions.FileProviders.Physical.dasm (0.02 % of base)
           2 : System.Data.Odbc.dasm (0.00 % of base)
           2 : System.Private.Xml.dasm (0.00 % of base)
           1 : System.Net.Ping.dasm (0.00 % of base)

Top file improvements (bytes):
        -172 : System.Text.Json.dasm (-0.01 % of base)
         -96 : System.Numerics.Tensors.dasm (-0.01 % of base)
         -53 : System.Net.Http.dasm (-0.01 % of base)
         -28 : System.Security.Cryptography.Cose.dasm (-0.04 % of base)
          -3 : System.Security.Cryptography.dasm (-0.00 % of base)

14 total files with Code Size differences (5 improved, 9 regressed), 245 unchanged.

Top method regressions (bytes):
          38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
           7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
           7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts)
           6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts)
           5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts)
           5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts)
           3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts)
           3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts)
           3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts)
           3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts)
           3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts)
           2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts)
           2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts)
           2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+<ParseAsyncCoreUnrented>d__69:MoveNext():this (FullOpts)
           2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts)
           1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+<SendIcmpEchoRequestOverRawSocketAsync>d__76:MoveNext():this (FullOpts)

Top method improvements (bytes):
        -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
        -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts)
          -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts)
          -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts)
          -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts)
          -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
          -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts)
          -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts)
          -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts)
          -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts)

Top method regressions (percentages):
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts)
          31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts)
           5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
           7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts)
           5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts)
           2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts)
           3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts)
           2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts)
          38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
           3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts)
           3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
          13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts)
           6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts)
           3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts)
           2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts)
           7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
           3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts)
           2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+<ParseAsyncCoreUnrented>d__69:MoveNext():this (FullOpts)
           1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+<SendIcmpEchoRequestOverRawSocketAsync>d__76:MoveNext():this (FullOpts)

Top method improvements (percentages):
        -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
        -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts)
          -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts)
          -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts)
          -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts)
          -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetLengths(System.Span`1[long]):this (FullOpts)
          -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor<System.Numerics.Tensors.Tensor<T>,T>.GetStrides(System.Span`1[long]):this (FullOpts)
          -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts)
          -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts)
          -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts)
          -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
          -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
          -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
         -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
          -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts)
          -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts)
          -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts)
          -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts)
          -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts)

95 total methods with Code Size differences (59 improved, 36 regressed), 255750 unchanged.

--------------------------------------------------------------------------------

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 12, 2024

Top method regressions

38 (2.11 % of base) - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this
 ; Assembly listing for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 37 single block inlinees; 17 inlinees without PGO data
+; 0 inlinees with PGO data; 36 single block inlinees; 18 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T07] ( 11,  8.50)     ref  ->  rbx         this class-hnd single-def <System.Security.Cryptography.Pkcs.SignerInfo>
 ;  V01 arg1         [V01,T27] (  5,  3.50)   ubyte  ->  r15         single-def
 ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    single-def <System.Security.Cryptography.HashAlgorithmName>
 ;  V03 loc1         [V03,T19] ( 15,  7.50)     ref  ->  r14         class-hnd exact single-def <System.Security.Cryptography.IncrementalHash>
 ;  V04 loc2         [V04,T37] (  3,  3.50)   ubyte  ->  r13        
 ;* V05 loc3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.PlatformNotSupportedException>
 ;  V06 loc4         [V06,T58] (  3,  1.50)   byref  ->  rdx         single-def
 ;  V07 loc5         [V07,T66] (  3,  1.50)  struct (24) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op <System.Nullable`1[System.ReadOnlyMemory`1[ubyte]]>
 ;  V08 loc6         [V08    ] ( 10,  5   )  struct (16) [rbp-0x50]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op single-def <System.ReadOnlyMemory`1[ubyte]>
 ;  V09 loc7         [V09,T21] (  4,  6.50)     ref  ->  r12         class-hnd single-def <ubyte[]>
 ;  V10 loc8         [V10,T20] (  8,  7.50)     ref  ->  [rbp-0xC8]  class-hnd exact spill-single-def <System.Formats.Asn1.AsnWriter>
 ;* V11 loc9         [V11,T77] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SA] multireg-arg ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
 ;  V12 loc10        [V12,T28] (  3,  5   )     ref  ->  rbx         class-hnd exact single-def <System.Security.Cryptography.Asn1.AttributeAsn[]>
 ;* V13 loc11        [V13,T85] (  0,  0   )     int  ->  zero-ref   
 ;  V14 loc12        [V14    ] (  5, 16   )  struct (16) [rbp-0x60]  do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op <System.Security.Cryptography.Asn1.AttributeAsn>
 ;  V15 loc13        [V15,T11] (  4,  8   )     ref  ->  r13         class-hnd exact <System.Security.Cryptography.Pkcs.Pkcs9MessageDigest>
 ;  V16 loc14        [V16,T51] (  4,  2   )     ref  ->  rax         class-hnd single-def <ubyte[]>
 ;# V17 OutArgs      [V17    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V18 tmp1         [V18    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;  V19 tmp2         [V19,T53] (  3,  2   )     int  ->  rdi        
 ;  V20 tmp3         [V20,T87] (  3,  0   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
 ;  V21 tmp4         [V21,T42] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter>
 ;  V22 tmp5         [V22,T82] (  1,  1   )  struct (32) [rbp-0x80]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
 ;  V23 tmp6         [V23,T15] (  2,  8   )     ref  ->  rax         class-hnd exact "dup spill" <System.Security.Cryptography.CryptographicAttributeObject>
 ;* V24 tmp7         [V24    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V25 tmp8         [V25    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Span`1[ubyte]>
 ;* V26 tmp9         [V26    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;  V27 tmp10        [V27,T88] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
 ;  V28 tmp11        [V28,T89] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
 ;  V29 tmp12        [V29,T83] (  1,  1   )  struct (32) [rbp-0xA0]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
 ;* V30 tmp13        [V30    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret single-def "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
 ;* V31 tmp14        [V31    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
 ;* V32 tmp15        [V32    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.ReadOnlyMemory`1[ubyte]>
 ;* V33 tmp16        [V33    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;  V34 tmp17        [V34,T92] (  2,  0   )     ref  ->  rbx         class-hnd single-def "impSpillSpecialSideEff" <System.PlatformNotSupportedException>
 ;  V35 tmp18        [V35,T90] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Security.Cryptography.HashAlgorithmName>
 ;  V36 tmp19        [V36,T93] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impImportAndPushBox" <System.String>
 ;  V37 tmp20        [V37,T91] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
 ;* V38 tmp21        [V38    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Security.Cryptography.Oid>
 ;* V39 tmp22        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V40 tmp23        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
 ;  V41 tmp24        [V41,T43] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Pkcs.SignedCms>
 ;* V42 tmp25        [V42    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V43 tmp26        [V43,T38] (  6,  3   )   byref  ->  r13         "Inline stloc first use temp"
 ;  V44 tmp27        [V44,T40] (  6,  3   )     int  ->  rdx         "Inline stloc first use temp"
 ;* V45 tmp28        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Object>
 ;* V46 tmp29        [V46    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V47 tmp30        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
 ;* V48 tmp31        [V48    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
 ;* V49 tmp32        [V49    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
 ;  V50 tmp33        [V50,T67] (  3,  1.50)    long  ->  rdi         single-def "Inline stloc first use temp"
 ;* V51 tmp34        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp35        [V52    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "updating class info" <ubyte[]>
 ;* V53 tmp36        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
 ;  V54 tmp37        [V54,T54] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
 ;* V55 tmp38        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V56 tmp39        [V56    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V57 tmp40        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
 ;* V58 tmp41        [V58    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V59 tmp42        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
 ;* V60 tmp43        [V60    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V61 tmp44        [V61,T39] (  6,  3   )   byref  ->  r12         "Inline stloc first use temp"
 ;  V62 tmp45        [V62,T41] (  6,  3   )     int  ->  rdx         "Inline stloc first use temp"
 ;  V63 tmp46        [V63,T30] (  4,  4   )   byref  ->  r13         single-def "Inlining Arg"
 ;  V64 tmp47        [V64,T35] (  7,  3.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.Object>
 ;* V65 tmp48        [V65    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V66 tmp49        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
 ;* V67 tmp50        [V67    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
 ;* V68 tmp51        [V68    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
 ;  V69 tmp52        [V69,T68] (  3,  1.50)    long  ->  rdi         single-def "Inline stloc first use temp"
 ;  V70 tmp53        [V70,T69] (  3,  1.50)     int  ->  rsi         single-def "Inline stloc first use temp"
 ;* V71 tmp54        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "updating class info" <ubyte[]>
 ;* V72 tmp55        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
 ;  V73 tmp56        [V73,T55] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
 ;* V74 tmp57        [V74    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V75 tmp58        [V75    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V76 tmp59        [V76    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.HMACCommon>
 ;  V77 tmp60        [V77,T00] (  5, 26   )     ref  ->  rdi         class-hnd exact "Inlining Arg" <System.String>
 ;* V78 tmp61        [V78    ] (  0,  0   )     ref  ->  zero-ref    "spilling varStr"
 ;  V79 tmp62        [V79,T05] (  2,  8   )     int  ->  rdi         "spilling unroll qmark"
 ;* V80 tmp63        [V80    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
 ;  V81 tmp64        [V81,T16] (  2,  8   )     ref  ->  rsi         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
 ;* V82 tmp65        [V82    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Security.Cryptography.AsnEncodedDataCollection>
 ;  V83 tmp66        [V83,T17] (  2,  8   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Security.Cryptography.AsnEncodedData]>
 ;* V84 tmp67        [V84    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V85 tmp68        [V85    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <ubyte[]>
-;  V86 tmp69        [V86,T18] (  2,  8   )     ref  ->  rdx         class-hnd "dup spill" <ubyte[]>
-;  V87 tmp70        [V87,T04] (  6, 12   )     ref  ->  rdx        
-;* V88 tmp71        [V88    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <ubyte[]>
-;* V89 tmp72        [V89    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <ubyte[]>
-;  V90 tmp73        [V90,T12] (  4,  8   )     ref  ->  [rbp-0xD0]  class-hnd "Inline return value spill temp" <ubyte[]>
-;  V91 tmp74        [V91,T02] (  4, 16   )     ref  ->  rdi         class-hnd "Inlining Arg" <ubyte[]>
-;* V92 tmp75        [V92    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-;  V93 tmp76        [V93    ] (  5, 20   )  struct (16) [rbp-0xB0]  do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
-;* V94 tmp77        [V94    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;  V95 tmp78        [V95,T31] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
-;* V96 tmp79        [V96    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V97 tmp80        [V97    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V98 tmp81        [V98    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V99 tmp82        [V99    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V100 tmp83       [V100    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
+;* V85 tmp68        [V85    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
+;* V86 tmp69        [V86    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <ubyte[]>
+;  V87 tmp70        [V87,T18] (  2,  8   )     ref  ->  rdx         class-hnd "dup spill" <ubyte[]>
+;  V88 tmp71        [V88,T04] (  6, 12   )     ref  ->  rdx        
+;* V89 tmp72        [V89    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <ubyte[]>
+;* V90 tmp73        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <ubyte[]>
+;  V91 tmp74        [V91,T12] (  4,  8   )     ref  ->  [rbp-0xD0]  class-hnd "Inline return value spill temp" <ubyte[]>
+;  V92 tmp75        [V92,T02] (  4, 16   )     ref  ->  rdi         class-hnd "Inlining Arg" <ubyte[]>
+;* V93 tmp76        [V93    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
+;  V94 tmp77        [V94    ] (  5, 20   )  struct (16) [rbp-0xB0]  do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V95 tmp78        [V95    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;  V96 tmp79        [V96,T31] (  2,  4   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V97 tmp80        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V98 tmp81        [V98    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V99 tmp82        [V99    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V100 tmp83       [V100    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V101 tmp84       [V101    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;* V102 tmp85       [V102    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V103 tmp86       [V103    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V104 tmp87       [V104    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V105 tmp88       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V106 tmp89       [V106    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Cryptography.Oid>
-;  V107 tmp90       [V107,T52] (  3,  2   )     ref  ->  [rbp-0xD8]  do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP
-;  V108 tmp91       [V108,T36] (  7,  3.50)     ref  ->  [rbp-0x50]  do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP
-;  V109 tmp92       [V109,T78] (  2,  1   )     int  ->  [rbp-0x48]  do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP
-;  V110 tmp93       [V110,T70] (  3,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP
-;  V111 tmp94       [V111    ] (  4, 14   )     ref  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP
-;  V112 tmp95       [V112    ] (  3, 10   )     ref  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP
-;* V113 tmp96       [V113    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V114 tmp97       [V114    ] (  0,  0   )     int  ->  zero-ref    single-def "field V18._length (fldOffset=0x8)" P-INDEP
-;  V115 tmp98       [V115,T33] (  2,  4   )   byref  ->  [rbp-0xE0]  spill-single-def "field V25._reference (fldOffset=0x0)" P-INDEP
-;  V116 tmp99       [V116,T34] (  2,  4   )     int  ->  [rbp-0xB4]  spill-single-def "field V25._length (fldOffset=0x8)" P-INDEP
-;* V117 tmp100      [V117    ] (  0,  0   )   byref  ->  zero-ref    "field V26._reference (fldOffset=0x0)" P-INDEP
-;* V118 tmp101      [V118    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
-;  V119 tmp102      [V119,T59] (  3,  1.50)   byref  ->  rax         "field V30._reference (fldOffset=0x0)" P-INDEP
-;  V120 tmp103      [V120,T71] (  3,  1.50)     int  ->  rdx         "field V30._length (fldOffset=0x8)" P-INDEP
-;* V121 tmp104      [V121    ] (  0,  0   )     ref  ->  zero-ref    "field V31._object (fldOffset=0x0)" P-INDEP
-;* V122 tmp105      [V122    ] (  0,  0   )     int  ->  zero-ref    "field V31._index (fldOffset=0x8)" P-INDEP
-;* V123 tmp106      [V123    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0xc)" P-INDEP
-;* V124 tmp107      [V124    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V125 tmp108      [V125    ] (  0,  0   )     int  ->  zero-ref    single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;* V126 tmp109      [V126    ] (  0,  0   )   byref  ->  zero-ref    "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp110      [V127    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
-;  V128 tmp111      [V128,T60] (  3,  1.50)   byref  ->  rsi         single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-;  V129 tmp112      [V129,T72] (  3,  1.50)     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp113      [V130    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-DEP
-;* V131 tmp114      [V131    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-DEP
-;  V132 tmp115      [V132,T74] (  2,  1   )   byref  ->  r13         "field V49._reference (fldOffset=0x0)" P-INDEP
-;  V133 tmp116      [V133,T79] (  2,  1   )     int  ->  rdx         "field V49._length (fldOffset=0x8)" P-INDEP
-;* V134 tmp117      [V134    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V135 tmp118      [V135    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
-;* V136 tmp119      [V136    ] (  0,  0   )   byref  ->  zero-ref    "field V60._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp120      [V137    ] (  0,  0   )     int  ->  zero-ref    "field V60._length (fldOffset=0x8)" P-INDEP
-;  V138 tmp121      [V138,T61] (  3,  1.50)   byref  ->  rsi         single-def "field V65._reference (fldOffset=0x0)" P-INDEP
-;  V139 tmp122      [V139,T73] (  3,  1.50)     int  ->  rdx         single-def "field V65._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp123      [V140    ] (  0,  0   )   byref  ->  zero-ref    "field V67._reference (fldOffset=0x0)" P-DEP
-;* V141 tmp124      [V141    ] (  0,  0   )     int  ->  zero-ref    "field V67._length (fldOffset=0x8)" P-DEP
-;  V142 tmp125      [V142,T75] (  2,  1   )   byref  ->  r12         "field V68._reference (fldOffset=0x0)" P-INDEP
-;  V143 tmp126      [V143,T80] (  2,  1   )     int  ->  rdx         "field V68._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp127      [V144    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp128      [V145    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
-;  V146 tmp129      [V146,T22] (  3,  6   )   byref  ->  rax         "field V84._reference (fldOffset=0x0)" P-INDEP
-;  V147 tmp130      [V147,T25] (  3,  6   )     int  ->  rcx         "field V84._length (fldOffset=0x8)" P-INDEP
-;* V148 tmp131      [V148    ] (  0,  0   )     ref  ->  zero-ref    "field V92._object (fldOffset=0x0)" P-INDEP
-;* V149 tmp132      [V149    ] (  0,  0   )     int  ->  zero-ref    "field V92._index (fldOffset=0x8)" P-INDEP
-;* V150 tmp133      [V150    ] (  0,  0   )     int  ->  zero-ref    "field V92._length (fldOffset=0xc)" P-INDEP
-;  V151 tmp134      [V151,T08] (  3, 10   )     ref  ->  [rbp-0xB0]  do-not-enreg[] "field V93._object (fldOffset=0x0)" P-DEP
-;  V152 tmp135      [V152,T09] (  3, 10   )     int  ->  [rbp-0xA8]  do-not-enreg[] "field V93._index (fldOffset=0x8)" P-DEP
-;  V153 tmp136      [V153,T10] (  3, 10   )     int  ->  [rbp-0xA4]  do-not-enreg[] "field V93._length (fldOffset=0xc)" P-DEP
-;  V154 tmp137      [V154,T23] (  3,  6   )   byref  ->  rsi         "field V94._reference (fldOffset=0x0)" P-INDEP
-;  V155 tmp138      [V155,T13] (  4,  8   )     int  ->  rdi         "field V94._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp139      [V156    ] (  0,  0   )   byref  ->  zero-ref    "field V96._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp140      [V157    ] (  0,  0   )     int  ->  zero-ref    "field V96._length (fldOffset=0x8)" P-INDEP
-;* V158 tmp141      [V158    ] (  0,  0   )   byref  ->  zero-ref    "field V98._reference (fldOffset=0x0)" P-INDEP
-;* V159 tmp142      [V159    ] (  0,  0   )     int  ->  zero-ref    "field V98._length (fldOffset=0x8)" P-INDEP
-;* V160 tmp143      [V160    ] (  0,  0   )   byref  ->  zero-ref    "field V102._reference (fldOffset=0x0)" P-INDEP
-;* V161 tmp144      [V161    ] (  0,  0   )     int  ->  zero-ref    "field V102._length (fldOffset=0x8)" P-INDEP
-;* V162 tmp145      [V162    ] (  0,  0   )   byref  ->  zero-ref    "field V103._reference (fldOffset=0x0)" P-INDEP
-;* V163 tmp146      [V163    ] (  0,  0   )     int  ->  zero-ref    "field V103._length (fldOffset=0x8)" P-INDEP
-;* V164 tmp147      [V164    ] (  0,  0   )   byref  ->  zero-ref    "field V104._reference (fldOffset=0x0)" P-INDEP
-;* V165 tmp148      [V165    ] (  0,  0   )     int  ->  zero-ref    "field V104._length (fldOffset=0x8)" P-INDEP
-;* V166 tmp149      [V166    ] (  0,  0   )   byref  ->  zero-ref    "field V105._reference (fldOffset=0x0)" P-INDEP
-;* V167 tmp150      [V167    ] (  0,  0   )     int  ->  zero-ref    "field V105._length (fldOffset=0x8)" P-INDEP
-;  V168 tmp151      [V168,T81] (  2,  1   )   ubyte  ->  rsi         single-def "V07.[000..001)"
-;* V169 tmp152      [V169    ] (  0,  0   )    long  ->  zero-ref    single-def "V106.[000..008)"
-;  V170 tmp153      [V170,T56] (  2,  2   )     ref  ->  rdi         single-def "V106.[008..016)"
-;* V171 tmp154      [V171    ] (  0,  0   )     ref  ->  zero-ref    single-def "V106.[016..024)"
-;* V172 tmp155      [V172    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "V106.[028..029)"
-;  V173 tmp156      [V173,T44] (  3,  3   )   byref  ->  rdi         single-def "Spilling address for field-by-field copy"
-;  V174 tmp157      [V174,T94] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V175 tmp158      [V175,T76] (  2,  1   )     ref  ->  r13         single-def "Field obj"
-;  V176 tmp159      [V176,T45] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V177 tmp160      [V177,T46] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V178 tmp161      [V178,T47] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V179 tmp162      [V179,T48] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V180 tmp163      [V180,T49] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V181 tmp164      [V181,T50] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V182 tmp165      [V182,T06] (  3, 12   )     ref  ->  rdi         "arr expr"
-;  V183 tmp166      [V183,T14] (  3,  8   )     ref  ->  rsi         "argument with side effect"
-;  V184 tmp167      [V184,T95] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V185 tmp168      [V185,T96] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V186 tmp169      [V186,T57] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V187 tmp170      [V187,T97] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V188 PSPSym      [V188,T84] (  1,  1   )    long  ->  [rbp-0xF0]  do-not-enreg[V] "PSPSym"
-;  V189 cse0        [V189,T24] (  3,  6   )     ref  ->  rdi         "CSE #10: moderate"
-;  V190 cse1        [V190,T26] (  3,  6   )     int  ->  rsi         "CSE #11: moderate"
-;  V191 cse2        [V191,T62] (  3,  1.50)     ref  ->  rdx         "CSE #01: conservative"
-;  V192 cse3        [V192,T63] (  3,  1.50)     ref  ->  rdi         "CSE #02: conservative"
-;  V193 cse4        [V193,T64] (  3,  1.50)     ref  ->  rdi         "CSE #03: conservative"
-;  V194 cse5        [V194,T65] (  3,  1.50)     ref  ->  rdi         "CSE #05: conservative"
-;  V195 cse6        [V195,T29] (  3,  5   )     int  ->  [rbp-0xB8]  spill-single-def "CSE #12: moderate"
-;  V196 rat0        [V196,T01] (  5, 16.50)    long  ->  [rbp-0xC0]  "Widened IV V13"
-;  V197 rat1        [V197,T03] (  4, 14   )     ref  ->  r13         "replacement local"
-;  V198 rat2        [V198,T32] (  3,  4   )    long  ->  rdi         "CSE for expectedClsNode"
-;  V199 rat3        [V199,T86] (  3, 12   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;* V102 tmp85       [V102    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
+;* V103 tmp86       [V103    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V104 tmp87       [V104    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V105 tmp88       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V106 tmp89       [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+;* V107 tmp90       [V107    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Cryptography.Oid>
+;  V108 tmp91       [V108,T52] (  3,  2   )     ref  ->  [rbp-0xD8]  do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP
+;  V109 tmp92       [V109,T36] (  7,  3.50)     ref  ->  [rbp-0x50]  do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP
+;  V110 tmp93       [V110,T78] (  2,  1   )     int  ->  [rbp-0x48]  do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP
+;  V111 tmp94       [V111,T70] (  3,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP
+;  V112 tmp95       [V112    ] (  4, 14   )     ref  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP
+;  V113 tmp96       [V113    ] (  3, 10   )     ref  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP
+;* V114 tmp97       [V114    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp98       [V115    ] (  0,  0   )     int  ->  zero-ref    single-def "field V18._length (fldOffset=0x8)" P-INDEP
+;  V116 tmp99       [V116,T22] (  3,  6   )   byref  ->  [rbp-0xE0]  "field V25._reference (fldOffset=0x0)" P-INDEP
+;  V117 tmp100      [V117,T25] (  3,  6   )     int  ->  [rbp-0xB4]  "field V25._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp101      [V118    ] (  0,  0   )   byref  ->  zero-ref    "field V26._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp102      [V119    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x8)" P-INDEP
+;  V120 tmp103      [V120,T59] (  3,  1.50)   byref  ->  rax         "field V30._reference (fldOffset=0x0)" P-INDEP
+;  V121 tmp104      [V121,T71] (  3,  1.50)     int  ->  rdx         "field V30._length (fldOffset=0x8)" P-INDEP
+;* V122 tmp105      [V122    ] (  0,  0   )     ref  ->  zero-ref    "field V31._object (fldOffset=0x0)" P-INDEP
+;* V123 tmp106      [V123    ] (  0,  0   )     int  ->  zero-ref    "field V31._index (fldOffset=0x8)" P-INDEP
+;* V124 tmp107      [V124    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0xc)" P-INDEP
+;* V125 tmp108      [V125    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V33._reference (fldOffset=0x0)" P-INDEP
+;* V126 tmp109      [V126    ] (  0,  0   )     int  ->  zero-ref    single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;* V127 tmp110      [V127    ] (  0,  0   )   byref  ->  zero-ref    "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V128 tmp111      [V128    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;  V129 tmp112      [V129,T60] (  3,  1.50)   byref  ->  rsi         single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;  V130 tmp113      [V130,T72] (  3,  1.50)     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;* V131 tmp114      [V131    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-DEP
+;* V132 tmp115      [V132    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-DEP
+;  V133 tmp116      [V133,T74] (  2,  1   )   byref  ->  r13         "field V49._reference (fldOffset=0x0)" P-INDEP
+;  V134 tmp117      [V134,T79] (  2,  1   )     int  ->  rdx         "field V49._length (fldOffset=0x8)" P-INDEP
+;* V135 tmp118      [V135    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V136 tmp119      [V136    ] (  0,  0   )     int  ->  zero-ref    "field V55._length (fldOffset=0x8)" P-INDEP
+;* V137 tmp120      [V137    ] (  0,  0   )   byref  ->  zero-ref    "field V60._reference (fldOffset=0x0)" P-INDEP
+;* V138 tmp121      [V138    ] (  0,  0   )     int  ->  zero-ref    "field V60._length (fldOffset=0x8)" P-INDEP
+;  V139 tmp122      [V139,T61] (  3,  1.50)   byref  ->  rsi         single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+;  V140 tmp123      [V140,T73] (  3,  1.50)     int  ->  rdx         single-def "field V65._length (fldOffset=0x8)" P-INDEP
+;* V141 tmp124      [V141    ] (  0,  0   )   byref  ->  zero-ref    "field V67._reference (fldOffset=0x0)" P-DEP
+;* V142 tmp125      [V142    ] (  0,  0   )     int  ->  zero-ref    "field V67._length (fldOffset=0x8)" P-DEP
+;  V143 tmp126      [V143,T75] (  2,  1   )   byref  ->  r12         "field V68._reference (fldOffset=0x0)" P-INDEP
+;  V144 tmp127      [V144,T80] (  2,  1   )     int  ->  rdx         "field V68._length (fldOffset=0x8)" P-INDEP
+;* V145 tmp128      [V145    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V146 tmp129      [V146    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
+;  V147 tmp130      [V147,T33] (  2,  4   )   byref  ->  rax         "field V84._reference (fldOffset=0x0)" P-INDEP
+;  V148 tmp131      [V148,T34] (  2,  4   )     int  ->  rcx         "field V84._length (fldOffset=0x8)" P-INDEP
+;* V149 tmp132      [V149    ] (  0,  0   )   byref  ->  zero-ref    "field V85._reference (fldOffset=0x0)" P-INDEP
+;* V150 tmp133      [V150    ] (  0,  0   )     int  ->  zero-ref    "field V85._length (fldOffset=0x8)" P-INDEP
+;* V151 tmp134      [V151    ] (  0,  0   )     ref  ->  zero-ref    "field V93._object (fldOffset=0x0)" P-INDEP
+;* V152 tmp135      [V152    ] (  0,  0   )     int  ->  zero-ref    "field V93._index (fldOffset=0x8)" P-INDEP
+;* V153 tmp136      [V153    ] (  0,  0   )     int  ->  zero-ref    "field V93._length (fldOffset=0xc)" P-INDEP
+;  V154 tmp137      [V154,T08] (  3, 10   )     ref  ->  [rbp-0xB0]  do-not-enreg[] "field V94._object (fldOffset=0x0)" P-DEP
+;  V155 tmp138      [V155,T09] (  3, 10   )     int  ->  [rbp-0xA8]  do-not-enreg[] "field V94._index (fldOffset=0x8)" P-DEP
+;  V156 tmp139      [V156,T10] (  3, 10   )     int  ->  [rbp-0xA4]  do-not-enreg[] "field V94._length (fldOffset=0xc)" P-DEP
+;  V157 tmp140      [V157,T23] (  3,  6   )   byref  ->  rsi         "field V95._reference (fldOffset=0x0)" P-INDEP
+;  V158 tmp141      [V158,T13] (  4,  8   )     int  ->  rdi         "field V95._length (fldOffset=0x8)" P-INDEP
+;* V159 tmp142      [V159    ] (  0,  0   )   byref  ->  zero-ref    "field V97._reference (fldOffset=0x0)" P-INDEP
+;* V160 tmp143      [V160    ] (  0,  0   )     int  ->  zero-ref    "field V97._length (fldOffset=0x8)" P-INDEP
+;* V161 tmp144      [V161    ] (  0,  0   )   byref  ->  zero-ref    "field V99._reference (fldOffset=0x0)" P-INDEP
+;* V162 tmp145      [V162    ] (  0,  0   )     int  ->  zero-ref    "field V99._length (fldOffset=0x8)" P-INDEP
+;* V163 tmp146      [V163    ] (  0,  0   )   byref  ->  zero-ref    "field V103._reference (fldOffset=0x0)" P-INDEP
+;* V164 tmp147      [V164    ] (  0,  0   )     int  ->  zero-ref    "field V103._length (fldOffset=0x8)" P-INDEP
+;* V165 tmp148      [V165    ] (  0,  0   )   byref  ->  zero-ref    "field V104._reference (fldOffset=0x0)" P-INDEP
+;* V166 tmp149      [V166    ] (  0,  0   )     int  ->  zero-ref    "field V104._length (fldOffset=0x8)" P-INDEP
+;* V167 tmp150      [V167    ] (  0,  0   )   byref  ->  zero-ref    "field V105._reference (fldOffset=0x0)" P-INDEP
+;* V168 tmp151      [V168    ] (  0,  0   )     int  ->  zero-ref    "field V105._length (fldOffset=0x8)" P-INDEP
+;* V169 tmp152      [V169    ] (  0,  0   )   byref  ->  zero-ref    "field V106._reference (fldOffset=0x0)" P-INDEP
+;* V170 tmp153      [V170    ] (  0,  0   )     int  ->  zero-ref    "field V106._length (fldOffset=0x8)" P-INDEP
+;  V171 tmp154      [V171,T81] (  2,  1   )   ubyte  ->  rsi         single-def "V07.[000..001)"
+;* V172 tmp155      [V172    ] (  0,  0   )    long  ->  zero-ref    single-def "V107.[000..008)"
+;  V173 tmp156      [V173,T56] (  2,  2   )     ref  ->  rdi         single-def "V107.[008..016)"
+;* V174 tmp157      [V174    ] (  0,  0   )     ref  ->  zero-ref    single-def "V107.[016..024)"
+;* V175 tmp158      [V175    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "V107.[028..029)"
+;  V176 tmp159      [V176,T44] (  3,  3   )   byref  ->  rdi         single-def "Spilling address for field-by-field copy"
+;  V177 tmp160      [V177,T94] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V178 tmp161      [V178,T76] (  2,  1   )     ref  ->  r13         single-def "Field obj"
+;  V179 tmp162      [V179,T45] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V180 tmp163      [V180,T46] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V181 tmp164      [V181,T47] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V182 tmp165      [V182,T48] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V183 tmp166      [V183,T49] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V184 tmp167      [V184,T50] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V185 tmp168      [V185,T06] (  3, 12   )     ref  ->  rdi         "arr expr"
+;  V186 tmp169      [V186,T14] (  3,  8   )     ref  ->  rsi         "argument with side effect"
+;  V187 tmp170      [V187,T95] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V188 tmp171      [V188,T96] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V189 tmp172      [V189,T57] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;  V190 tmp173      [V190,T97] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V191 PSPSym      [V191,T84] (  1,  1   )    long  ->  [rbp-0xF0]  do-not-enreg[V] "PSPSym"
+;  V192 cse0        [V192,T24] (  3,  6   )     ref  ->  rdi         "CSE #10: moderate"
+;  V193 cse1        [V193,T26] (  3,  6   )     int  ->  rsi         "CSE #11: moderate"
+;  V194 cse2        [V194,T62] (  3,  1.50)     ref  ->  rdx         "CSE #01: conservative"
+;  V195 cse3        [V195,T63] (  3,  1.50)     ref  ->  rdi         "CSE #02: conservative"
+;  V196 cse4        [V196,T64] (  3,  1.50)     ref  ->  rdi         "CSE #03: conservative"
+;  V197 cse5        [V197,T65] (  3,  1.50)     ref  ->  rdi         "CSE #05: conservative"
+;  V198 cse6        [V198,T29] (  3,  5   )     int  ->  [rbp-0xB8]  spill-single-def "CSE #12: moderate"
+;  V199 rat0        [V199,T01] (  5, 16.50)    long  ->  [rbp-0xC0]  "Widened IV V13"
+;  V200 rat1        [V200,T03] (  4, 14   )     ref  ->  r13         "replacement local"
+;  V201 rat2        [V201,T32] (  3,  4   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V202 rat3        [V202,T86] (  3, 12   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 200
 
 G_M28512_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 200
        lea      rbp, [rsp+0xF0]
        vxorps   xmm8, xmm8, xmm8
        vmovdqu32 zmmword ptr [rbp-0xB0], zmm8
        vmovdqu32 zmmword ptr [rbp-0x70], zmm8
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      qword ptr [rbp-0xF0], rsp
        mov      rbx, rdi
        mov      r15d, esi
 						;; size=69 bbWeight=1 PerfScore 13.83
 G_M28512_IG02:
        mov      rdi, gword ptr [rbx+0x10]
        mov      esi, 1
        mov      rax, 0xD1FFAB1E      ; code for Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName
        call     [rax]Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName
        mov      gword ptr [rbp-0xD8], rax
 						;; size=28 bbWeight=1 PerfScore 6.50
 G_M28512_IG03:
        mov      rdi, gword ptr [rbp-0xD8]
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash
        call     [rax]System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash
        mov      r14, rax
 						;; size=22 bbWeight=1 PerfScore 4.50
 G_M28512_IG04:
        cmp      gword ptr [rbx+0x40], 0
        jne      G_M28512_IG08
 						;; size=11 bbWeight=1 PerfScore 4.00
 G_M28512_IG05:
        mov      rdx, gword ptr [rbx+0x30]
        cmp      byte  ptr [rdx+0x22], 0
        je       G_M28512_IG17
        cmp      byte  ptr [rdx], dl
        add      rdx, 40
        lea      rdi, bword ptr [rdx+0x30]
        movzx    rsi, byte  ptr [rdi]
 						;; size=28 bbWeight=0.50 PerfScore 5.88
 G_M28512_IG06:
        vmovdqu  xmm0, xmmword ptr [rdi]
        vmovdqu  xmmword ptr [rbp-0x40], xmm0
        mov      rax, qword ptr [rdi+0x10]
        mov      qword ptr [rbp-0x30], rax
 						;; size=17 bbWeight=0.50 PerfScore 4.00
 G_M28512_IG07:
        test     esi, esi
        je       G_M28512_IG17
        mov      rdi, gword ptr [rbp-0x38]
        mov      rsi, qword ptr [rbp-0x30]
        mov      rdx, gword ptr [rdx+0x28]
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte]
        call     [rax]System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte]
        mov      gword ptr [rbp-0x50], rax
        mov      qword ptr [rbp-0x48], rdx
        xor      r13, r13
        xor      edx, edx
        cmp      gword ptr [rbp-0x50], 0
        je       G_M28512_IG15
        mov      rdx, gword ptr [rbp-0x50]
        mov      rdi, qword ptr [rdx]
        test     dword ptr [rdi], 0xD1FFAB1E
        je       G_M28512_IG13
        mov      r13, gword ptr [rbp-0x50]
        add      r13, 16
        mov      rdi, gword ptr [rbp-0x50]
        mov      edx, dword ptr [rdi+0x08]
        jmp      G_M28512_IG14
 						;; size=95 bbWeight=0.50 PerfScore 13.62
 G_M28512_IG08:
        mov      r13, gword ptr [rbx+0x40]
        add      r13, 144
        xor      r12, r12
        xor      edx, edx
        mov      rdi, gword ptr [r13]
        test     rdi, rdi
        je       SHORT G_M28512_IG11
        mov      rdx, qword ptr [rdi]
        test     dword ptr [rdx], 0xD1FFAB1E
        je       SHORT G_M28512_IG09
        lea      r12, bword ptr [rdi+0x10]
        mov      edx, dword ptr [rdi+0x08]
        jmp      SHORT G_M28512_IG10
 						;; size=45 bbWeight=0.50 PerfScore 8.25
 G_M28512_IG09:
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
        mov      r12, rax
 						;; size=13 bbWeight=0.50 PerfScore 3.62
 G_M28512_IG10:
        mov      edi, dword ptr [r13+0x08]
        and      edi, 0xD1FFAB1E
        mov      esi, dword ptr [r13+0x0C]
        mov      eax, esi
        add      rax, rdi
        mov      edx, edx
        cmp      rax, rdx
        ja       G_M28512_IG53
        add      r12, rdi
        mov      edx, esi
 						;; size=35 bbWeight=0.50 PerfScore 3.38
 G_M28512_IG11:
        mov      rsi, r12
        cmp      byte  ptr [r14+0x1C], 0
        jne      G_M28512_IG52
        mov      rdi, gword ptr [r14+0x08]
        test     rdi, rdi
        je       SHORT G_M28512_IG12
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
        jmp      G_M28512_IG19
 						;; size=38 bbWeight=0.50 PerfScore 8.25
 G_M28512_IG12:
        mov      rdi, gword ptr [r14+0x10]
        mov      rdi, gword ptr [rdi+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
        jmp      G_M28512_IG19
 						;; size=23 bbWeight=0.50 PerfScore 6.50
 G_M28512_IG13:
        mov      rdi, gword ptr [rbp-0x50]
        mov      rax, gword ptr [rbp-0x50]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
        mov      r13, rax
 						;; size=21 bbWeight=0.50 PerfScore 4.62
 G_M28512_IG14:
        mov      edi, dword ptr [rbp-0x48]
        and      edi, 0xD1FFAB1E
        mov      esi, dword ptr [rbp-0x44]
        add      rsi, rdi
        mov      edx, edx
        cmp      rsi, rdx
        ja       G_M28512_IG53
        add      r13, rdi
        mov      edx, dword ptr [rbp-0x44]
 						;; size=32 bbWeight=0.50 PerfScore 2.62
 G_M28512_IG15:
        mov      rsi, r13
        cmp      byte  ptr [r14+0x1C], 0
        jne      G_M28512_IG52
        mov      rdi, gword ptr [r14+0x08]
        test     rdi, rdi
        je       SHORT G_M28512_IG16
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
        jmp      SHORT G_M28512_IG17
 						;; size=35 bbWeight=0.50 PerfScore 8.25
 G_M28512_IG16:
        mov      rdi, gword ptr [r14+0x10]
        mov      rdi, gword ptr [rdi+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
 						;; size=18 bbWeight=0.50 PerfScore 5.50
 G_M28512_IG17:
        mov      rdi, gword ptr [rbx+0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this
        cmp      byte  ptr [r14+0x1C], 0
        jne      G_M28512_IG52
        mov      rdi, gword ptr [r14+0x08]
        test     rdi, rdi
        je       SHORT G_M28512_IG18
        mov      rsi, rax
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
        jmp      SHORT G_M28512_IG19
 						;; size=53 bbWeight=0.50 PerfScore 12.38
 G_M28512_IG18:
        mov      rdi, gword ptr [r14+0x10]
        mov      rdi, gword ptr [rdi+0x18]
        mov      rsi, rax
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this
 						;; size=21 bbWeight=0.50 PerfScore 5.62
 G_M28512_IG19:
        cmp      gword ptr [rbx+0x40], 0
        jne      SHORT G_M28512_IG21
 						;; size=7 bbWeight=1 PerfScore 4.00
 G_M28512_IG20:
        cmp      gword ptr [rbx+0x18], 0
        setne    dil
        movzx    rdi, dil
        jmp      SHORT G_M28512_IG22
 						;; size=15 bbWeight=0.50 PerfScore 3.12
 G_M28512_IG21:
        mov      edi, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M28512_IG22:
        movzx    r13, dil
        cmp      gword ptr [rbx+0x18], 0
        je       SHORT G_M28512_IG24
 						;; size=11 bbWeight=1 PerfScore 4.25
 G_M28512_IG23:
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this
        call     [rax]System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this
        mov      r12, rax
        mov      rdi, 0xD1FFAB1E      ; System.Formats.Asn1.AsnWriter
        call     CORINFO_HELP_NEWSFAST
        mov      dword ptr [rax+0x1C], 2
        mov      gword ptr [rbp-0xC8], rax
        test     r15b, r15b
        je       SHORT G_M28512_IG26
        xor      edx, edx
        xor      ecx, ecx
        lea      rsi, [rbp-0xA0]
        mov      rdi, rax
        mov      r8, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
        call     [r8]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
        jmp      SHORT G_M28512_IG27
 						;; size=81 bbWeight=0.50 PerfScore 7.38
 G_M28512_IG24:
        test     r15b, r15b
        je       G_M28512_IG45
        xor      rax, rax
 						;; size=11 bbWeight=0.50 PerfScore 0.75
 G_M28512_IG25:
        vzeroupper 
        add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=21 bbWeight=0.50 PerfScore 2.62
 G_M28512_IG26:
        xor      edx, edx
        xor      ecx, ecx
        lea      rsi, [rbp-0x80]
        mov      rdi, rax
        mov      r8, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
        call     [r8]System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
 						;; size=24 bbWeight=0.50 PerfScore 2.25
 G_M28512_IG27:
        mov      rbx, gword ptr [rbx+0x18]
        xor      eax, eax
        mov      ecx, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0xB8], ecx
        test     ecx, ecx
        jle      G_M28512_IG43
 						;; size=23 bbWeight=0.50 PerfScore 3.25
 G_M28512_IG28:
        mov      qword ptr [rbp-0xC0], rax
        mov      rdi, rax
        shl      rdi, 4
 						;; size=14 bbWeight=4 PerfScore 7.00
 G_M28512_IG29:
        vmovdqu  xmm0, xmmword ptr [rbx+rdi+0x10]
        vmovdqu  xmmword ptr [rbp-0x60], xmm0
 						;; size=11 bbWeight=4 PerfScore 20.00
 G_M28512_IG30:
        lea      rdi, [rbp-0x60]
        mov      rsi, gword ptr [rbp-0xC8]
        mov      rdx, 0xD1FFAB1E      ; code for System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this
        call     [rdx]System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this
        mov      rdi, gword ptr [rbp-0x60]
        test     rdi, rdi
        je       G_M28512_IG42
 						;; size=36 bbWeight=4 PerfScore 28.00
 G_M28512_IG31:
        cmp      dword ptr [rdi+0x08], 20
        jne      G_M28512_IG42
 						;; size=10 bbWeight=1 PerfScore 4.00
 G_M28512_IG32:
        vmovups  ymm0, ymmword ptr [rdi+0x0C]
        vpxor    ymm0, ymm0, ymmword ptr [reloc @RWD00]
        vmovups  ymm1, ymmword ptr [rdi+0x14]
        vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10
        vptest   ymm0, ymm0
        sete     dil
        movzx    rdi, dil
        test     edi, edi
        je       G_M28512_IG42
        mov      rdi, gword ptr [rbp-0x60]
        mov      rsi, gword ptr [rbp-0x58]
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject
        call     [rax]System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject
        mov      rdi, gword ptr [rax+0x08]
        mov      rdi, gword ptr [rdi+0x08]
        mov      rsi, rdi
        mov      esi, dword ptr [rsi+0x10]
        cmp      esi, 1
        jne      G_M28512_IG51
        test     esi, esi
        je       G_M28512_IG50
        mov      rdi, gword ptr [rdi+0x08]
        cmp      dword ptr [rdi+0x08], 0
        jbe      G_M28512_IG54
        mov      rsi, gword ptr [rdi+0x10]
        mov      r13, rsi
        test     r13, r13
        je       SHORT G_M28512_IG34
 						;; size=127 bbWeight=2 PerfScore 90.00
 G_M28512_IG33:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.Pkcs.Pkcs9MessageDigest
        cmp      qword ptr [r13], rdi
        jne      G_M28512_IG49
 						;; size=20 bbWeight=1 PerfScore 4.25
 G_M28512_IG34:
        test     r12, r12
        jne      SHORT G_M28512_IG35
        xor      rax, rax
        xor      ecx, ecx
        jmp      SHORT G_M28512_IG36
 						;; size=11 bbWeight=2 PerfScore 7.50
 G_M28512_IG35:
        lea      rax, bword ptr [r12+0x10]
        mov      ecx, dword ptr [r12+0x08]
-						;; size=10 bbWeight=2 PerfScore 5.00
-G_M28512_IG36:
        mov      bword ptr [rbp-0xE0], rax
        mov      dword ptr [rbp-0xB4], ecx
+       mov      rax, bword ptr [rbp-0xE0]
+       mov      ecx, dword ptr [rbp-0xB4]
+						;; size=36 bbWeight=2 PerfScore 13.00
+G_M28512_IG36:
        mov      rdx, gword ptr [r13+0x18]
        test     rdx, rdx
-       mov      rax, bword ptr [rbp-0xE0]
-       jne      SHORT G_M28512_IG39
+       jne      G_M28512_IG39
        mov      rdi, gword ptr [r13+0x10]
        test     rdi, rdi
        jne      SHORT G_M28512_IG37
        xor      rdx, rdx
+       mov      bword ptr [rbp-0xE0], rax
+       mov      dword ptr [rbp-0xB4], ecx
        jmp      SHORT G_M28512_IG38
-						;; size=42 bbWeight=2 PerfScore 23.50
+						;; size=39 bbWeight=2 PerfScore 21.50
 G_M28512_IG37:
+       mov      bword ptr [rbp-0xE0], rax
+       mov      dword ptr [rbp-0xB4], ecx
        mov      gword ptr [rbp-0xB0], rdi
        xor      esi, esi
        mov      dword ptr [rbp-0xA8], esi
        mov      edi, dword ptr [rdi+0x08]
        mov      dword ptr [rbp-0xA4], edi
        mov      rdi, gword ptr [rbp-0xB0]
        mov      rsi, qword ptr [rbp-0xA8]
        mov      rdx, 0xD1FFAB1E      ; code for Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[]
        call     [rdx]Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[]
        mov      rdx, rax
-						;; size=53 bbWeight=2 PerfScore 21.50
+						;; size=66 bbWeight=2 PerfScore 25.50
 G_M28512_IG38:
        lea      rdi, bword ptr [r13+0x18]
        mov      gword ptr [rbp-0xD0], rdx
        mov      rsi, rdx
        call     CORINFO_HELP_ASSIGN_REF
        mov      r13, gword ptr [rbp-0xD0]
        mov      rdx, r13
        mov      rax, bword ptr [rbp-0xE0]
-						;; size=36 bbWeight=2 PerfScore 10.00
+       mov      ecx, dword ptr [rbp-0xB4]
+						;; size=42 bbWeight=2 PerfScore 12.00
 G_M28512_IG39:
        test     rdx, rdx
        jne      SHORT G_M28512_IG40
        xor      rsi, rsi
        xor      edi, edi
        jmp      SHORT G_M28512_IG41
 						;; size=11 bbWeight=2 PerfScore 7.50
 G_M28512_IG40:
        lea      rsi, bword ptr [rdx+0x10]
        mov      edi, dword ptr [rdx+0x08]
 						;; size=7 bbWeight=2 PerfScore 5.00
 G_M28512_IG41:
-       cmp      dword ptr [rbp-0xB4], edi
+       cmp      ecx, edi
        jne      G_M28512_IG48
        mov      edx, edi
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        call     [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
        test     eax, eax
        je       G_M28512_IG48
        xor      r13d, r13d
-						;; size=40 bbWeight=2 PerfScore 16.50
+						;; size=36 bbWeight=2 PerfScore 13.00
 G_M28512_IG42:
        mov      rsi, qword ptr [rbp-0xC0]
        inc      esi
        mov      edx, dword ptr [rbp-0xB8]
        cmp      edx, esi
        mov      rax, rsi
        jg       G_M28512_IG28
 						;; size=26 bbWeight=4 PerfScore 15.00
 G_M28512_IG43:
        test     r15b, r15b
        je       SHORT G_M28512_IG44
        xor      esi, esi
        xor      edx, edx
        mov      rdi, gword ptr [rbp-0xC8]
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        call     [rax]System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        mov      rdi, gword ptr [rbp-0xC8]
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        call     [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        cmp      dword ptr [rax+0x08], 0
        jbe      G_M28512_IG54
        mov      byte  ptr [rax+0x10], 49
        mov      rdi, r14
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
        call     [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
        jmp      SHORT G_M28512_IG45
 						;; size=81 bbWeight=0.50 PerfScore 10.50
 G_M28512_IG44:
        xor      esi, esi
        xor      edx, edx
        mov      rdi, gword ptr [rbp-0xC8]
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        call     [rax]System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        mov      rdi, gword ptr [rbp-0xC8]
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        call     [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        mov      rsi, rax
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
        call     [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this
 						;; size=60 bbWeight=0.50 PerfScore 6.38
 G_M28512_IG45:
        test     r13d, r13d
        jne      SHORT G_M28512_IG47
        mov      rax, r14
 						;; size=8 bbWeight=0.50 PerfScore 0.75
 G_M28512_IG46:
        vzeroupper 
        add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=21 bbWeight=0.50 PerfScore 2.62
 G_M28512_IG47:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String
        call     [rax]System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String
        mov      rsi, rax
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        mov      rdi, r14
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 G_M28512_IG48:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_BadHashValue():System.String
        call     [rax]System.SR:get_Cryptography_BadHashValue():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 G_M28512_IG49:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M28512_IG50:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M28512_IG51:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_BadHashValue():System.String
        call     [rax]System.SR:get_Cryptography_BadHashValue():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
 G_M28512_IG52:
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        call     [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
 G_M28512_IG53:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M28512_IG54:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 G_M28512_IG55:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0xF0]
 						;; size=25 bbWeight=0 PerfScore 0.00
 G_M28512_IG56:
        mov      rbx, rsi
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.HashAlgorithmName
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        call     [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        mov      r14, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, gword ptr [rbp-0xD8]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.CryptographicException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rsi, r15
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object):System.String
        mov      rsi, rax
        mov      rdi, r13
        mov      rdx, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this
        call     [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=118 bbWeight=0 PerfScore 0.00
 RWD00  	dq	002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h
 RWD32  	dq	002E003000340038h, 0035003300310031h, 0031002E00390034h, 0034002E0039002Eh
 
 
-; Total bytes of code 1801, prolog size 69, PerfScore 434.08, instruction count 434, allocated bytes for code 1801 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)
+; Total bytes of code 1839, prolog size 69, PerfScore 442.58, instruction count 440, allocated bytes for code 1839 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts)

Larger list of diffs: https://gist.github.com/MihuBot/2d1cee88efc52aa5f010ace32287de75

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 12, 2024

Top method improvements

-108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this
 ; Assembly listing for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T08] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
-;  V01 arg1         [V01,T02] (  4,  4   )   byref  ->  rbx         single-def
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]>
+;  V01 arg1         [V01,T01] (  4,  4   )   byref  ->  rbx         single-def
 ;* V02 arg2         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Memory`1[System.__Canon]>
+;  V03 loc0         [V03,T16] (  2,  2   )  struct (16) [rbp-0x40]  do-not-enreg[SR] multireg-ret must-init <System.Memory`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T16] (  3,  3   )    long  ->  r13         "spilling helperCall"
+;  V05 tmp1         [V05,T14] (  3,  3   )    long  ->  r13         "spilling helperCall"
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp3         [V07,T00] (  5, 10   )     ref  ->  r14         class-hnd exact single-def "Single-def Box Helper" <System.Memory`1[System.__Canon]>
+;  V07 tmp3         [V07,T02] (  3,  6   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Memory`1[System.__Canon]>
 ;* V08 tmp4         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 tmp5         [V09,T14] (  2,  4   )   byref  ->  rbx         single-def "impImportAndPushBox"
-;  V10 tmp6         [V10,T03] (  4,  6   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V11 tmp7         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-;  V12 tmp8         [V12,T11] (  4,  4.40)    long  ->  r12         "Inlining Arg"
-;* V13 tmp9         [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V14 tmp10        [V14,T15] (  4,  3.20)    long  ->  rdi         "Inlining Arg"
-;  V15 tmp11        [V15,T20] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V17 tmp13        [V17    ] (  0,  0   )     int  ->  zero-ref    "field V03._index (fldOffset=0x8)" P-INDEP
-;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0xc)" P-INDEP
-;  V19 tmp15        [V19,T18] (  4,  2.50)     ref  ->  r12         "field V11._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16        [V20,T22] (  0,  0   )     int  ->  zero-ref    "field V11._index (fldOffset=0x8)" P-INDEP
-;  V21 tmp17        [V21,T21] (  3,  2   )     int  ->  r13         "field V11._length (fldOffset=0xc)" P-INDEP
-;  V22 cse0         [V22,T10] (  6,  4.40)    long  ->  r14         "CSE #01: aggressive"
-;  V23 rat0         [V23,T09] (  3,  4.50)     ref  ->  rsi         "Spilling to split statement for tree"
-;  V24 rat1         [V24,T01] (  5,  7.50)     ref  ->  rdi         "replacement local"
-;  V25 rat2         [V25,T19] (  3,  2.50)    long  ->  r13         "CSE for expectedClsNode"
-;  V26 rat3         [V26,T12] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V27 rat4         [V27,T04] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  V28 rat5         [V28,T05] (  3,  5.60)    long  ->  r12         "fgMakeTemp is creating a new local variable"
-;  V29 rat6         [V29,T06] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V30 rat7         [V30,T17] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V31 rat8         [V31,T13] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V32 rat9         [V32,T07] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V09 tmp5         [V09,T12] (  2,  4   )   byref  ->  rbx         single-def "impImportAndPushBox"
+;  V10 tmp6         [V10,T10] (  3,  4   )    long  ->  r12         "argument with side effect"
+;  V11 tmp7         [V11,T13] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
+;  V12 cse0         [V12,T08] (  6,  4.40)    long  ->  r14         "CSE #01: aggressive"
+;  V13 rat0         [V13,T07] (  3,  4.50)     ref  ->  rsi         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T00] (  5,  7.50)     ref  ->  rdi         "replacement local"
+;  V15 rat2         [V15,T15] (  3,  2.50)    long  ->  r13         "CSE for expectedClsNode"
+;  V16 rat3         [V16,T09] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V17 rat4         [V17,T03] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
+;  V18 rat5         [V18,T04] (  3,  5.60)    long  ->  r12         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T11] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V20 rat7         [V20,T05] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 24
 
 G_M62907_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       sub      rsp, 24
+       lea      rbp, [rsp+0x40]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x30], rdi
        mov      r15, rdi
        mov      rbx, rsi
-						;; size=26 bbWeight=1 PerfScore 9.00
+						;; size=35 bbWeight=1 PerfScore 9.50
 G_M62907_IG02:
        mov      r14, qword ptr [r15]
        mov      rdi, r14
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi+0x18]
        mov      r13, qword ptr [rsi+0x10]
        test     r13, r13
-       je       G_M62907_IG13
+       je       G_M62907_IG10
 						;; size=27 bbWeight=1 PerfScore 9.50
 G_M62907_IG03:
        mov      rdi, qword ptr [r14+0x30]
        mov      rdi, qword ptr [rdi+0x18]
        mov      r12, qword ptr [rdi+0x18]
        test     r12, r12
-       je       G_M62907_IG14
+       je       G_M62907_IG11
 						;; size=21 bbWeight=1 PerfScore 7.25
 G_M62907_IG04:
        mov      rsi, gword ptr [rbx+0x50]
        mov      rdi, rsi
        test     rdi, rdi
        je       SHORT G_M62907_IG07
 						;; size=12 bbWeight=1 PerfScore 3.50
 G_M62907_IG05:
        cmp      qword ptr [rdi], r13
        je       SHORT G_M62907_IG07
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M62907_IG06:
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        mov      rdi, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M62907_IG07:
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
-       mov      r13, rax
-       mov      rdi, qword ptr [r12+0x18]
-       mov      rdi, qword ptr [rdi+0x10]
-       test     rdi, rdi
-       je       G_M62907_IG15
-						;; size=35 bbWeight=1 PerfScore 11.75
-G_M62907_IG08:
-       test     r13, r13
-       jne      G_M62907_IG16
-						;; size=9 bbWeight=1 PerfScore 1.25
-G_M62907_IG09:
-       xor      r12, r12
-       xor      r13d, r13d
-						;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M62907_IG10:
+       mov      rsi, rax
+       mov      rdi, r12
+       mov      rax, 0xD1FFAB1E      ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+       call     [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+       mov      gword ptr [rbp-0x40], rax
+       mov      qword ptr [rbp-0x38], rdx
        mov      rdi, qword ptr [r14+0x30]
        mov      rdi, qword ptr [rdi+0x18]
        mov      rdi, qword ptr [rdi+0x20]
        test     rdi, rdi
-       je       G_M62907_IG20
-						;; size=21 bbWeight=1 PerfScore 7.25
-G_M62907_IG11:
+       je       SHORT G_M62907_IG12
+						;; size=57 bbWeight=1 PerfScore 19.25
+G_M62907_IG08:
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      rdx, rax
        add      rbx, 48
-       lea      rdi, bword ptr [r14+0x08]
-       mov      rsi, r12
-       call     CORINFO_HELP_ASSIGN_REF
-       xor      edi, edi
-       mov      dword ptr [r14+0x10], edi
-       mov      dword ptr [r14+0x14], r13d
+       lea      rdi, bword ptr [rdx+0x08]
+       lea      rsi, bword ptr [rbp-0x40]
+       call     CORINFO_HELP_ASSIGN_BYREF
+       movsq    
        lea      rdi, bword ptr [rbx+0x20]
-       mov      rsi, r14
+       mov      rsi, rdx
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 7.50
-G_M62907_IG12:
-       add      rsp, 8
+						;; size=40 bbWeight=1 PerfScore 6.50
+G_M62907_IG09:
+       add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M62907_IG13:
+G_M62907_IG10:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r13, rax
        jmp      G_M62907_IG03
 						;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M62907_IG14:
+G_M62907_IG11:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r12, rax
        jmp      G_M62907_IG04
 						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG15:
-       mov      rdi, r12
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      rdi, rax
-       jmp      G_M62907_IG08
-						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG16:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       SHORT G_M62907_IG18
-						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M62907_IG17:
-       cmp      qword ptr [r13], rax
-       je       SHORT G_M62907_IG19
-       jmp      SHORT G_M62907_IG21
-						;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M62907_IG18:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      SHORT G_M62907_IG17
-						;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M62907_IG19:
-       mov      r12, r13
-       mov      r13d, dword ptr [r12+0x08]
-       jmp      G_M62907_IG10
-						;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M62907_IG20:
+G_M62907_IG12:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
-       jmp      G_M62907_IG11
-						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M62907_IG21:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M62907_IG08
+						;; size=23 bbWeight=0.20 PerfScore 0.75
 
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this
 ; Assembly listing for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T08] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
-;  V01 arg1         [V01,T02] (  4,  4   )   byref  ->  rbx         single-def
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]>
+;  V01 arg1         [V01,T01] (  4,  4   )   byref  ->  rbx         single-def
 ;* V02 arg2         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Text.Json.JsonSerializerOptions>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.ReadOnlyMemory`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T16] (  3,  3   )    long  ->  r13         "spilling helperCall"
-;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V05 tmp1         [V05,T15] (  3,  3   )    long  ->  r13         "spilling helperCall"
+;  V06 tmp2         [V06,T10] (  3,  4   )    long  ->  r12         "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V08 tmp4         [V08    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Memory`1[System.__Canon]>
-;  V09 tmp5         [V09,T00] (  5, 10   )     ref  ->  r14         class-hnd exact single-def "Single-def Box Helper" <System.ReadOnlyMemory`1[System.__Canon]>
+;  V08 tmp4         [V08,T14] (  2,  4   )  struct (16) [rbp-0x40]  do-not-enreg[SR] multireg-ret must-init "spilled call-like call argument" <System.Memory`1[System.__Canon]>
+;  V09 tmp5         [V09,T02] (  3,  6   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.ReadOnlyMemory`1[System.__Canon]>
 ;* V10 tmp6         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V11 tmp7         [V11,T14] (  2,  4   )   byref  ->  rbx         single-def "impImportAndPushBox"
-;  V12 tmp8         [V12,T03] (  4,  6   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.__Canon[]>
-;* V13 tmp9         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Memory`1[System.__Canon]>
-;  V14 tmp10        [V14,T11] (  4,  4.40)    long  ->  r12         "Inlining Arg"
-;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V16 tmp12        [V16,T15] (  4,  3.20)    long  ->  rdi         "Inlining Arg"
-;  V17 tmp13        [V17,T20] (  3,  2   )    long  ->  rax         "spilling helperCall"
-;* V18 tmp14        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
-;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V03._object (fldOffset=0x0)" P-INDEP
-;* V20 tmp16        [V20    ] (  0,  0   )     int  ->  zero-ref    "field V03._index (fldOffset=0x8)" P-INDEP
-;* V21 tmp17        [V21    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp18        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp19        [V23    ] (  0,  0   )     int  ->  zero-ref    "field V08._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0xc)" P-INDEP
-;  V25 tmp21        [V25,T18] (  4,  2.50)     ref  ->  r12         "field V13._object (fldOffset=0x0)" P-INDEP
-;* V26 tmp22        [V26,T22] (  0,  0   )     int  ->  zero-ref    "field V13._index (fldOffset=0x8)" P-INDEP
-;  V27 tmp23        [V27,T21] (  3,  2   )     int  ->  r13         "field V13._length (fldOffset=0xc)" P-INDEP
-;* V28 tmp24        [V28    ] (  0,  0   )     ref  ->  zero-ref    "field V18._object (fldOffset=0x0)" P-INDEP
-;* V29 tmp25        [V29    ] (  0,  0   )     int  ->  zero-ref    "field V18._index (fldOffset=0x8)" P-INDEP
-;* V30 tmp26        [V30    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0xc)" P-INDEP
-;  V31 cse0         [V31,T10] (  6,  4.40)    long  ->  r14         "CSE #01: moderate"
-;  V32 rat0         [V32,T09] (  3,  4.50)     ref  ->  rsi         "Spilling to split statement for tree"
-;  V33 rat1         [V33,T01] (  5,  7.50)     ref  ->  rdi         "replacement local"
-;  V34 rat2         [V34,T19] (  3,  2.50)    long  ->  r13         "CSE for expectedClsNode"
-;  V35 rat3         [V35,T12] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V36 rat4         [V36,T04] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  V37 rat5         [V37,T05] (  3,  5.60)    long  ->  r12         "fgMakeTemp is creating a new local variable"
-;  V38 rat6         [V38,T06] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
-;  V39 rat7         [V39,T17] (  3,  2.80)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V40 rat8         [V40,T13] (  3,  4   )    long  ->  rdi         "runtime lookup"
-;  V41 rat9         [V41,T07] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
+;  V11 tmp7         [V11,T12] (  2,  4   )   byref  ->  rbx         single-def "impImportAndPushBox"
+;* V12 tmp8         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Memory`1[System.__Canon]>
+;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V03._object (fldOffset=0x0)" P-INDEP
+;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref    "field V03._index (fldOffset=0x8)" P-INDEP
+;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0xc)" P-INDEP
+;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    "field V12._object (fldOffset=0x0)" P-INDEP
+;* V17 tmp13        [V17    ] (  0,  0   )     int  ->  zero-ref    "field V12._index (fldOffset=0x8)" P-INDEP
+;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0xc)" P-INDEP
+;  V19 tmp15        [V19,T13] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
+;  V20 cse0         [V20,T08] (  6,  4.40)    long  ->  r14         "CSE #01: aggressive"
+;  V21 rat0         [V21,T07] (  3,  4.50)     ref  ->  rsi         "Spilling to split statement for tree"
+;  V22 rat1         [V22,T00] (  5,  7.50)     ref  ->  rdi         "replacement local"
+;  V23 rat2         [V23,T16] (  3,  2.50)    long  ->  r13         "CSE for expectedClsNode"
+;  V24 rat3         [V24,T09] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V25 rat4         [V25,T03] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
+;  V26 rat5         [V26,T04] (  3,  5.60)    long  ->  r12         "fgMakeTemp is creating a new local variable"
+;  V27 rat6         [V27,T11] (  3,  4   )    long  ->  rdi         "runtime lookup"
+;  V28 rat7         [V28,T05] (  3,  5.60)    long  ->  rdi         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 24
 
 G_M47357_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       sub      rsp, 24
+       lea      rbp, [rsp+0x40]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x30], rdi
        mov      r15, rdi
        mov      rbx, rsi
-						;; size=26 bbWeight=1 PerfScore 9.00
+						;; size=35 bbWeight=1 PerfScore 9.50
 G_M47357_IG02:
        mov      r14, qword ptr [r15]
        mov      rdi, r14
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi+0x18]
        mov      r13, qword ptr [rsi+0x10]
        test     r13, r13
-       je       G_M47357_IG13
+       je       G_M47357_IG10
 						;; size=27 bbWeight=1 PerfScore 9.50
 G_M47357_IG03:
        mov      rdi, qword ptr [r14+0x30]
        mov      rdi, qword ptr [rdi+0x18]
        mov      r12, qword ptr [rdi+0x18]
        test     r12, r12
-       je       G_M47357_IG14
+       je       G_M47357_IG11
 						;; size=21 bbWeight=1 PerfScore 7.25
 G_M47357_IG04:
        mov      rsi, gword ptr [rbx+0x50]
        mov      rdi, rsi
        test     rdi, rdi
        je       SHORT G_M47357_IG07
 						;; size=12 bbWeight=1 PerfScore 3.50
 G_M47357_IG05:
        cmp      qword ptr [rdi], r13
        je       SHORT G_M47357_IG07
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M47357_IG06:
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        mov      rdi, rax
 						;; size=18 bbWeight=0.25 PerfScore 0.94
 G_M47357_IG07:
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
-       mov      r13, rax
-       mov      rdi, qword ptr [r12+0x18]
-       mov      rdi, qword ptr [rdi+0x10]
-       test     rdi, rdi
-       je       G_M47357_IG15
-						;; size=35 bbWeight=1 PerfScore 11.75
-G_M47357_IG08:
-       test     r13, r13
-       jne      G_M47357_IG16
-						;; size=9 bbWeight=1 PerfScore 1.25
-G_M47357_IG09:
-       xor      r12, r12
-       xor      r13d, r13d
-						;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M47357_IG10:
+       mov      rsi, rax
+       mov      rdi, r12
+       mov      rax, 0xD1FFAB1E      ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+       call     [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon]
+       mov      gword ptr [rbp-0x40], rax
+       mov      qword ptr [rbp-0x38], rdx
        mov      rdi, qword ptr [r14+0x30]
        mov      rdi, qword ptr [rdi+0x18]
        mov      rdi, qword ptr [rdi+0x28]
        test     rdi, rdi
-       je       G_M47357_IG20
-						;; size=21 bbWeight=1 PerfScore 7.25
-G_M47357_IG11:
+       je       SHORT G_M47357_IG12
+						;; size=57 bbWeight=1 PerfScore 19.25
+G_M47357_IG08:
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      rdx, rax
        add      rbx, 48
-       lea      rdi, bword ptr [r14+0x08]
-       mov      rsi, r12
-       call     CORINFO_HELP_ASSIGN_REF
-       xor      edi, edi
-       mov      dword ptr [r14+0x10], edi
-       mov      dword ptr [r14+0x14], r13d
+       lea      rdi, bword ptr [rdx+0x08]
+       lea      rsi, bword ptr [rbp-0x40]
+       call     CORINFO_HELP_ASSIGN_BYREF
+       movsq    
        lea      rdi, bword ptr [rbx+0x20]
-       mov      rsi, r14
+       mov      rsi, rdx
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 7.50
-G_M47357_IG12:
-       add      rsp, 8
+						;; size=40 bbWeight=1 PerfScore 6.50
+G_M47357_IG09:
+       add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M47357_IG13:
+G_M47357_IG10:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r13, rax
        jmp      G_M47357_IG03
 						;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M47357_IG14:
+G_M47357_IG11:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r12, rax
        jmp      G_M47357_IG04
 						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG15:
-       mov      rdi, r12
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_METHOD
-       mov      rdi, rax
-       jmp      G_M47357_IG08
-						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG16:
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x10]
-       test     rax, rax
-       je       SHORT G_M47357_IG18
-						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M47357_IG17:
-       cmp      qword ptr [r13], rax
-       je       SHORT G_M47357_IG19
-       jmp      SHORT G_M47357_IG21
-						;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M47357_IG18:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       jmp      SHORT G_M47357_IG17
-						;; size=17 bbWeight=0.10 PerfScore 0.33
-G_M47357_IG19:
-       mov      r12, r13
-       mov      r13d, dword ptr [r12+0x08]
-       jmp      G_M47357_IG10
-						;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M47357_IG20:
+G_M47357_IG12:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rdi, rax
-       jmp      G_M47357_IG11
-						;; size=26 bbWeight=0.20 PerfScore 0.75
-G_M47357_IG21:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArrayTypeMismatchException()
-       call     [rax]System.ThrowHelper:ThrowArrayTypeMismatchException()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
+       jmp      SHORT G_M47357_IG08
+						;; size=23 bbWeight=0.20 PerfScore 0.75
 
-; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
+; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)

Larger list of diffs: https://gist.github.com/MihuBot/9e604cc6895aba1d5a43d27add98a67c

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 12, 2024

@xtqqczze

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant