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] [EgorBo] Fix PHI non-null pattern #477

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

[JitDiff X64] [EgorBo] Fix PHI non-null pattern #477

MihuBot opened this issue Jul 5, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 5, 2024

Job completed in 14 minutes.
dotnet/runtime#104493

Diffs

Diffs
Found 288 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41563833
Total bytes of diff: 41562544
Total bytes of delta: -1289 (-0.00 % of base)
Total relative delta: -2.38
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
           2 : System.Linq.Expressions.dasm (0.00 % of base)

Top file improvements (bytes):
        -332 : System.Linq.dasm (-0.03 % of base)
        -260 : System.Security.Cryptography.dasm (-0.02 % of base)
        -217 : System.Private.CoreLib.dasm (-0.00 % of base)
         -80 : System.Private.Xml.dasm (-0.00 % of base)
         -66 : ILCompiler.Reflection.ReadyToRun.dasm (-0.03 % of base)
         -43 : System.ComponentModel.TypeConverter.dasm (-0.01 % of base)
         -40 : System.Net.Ping.dasm (-0.08 % of base)
         -37 : System.Net.Http.dasm (-0.00 % of base)
         -30 : Microsoft.Extensions.Http.dasm (-0.04 % of base)
         -24 : System.Data.Common.dasm (-0.00 % of base)
         -23 : System.Text.Json.dasm (-0.00 % of base)
         -19 : System.DirectoryServices.Protocols.dasm (-0.01 % of base)
         -18 : System.Runtime.Numerics.dasm (-0.02 % of base)
         -17 : System.Private.DataContractSerialization.dasm (-0.00 % of base)
         -12 : runincontext.dasm (-0.08 % of base)
         -12 : Microsoft.VisualBasic.Core.dasm (-0.00 % of base)
         -10 : System.Text.RegularExpressions.dasm (-0.00 % of base)
          -9 : System.Configuration.ConfigurationManager.dasm (-0.00 % of base)
          -7 : Microsoft.CSharp.dasm (-0.00 % of base)
          -5 : System.Net.Primitives.dasm (-0.01 % of base)
          -5 : System.Net.HttpListener.dasm (-0.00 % of base)
          -5 : System.Net.Mail.dasm (-0.00 % of base)
          -5 : Microsoft.Extensions.DependencyModel.dasm (-0.01 % of base)
          -5 : System.IO.Packaging.dasm (-0.01 % of base)
          -5 : Microsoft.Extensions.Configuration.FileExtensions.dasm (-0.10 % of base)
          -3 : System.Diagnostics.Process.dasm (-0.00 % of base)
          -2 : System.Formats.Tar.dasm (-0.00 % of base)

28 total files with Code Size differences (27 improved, 1 regressed), 231 unchanged.

Top method regressions (bytes):
          11 (1.31 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts)
           7 (0.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

Top method improvements (bytes):
         -74 (-9.01 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
         -74 (-8.79 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
         -68 (-4.08 % of base) : System.Private.CoreLib.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__101:MoveNext():this (FullOpts)
         -50 (-10.66 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition:GetSlotState(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,ushort):System.String:this (FullOpts)
         -47 (-13.35 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.LiteHashProvider:CreateKmac(System.String,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],ubyte):System.Security.Cryptography.LiteKmac (FullOpts)
         -40 (-8.62 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.UnixCommandLinePing:GetPingUtilityPath(ubyte):System.String (FullOpts)
         -40 (-1.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:Decode(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
         -39 (-7.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -27 (-1.88 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WriteLiteralHeader(System.String,System.ReadOnlySpan`1[System.String],System.Text.Encoding,byref):this (FullOpts)
         -25 (-0.84 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.DependencyInjection.SocketsHttpHandlerBuilderExtensions+SocketsHttpHandlerConfiguration:PrintMembers(System.Text.StringBuilder):ubyte:this (FullOpts)
         -25 (-0.96 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:VerifyX509Signature(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn):ubyte (FullOpts)
         -24 (-1.06 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[double,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[int,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[long,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[short,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.20 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Nullable`1[int],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[ubyte,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-8.68 % of base) : System.Text.Json.dasm - System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NodeWrongType(System.ReadOnlySpan`1[System.String]) (FullOpts)
         -19 (-1.94 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:InternalConnectToServer():int:this (FullOpts)
         -17 (-4.75 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.SchemaExporter:IsSpecialXmlType(System.Type,byref,byref,byref):ubyte (FullOpts)
         -16 (-3.30 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.IServiceProvider,System.Type,System.Type[],System.Object[]):System.Object:this (FullOpts)
         -15 (-1.77 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         -12 (-5.04 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlString:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlString (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts)
         -11 (-2.74 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts)
         -11 (-1.74 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncodeToBytes(ubyte[],int,int):ubyte[] (FullOpts)
         -11 (-2.78 % of base) : System.Private.CoreLib.dasm - System.String:Concat(System.ReadOnlySpan`1[System.String]):System.String (FullOpts)
         -11 (-2.17 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String (FullOpts)
         -10 (-1.04 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Strings:GetFormatString(int,int,int,int,int):System.String (FullOpts)
         -10 (-2.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:StripSecondsFromPattern(System.String):System.String (FullOpts)
         -10 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
         -10 (-0.34 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ScanLiteral(int):int:this (FullOpts)
         -10 (-0.22 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ScanLiteralAsync>d__185:MoveNext():this (FullOpts)
          -9 (-2.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.CultureInfoConverter:GetStandardValues(System.ComponentModel.ITypeDescriptorContext):System.ComponentModel.TypeConverter+StandardValuesCollection:this (FullOpts)
          -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ResetMethodValue():System.Reflection.MethodInfo:this (FullOpts)
          -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ShouldSerializeMethodValue():System.Reflection.MethodInfo:this (FullOpts)
          -9 (-2.18 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (FullOpts)
          -9 (-2.91 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.UInt128):System.Numerics.BigInteger (FullOpts)
          -7 (-0.37 % of base) : runincontext.dasm - TestRunner:ExecuteAndUnload(System.Collections.Generic.List`1[System.WeakReference],byref,byref):int:this (FullOpts)
          -6 (-0.26 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParseInstanceMethodEntrypoints(ubyte[]):this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts)
          -5 (-1.82 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.SignatureDecoder:EmitSignatureBinaryFrom(System.Text.StringBuilder,int):this (FullOpts)
          -5 (-0.14 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
          -5 (-2.65 % of base) : System.Private.CoreLib.dasm - Interop+Sys:GetUnixVersion():System.String (FullOpts)
          -5 (-0.24 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendType(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this (FullOpts)
          -5 (-0.66 % of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts)
          -5 (-0.12 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssetGroups(System.String,System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeAssetGroup],ubyte,System.Text.Json.Utf8JsonWriter):ubyte (FullOpts)
          -5 (-0.64 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:ToString():System.String:this (FullOpts)
          -5 (-0.45 % of base) : runincontext.dasm - RunInContext:Main(System.String[]):int (FullOpts)
          -5 (-0.14 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.MgmtConfigurationRecord:SaveAs(System.String,int,ubyte):this (FullOpts)
          -5 (-2.26 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(int,int):System.String (FullOpts)
          -5 (-2.23 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(short,int):System.String (FullOpts)
          -5 (-0.11 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
          -5 (-0.06 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
          -5 (-1.22 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitGoto(System.Linq.Expressions.GotoExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -5 (-0.51 % of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:Add(System.Net.Cookie):this (FullOpts)
          -5 (-0.57 % of base) : System.Net.Http.dasm - System.Net.Http.AuthenticationHelper:TryGetAuthenticationChallenge(System.Net.Http.HttpResponseMessage,ubyte,System.Uri,System.Net.ICredentials,byref):ubyte (FullOpts)
          -5 (-1.11 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:get_Http2AltSvcOriginUri():ubyte[]:this (FullOpts)
          -5 (-0.99 % of base) : System.Net.HttpListener.dasm - System.Net.HttpResponseStream:GetChunkSizeBytes(int,ubyte):ubyte[] (FullOpts)
          -5 (-0.56 % of base) : System.Net.Mail.dasm - System.Net.Mime.SmtpDateTime:ToString():System.String:this (FullOpts)
          -5 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:AppendParameters(byref,System.Type[],int) (FullOpts)
          -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddSpace(ubyte,ubyte):this (FullOpts)
          -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddWord(ubyte,ubyte):this (FullOpts)
          -5 (-1.31 % of base) : System.Private.CoreLib.dasm - System.Text.TranscodingStream:FinalFlushWriteBuffers():System.ArraySegment`1[ubyte]:this (FullOpts)
          -5 (-0.09 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteMember(System.Xml.Serialization.SourceInfo,System.Xml.Serialization.AttributeAccessor,System.Xml.Serialization.TypeDesc,System.String):this (FullOpts)
          -5 (-0.11 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
          -5 (-0.09 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<ParseAttributeValueSlowAsync>d__532:MoveNext():this (FullOpts)
          -5 (-0.50 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:StartDocument(int):this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[int]:Rent(int):int[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
          -4 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
          -4 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.NameValueSectionHandler:CreateStatic(System.Object,System.Xml.XmlNode,System.String,System.String):System.Object (FullOpts)
          -4 (-0.73 % of base) : System.Data.Common.dasm - System.Data.DataRowView:CreateChildView(System.Data.DataRelation,ubyte):System.Data.DataView:this (FullOpts)
          -4 (-1.33 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Create(System.String,System.String,ubyte,byref):System.IO.FileSystemInfo (FullOpts)
          -4 (-0.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TempAssemblyCache:Add(System.String,System.Type,System.Xml.Serialization.TempAssembly):this (FullOpts)
          -3 (-0.27 % of base) : System.Data.Common.dasm - System.Data.Common.ObjectStorage:GetXmlSerializer(System.Type,System.Xml.Serialization.XmlRootAttribute):System.Xml.Serialization.XmlSerializer (FullOpts)
          -3 (-1.14 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessWaitState:ReleaseRef():this (FullOpts)
          -3 (-0.69 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:GetStringForPartUriFromAnyUri(System.Uri):System.String (FullOpts)
          -3 (-0.10 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILStorageMethods:.ctor(System.Type):this (FullOpts)
          -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XmlQueryType:ToString(System.String):System.String:this (FullOpts)
          -2 (-0.11 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:BindCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.ExprWithArgs:this (FullOpts)
          -2 (-0.16 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.NewLateBinding:ObjectLateGet(System.Object,System.Type,System.String,System.Object[],System.String[],System.Type[],ubyte[]):System.Object (FullOpts)

Top method regressions (percentages):
          11 (1.31 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts)
           7 (0.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

Top method improvements (percentages):
         -47 (-13.35 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.LiteHashProvider:CreateKmac(System.String,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],ubyte):System.Security.Cryptography.LiteKmac (FullOpts)
         -50 (-10.66 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition:GetSlotState(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,ushort):System.String:this (FullOpts)
         -74 (-9.01 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
         -74 (-8.79 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
         -23 (-8.68 % of base) : System.Text.Json.dasm - System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NodeWrongType(System.ReadOnlySpan`1[System.String]) (FullOpts)
         -40 (-8.62 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.UnixCommandLinePing:GetPingUtilityPath(ubyte):System.String (FullOpts)
         -39 (-7.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[double,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[int,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[long,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[short,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Nullable`1[int],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[ubyte,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -23 (-5.20 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts)
         -12 (-5.04 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlString:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlString (FullOpts)
         -17 (-4.75 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.SchemaExporter:IsSpecialXmlType(System.Type,byref,byref,byref):ubyte (FullOpts)
         -68 (-4.08 % of base) : System.Private.CoreLib.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__101:MoveNext():this (FullOpts)
          -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddSpace(ubyte,ubyte):this (FullOpts)
          -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddWord(ubyte,ubyte):this (FullOpts)
         -16 (-3.30 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.IServiceProvider,System.Type,System.Type[],System.Object[]):System.Object:this (FullOpts)
          -9 (-2.91 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.UInt128):System.Numerics.BigInteger (FullOpts)
         -11 (-2.78 % of base) : System.Private.CoreLib.dasm - System.String:Concat(System.ReadOnlySpan`1[System.String]):System.String (FullOpts)
         -11 (-2.74 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts)
          -5 (-2.65 % of base) : System.Private.CoreLib.dasm - Interop+Sys:GetUnixVersion():System.String (FullOpts)
         -10 (-2.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:StripSecondsFromPattern(System.String):System.String (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts)
          -5 (-2.26 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(int,int):System.String (FullOpts)
          -5 (-2.23 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(short,int):System.String (FullOpts)
          -9 (-2.18 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (FullOpts)
         -11 (-2.17 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String (FullOpts)
          -9 (-2.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.CultureInfoConverter:GetStandardValues(System.ComponentModel.ITypeDescriptorContext):System.ComponentModel.TypeConverter+StandardValuesCollection:this (FullOpts)
          -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ResetMethodValue():System.Reflection.MethodInfo:this (FullOpts)
          -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ShouldSerializeMethodValue():System.Reflection.MethodInfo:this (FullOpts)
         -19 (-1.94 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:InternalConnectToServer():int:this (FullOpts)
         -27 (-1.88 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WriteLiteralHeader(System.String,System.ReadOnlySpan`1[System.String],System.Text.Encoding,byref):this (FullOpts)
         -40 (-1.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:Decode(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
          -5 (-1.82 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.SignatureDecoder:EmitSignatureBinaryFrom(System.Text.StringBuilder,int):this (FullOpts)
         -15 (-1.77 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         -11 (-1.74 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncodeToBytes(ubyte[],int,int):ubyte[] (FullOpts)
          -4 (-1.33 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Create(System.String,System.String,ubyte,byref):System.IO.FileSystemInfo (FullOpts)
          -5 (-1.31 % of base) : System.Private.CoreLib.dasm - System.Text.TranscodingStream:FinalFlushWriteBuffers():System.ArraySegment`1[ubyte]:this (FullOpts)
          -5 (-1.22 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitGoto(System.Linq.Expressions.GotoExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -2 (-1.14 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts)
          -3 (-1.14 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessWaitState:ReleaseRef():this (FullOpts)
          -5 (-1.11 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:get_Http2AltSvcOriginUri():ubyte[]:this (FullOpts)
         -24 (-1.06 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts)
         -10 (-1.04 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Strings:GetFormatString(int,int,int,int,int):System.String (FullOpts)
          -5 (-0.99 % of base) : System.Net.HttpListener.dasm - System.Net.HttpResponseStream:GetChunkSizeBytes(int,ubyte):ubyte[] (FullOpts)
         -25 (-0.96 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:VerifyX509Signature(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn):ubyte (FullOpts)
         -25 (-0.84 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.DependencyInjection.SocketsHttpHandlerBuilderExtensions+SocketsHttpHandlerConfiguration:PrintMembers(System.Text.StringBuilder):ubyte:this (FullOpts)
          -2 (-0.83 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[int]:Rent(int):int[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts)
          -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
          -4 (-0.73 % of base) : System.Data.Common.dasm - System.Data.DataRowView:CreateChildView(System.Data.DataRelation,ubyte):System.Data.DataView:this (FullOpts)
          -3 (-0.69 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:GetStringForPartUriFromAnyUri(System.Uri):System.String (FullOpts)
          -5 (-0.66 % of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts)
          -5 (-0.64 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:ToString():System.String:this (FullOpts)
          -4 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)
          -5 (-0.57 % of base) : System.Net.Http.dasm - System.Net.Http.AuthenticationHelper:TryGetAuthenticationChallenge(System.Net.Http.HttpResponseMessage,ubyte,System.Uri,System.Net.ICredentials,byref):ubyte (FullOpts)
          -5 (-0.56 % of base) : System.Net.Mail.dasm - System.Net.Mime.SmtpDateTime:ToString():System.String:this (FullOpts)
          -4 (-0.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TempAssemblyCache:Add(System.String,System.Type,System.Xml.Serialization.TempAssembly):this (FullOpts)
          -5 (-0.51 % of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:Add(System.Net.Cookie):this (FullOpts)
          -5 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:AppendParameters(byref,System.Type[],int) (FullOpts)
          -5 (-0.50 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:StartDocument(int):this (FullOpts)
          -5 (-0.45 % of base) : runincontext.dasm - RunInContext:Main(System.String[]):int (FullOpts)
          -4 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.NameValueSectionHandler:CreateStatic(System.Object,System.Xml.XmlNode,System.String,System.String):System.Object (FullOpts)
          -2 (-0.41 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts)
          -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts)
          -7 (-0.37 % of base) : runincontext.dasm - TestRunner:ExecuteAndUnload(System.Collections.Generic.List`1[System.WeakReference],byref,byref):int:this (FullOpts)
          -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts)
          -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts)
          -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts)
          -2 (-0.35 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:ResolvePartUri(System.Uri,System.Uri):System.Uri (FullOpts)
          -2 (-0.34 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         -10 (-0.34 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ScanLiteral(int):int:this (FullOpts)
          -2 (-0.32 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts)
         -10 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
          -3 (-0.27 % of base) : System.Data.Common.dasm - System.Data.Common.ObjectStorage:GetXmlSerializer(System.Type,System.Xml.Serialization.XmlRootAttribute):System.Xml.Serialization.XmlSerializer (FullOpts)
          -6 (-0.26 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParseInstanceMethodEntrypoints(ubyte[]):this (FullOpts)
          -5 (-0.24 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendType(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this (FullOpts)
          -2 (-0.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         -10 (-0.22 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ScanLiteralAsync>d__185:MoveNext():this (FullOpts)
          -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XmlQueryType:ToString(System.String):System.String:this (FullOpts)

118 total methods with Code Size differences (116 improved, 2 regressed), 252556 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 5, 2024

Top method regressions

11 (1.31 % of base) - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this
 ; Assembly listing for method System.Threading.TimerQueueTimer:get_DisplayString():System.String: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; 30 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] (  9,  8   )     ref  ->  rbx         this class-hnd single-def <System.Threading.TimerQueueTimer>
 ;  V01 loc0         [V01,T08] (  4,  3.50)     ref  ->  r15         class-hnd <System.String>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T02] (  4,  6   )     ref  ->  rax         class-hnd single-def "dup spill" <System.Type>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V05 tmp3         [V05,T17] (  4,  2.50)     ref  ->  rdi        
 ;  V06 tmp4         [V06,T00] ( 12, 24   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.String[]>
 ;* V07 tmp5         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref   
 ;* V10 tmp8         [V10    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V11 tmp9         [V11    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V12 tmp10        [V12    ] (  0,  0   )     int  ->  zero-ref   
-;  V13 tmp11        [V13,T09] (  5,  3   )     ref  ->  rdi        
+;  V13 tmp11        [V13,T09] (  4,  3.50)     ref  ->  rdi        
 ;* V14 tmp12        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp13        [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V16 tmp14        [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V18 tmp16        [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp17        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V20 tmp18        [V20    ] (  0,  0   )     int  ->  zero-ref   
-;  V21 tmp19        [V21,T20] (  3,  2   )     ref  ->  rdx        
+;  V21 tmp19        [V21,T21] (  2,  2   )     ref  ->  rdx        
 ;* V22 tmp20        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V23 tmp21        [V23    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V24 tmp22        [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp23        [V25    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V26 tmp24        [V26    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V27 tmp25        [V27    ] (  0,  0   )     int  ->  zero-ref   
-;  V28 tmp26        [V28,T10] (  5,  3   )     ref  ->  rdi        
+;  V28 tmp26        [V28,T10] (  4,  3.50)     ref  ->  rdi        
 ;* V29 tmp27        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V30 tmp28        [V30    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V31 tmp29        [V31    ] (  0,  0   )     int  ->  zero-ref   
 ;* V32 tmp30        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V33 tmp31        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V34 tmp32        [V34    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V35 tmp33        [V35    ] (  0,  0   )     int  ->  zero-ref   
-;  V36 tmp34        [V36,T21] (  3,  2   )     ref  ->  rdx        
+;  V36 tmp34        [V36,T22] (  2,  2   )     ref  ->  rdx        
 ;  V37 tmp35        [V37,T03] (  4,  6   )     ref  ->  rdi         class-hnd single-def "dup spill" <System.Object>
 ;* V38 tmp36        [V38    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V39 tmp37        [V39    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V40 tmp38        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp39        [V41    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V42 tmp40        [V42    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V43 tmp41        [V43    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V44 tmp42        [V44    ] (  0,  0   )     int  ->  zero-ref   
-;  V45 tmp43        [V45,T22] (  3,  2   )     ref  ->  rdx        
+;  V45 tmp43        [V45,T20] (  3,  2   )     ref  ->  rdx        
 ;* V46 tmp44        [V46    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V47 tmp45        [V47    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V48 tmp46        [V48    ] (  0,  0   )     int  ->  zero-ref   
 ;  V49 tmp47        [V49,T06] (  5,  5   )     ref  ->  rdx        
 ;  V50 tmp48        [V50,T11] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "Single-def Box Helper" <System.TimeSpan>
 ;  V51 tmp49        [V51,T12] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "Single-def Box Helper" <System.TimeSpan>
 ;* V52 tmp50        [V52    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.TimerCallback>
 ;  V53 tmp51        [V53,T13] (  3,  3   )    long  ->  rdx         "Inlining Arg"
 ;* V54 tmp52        [V54    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
 ;* V55 tmp53        [V55    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V56 tmp54        [V56    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V57 tmp55        [V57    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
 ;* V58 tmp56        [V58    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V59 tmp57        [V59,T18] (  4,  2   )    long  ->  rax         ld-addr-op "Inline ldloca(s) first use temp"
+;  V59 tmp57        [V59,T18] (  4,  2   )    long  ->  r13         ld-addr-op "Inline ldloca(s) first use temp"
 ;* V60 tmp58        [V60    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V61 tmp59        [V61    ] (  2,  1   )    long  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V62 tmp60        [V62,T23] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;  V61 tmp59        [V61    ] (  2,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V62 tmp60        [V62,T23] (  2,  2   )    long  ->  rsi         "impAppendStmt"
 ;* V63 tmp61        [V63    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V64 tmp62        [V64    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V65 tmp63        [V65    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V66 tmp64        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V67 tmp65        [V67    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V68 tmp66        [V68    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V69 tmp67        [V69    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V70 tmp68        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V71 tmp69        [V71    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V72 tmp70        [V72    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V73 tmp71        [V73    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V74 tmp72        [V74    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V75 tmp73        [V75    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V76 tmp74        [V76    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V77 tmp75        [V77,T27] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V78 tmp76        [V78    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V79 tmp77        [V79    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V80 tmp78        [V80    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V81 tmp79        [V81,T28] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V82 tmp80        [V82    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V83 tmp81        [V83    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
 ;  V84 tmp82        [V84,T14] (  3,  3   )    long  ->  rdx         "Inlining Arg"
 ;* V85 tmp83        [V85    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.Int128>
 ;* V86 tmp84        [V86    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V87 tmp85        [V87    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V88 tmp86        [V88    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
 ;* V89 tmp87        [V89    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
-;  V90 tmp88        [V90,T19] (  4,  2   )    long  ->  rax         ld-addr-op "Inline ldloca(s) first use temp"
+;  V90 tmp88        [V90,T19] (  4,  2   )    long  ->  r12         ld-addr-op "Inline ldloca(s) first use temp"
 ;* V91 tmp89        [V91    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
-;  V92 tmp90        [V92    ] (  2,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V93 tmp91        [V93,T24] (  2,  2   )    long  ->  rdi         "impAppendStmt"
+;  V92 tmp90        [V92    ] (  2,  1   )    long  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V93 tmp91        [V93,T24] (  2,  2   )    long  ->  rsi         "impAppendStmt"
 ;* V94 tmp92        [V94    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V95 tmp93        [V95    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V96 tmp94        [V96    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V97 tmp95        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V98 tmp96        [V98    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V99 tmp97        [V99    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V100 tmp98       [V100    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V101 tmp99       [V101    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V102 tmp100      [V102    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V103 tmp101      [V103    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V104 tmp102      [V104    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Int128>
 ;* V105 tmp103      [V105    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V106 tmp104      [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V107 tmp105      [V107    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V108 tmp106      [V108,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V109 tmp107      [V109    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V110 tmp108      [V110    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Int128>
 ;* V111 tmp109      [V111    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V112 tmp110      [V112,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V113 tmp111      [V113    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V114 tmp112      [V114    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.TimeSpan>
 ;* V115 tmp113      [V115    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.TimerCallback>
 ;* V116 tmp114      [V116    ] (  0,  0   )    long  ->  zero-ref    "field V54._lower (fldOffset=0x0)" P-INDEP
 ;* V117 tmp115      [V117    ] (  0,  0   )    long  ->  zero-ref    "field V54._upper (fldOffset=0x8)" P-INDEP
 ;* V118 tmp116      [V118    ] (  0,  0   )    long  ->  zero-ref    "field V55._lower (fldOffset=0x0)" P-INDEP
 ;* V119 tmp117      [V119    ] (  0,  0   )    long  ->  zero-ref    "field V55._upper (fldOffset=0x8)" P-INDEP
 ;* V120 tmp118      [V120    ] (  0,  0   )    long  ->  zero-ref    "field V56._lower (fldOffset=0x0)" P-INDEP
 ;* V121 tmp119      [V121    ] (  0,  0   )    long  ->  zero-ref    "field V56._upper (fldOffset=0x8)" P-INDEP
 ;* V122 tmp120      [V122    ] (  0,  0   )    long  ->  zero-ref    "field V58._lower (fldOffset=0x0)" P-INDEP
-;  V123 tmp121      [V123,T15] (  5,  2.50)    long  ->  rdi         "field V58._upper (fldOffset=0x8)" P-INDEP
+;  V123 tmp121      [V123,T15] (  5,  2.50)    long  ->  rsi         "field V58._upper (fldOffset=0x8)" P-INDEP
 ;* V124 tmp122      [V124    ] (  0,  0   )    long  ->  zero-ref    "field V66._lower (fldOffset=0x0)" P-INDEP
 ;* V125 tmp123      [V125    ] (  0,  0   )    long  ->  zero-ref    "field V66._upper (fldOffset=0x8)" P-INDEP
 ;* V126 tmp124      [V126    ] (  0,  0   )    long  ->  zero-ref    "field V70._lower (fldOffset=0x0)" P-INDEP
 ;* V127 tmp125      [V127    ] (  0,  0   )    long  ->  zero-ref    "field V70._upper (fldOffset=0x8)" P-INDEP
 ;* V128 tmp126      [V128    ] (  0,  0   )    long  ->  zero-ref    "field V72._lower (fldOffset=0x0)" P-INDEP
 ;* V129 tmp127      [V129    ] (  0,  0   )    long  ->  zero-ref    "field V72._upper (fldOffset=0x8)" P-INDEP
 ;* V130 tmp128      [V130    ] (  0,  0   )    long  ->  zero-ref    "field V73._lower (fldOffset=0x0)" P-INDEP
 ;* V131 tmp129      [V131    ] (  0,  0   )    long  ->  zero-ref    "field V73._upper (fldOffset=0x8)" P-INDEP
 ;* V132 tmp130      [V132    ] (  0,  0   )    long  ->  zero-ref    "field V75._lower (fldOffset=0x0)" P-INDEP
 ;* V133 tmp131      [V133    ] (  0,  0   )    long  ->  zero-ref    "field V75._upper (fldOffset=0x8)" P-INDEP
 ;* V134 tmp132      [V134    ] (  0,  0   )    long  ->  zero-ref    "field V79._lower (fldOffset=0x0)" P-INDEP
 ;* V135 tmp133      [V135    ] (  0,  0   )    long  ->  zero-ref    "field V79._upper (fldOffset=0x8)" P-INDEP
-;  V136 tmp134      [V136,T25] (  2,  1   )    long  ->  r13         "field V83._ticks (fldOffset=0x0)" P-INDEP
+;  V136 tmp134      [V136,T25] (  2,  1   )    long  ->  r12         "field V83._ticks (fldOffset=0x0)" P-INDEP
 ;* V137 tmp135      [V137    ] (  0,  0   )    long  ->  zero-ref    "field V85._lower (fldOffset=0x0)" P-INDEP
 ;* V138 tmp136      [V138    ] (  0,  0   )    long  ->  zero-ref    "field V85._upper (fldOffset=0x8)" P-INDEP
 ;* V139 tmp137      [V139    ] (  0,  0   )    long  ->  zero-ref    "field V86._lower (fldOffset=0x0)" P-INDEP
 ;* V140 tmp138      [V140    ] (  0,  0   )    long  ->  zero-ref    "field V86._upper (fldOffset=0x8)" P-INDEP
 ;* V141 tmp139      [V141    ] (  0,  0   )    long  ->  zero-ref    "field V87._lower (fldOffset=0x0)" P-INDEP
 ;* V142 tmp140      [V142    ] (  0,  0   )    long  ->  zero-ref    "field V87._upper (fldOffset=0x8)" P-INDEP
 ;* V143 tmp141      [V143    ] (  0,  0   )    long  ->  zero-ref    "field V89._lower (fldOffset=0x0)" P-INDEP
-;  V144 tmp142      [V144,T16] (  5,  2.50)    long  ->  rdi         "field V89._upper (fldOffset=0x8)" P-INDEP
+;  V144 tmp142      [V144,T16] (  5,  2.50)    long  ->  rsi         "field V89._upper (fldOffset=0x8)" P-INDEP
 ;* V145 tmp143      [V145    ] (  0,  0   )    long  ->  zero-ref    "field V97._lower (fldOffset=0x0)" P-INDEP
 ;* V146 tmp144      [V146    ] (  0,  0   )    long  ->  zero-ref    "field V97._upper (fldOffset=0x8)" P-INDEP
 ;* V147 tmp145      [V147    ] (  0,  0   )    long  ->  zero-ref    "field V101._lower (fldOffset=0x0)" P-INDEP
 ;* V148 tmp146      [V148    ] (  0,  0   )    long  ->  zero-ref    "field V101._upper (fldOffset=0x8)" P-INDEP
 ;* V149 tmp147      [V149    ] (  0,  0   )    long  ->  zero-ref    "field V103._lower (fldOffset=0x0)" P-INDEP
 ;* V150 tmp148      [V150    ] (  0,  0   )    long  ->  zero-ref    "field V103._upper (fldOffset=0x8)" P-INDEP
 ;* V151 tmp149      [V151    ] (  0,  0   )    long  ->  zero-ref    "field V104._lower (fldOffset=0x0)" P-INDEP
 ;* V152 tmp150      [V152    ] (  0,  0   )    long  ->  zero-ref    "field V104._upper (fldOffset=0x8)" P-INDEP
 ;* V153 tmp151      [V153    ] (  0,  0   )    long  ->  zero-ref    "field V106._lower (fldOffset=0x0)" P-INDEP
 ;* V154 tmp152      [V154    ] (  0,  0   )    long  ->  zero-ref    "field V106._upper (fldOffset=0x8)" P-INDEP
 ;* V155 tmp153      [V155    ] (  0,  0   )    long  ->  zero-ref    "field V110._lower (fldOffset=0x0)" P-INDEP
 ;* V156 tmp154      [V156    ] (  0,  0   )    long  ->  zero-ref    "field V110._upper (fldOffset=0x8)" P-INDEP
 ;  V157 tmp155      [V157,T26] (  2,  1   )    long  ->  r13         "field V114._ticks (fldOffset=0x0)" P-INDEP
 ;  V158 tmp156      [V158,T04] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
 ;  V159 tmp157      [V159,T05] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
 ;  V160 tmp158      [V160,T07] (  2,  4   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M46469_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
+       push     r12
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x30]
+       sub      rsp, 24
+       lea      rbp, [rsp+0x40]
        mov      rbx, rdi
-						;; size=20 bbWeight=1 PerfScore 6.00
+						;; size=22 bbWeight=1 PerfScore 7.00
 G_M46469_IG02:
        mov      rdi, gword ptr [rbx+0x20]
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this
        test     rax, rax
        jne      SHORT G_M46469_IG04
 						;; size=36 bbWeight=1 PerfScore 16.75
 G_M46469_IG03:
        xor      rdi, rdi
        jmp      SHORT G_M46469_IG05
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M46469_IG04:
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x20]System.Type:get_FullName():System.String:this
        mov      rdi, rax
 						;; size=16 bbWeight=0.50 PerfScore 3.75
 G_M46469_IG05:
        mov      r15, rdi
        test     r15, r15
        je       SHORT G_M46469_IG07
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M46469_IG06:
        mov      rsi, 0xD1FFAB1E      ; '.'
        mov      rax, 0xD1FFAB1E      ; code for System.String:Concat(System.String,System.String):System.String
        call     [rax]System.String:Concat(System.String,System.String):System.String
        mov      r15, rax
 						;; size=25 bbWeight=0.50 PerfScore 1.88
 G_M46469_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.String[]
        mov      esi, 10
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
        mov      rdx, 0xD1FFAB1E      ; 'DueTime = '
        mov      gword ptr [r14+0x10], rdx
        cmp      dword ptr [rbx+0x48], -1
        je       SHORT G_M46469_IG09
 						;; size=43 bbWeight=1 PerfScore 7.00
 G_M46469_IG08:
        mov      edx, dword ptr [rbx+0x48]
        mov      edi, 0x3E8
-       lea      rax, [rbp-0x28]
-       mulx     rdi, rcx, rdi
+       lea      rax, [rbp-0x30]
+       mulx     rsi, rcx, rdi
        mov      qword ptr [rax], rcx
-       mov      rax, qword ptr [rbp-0x28]
+       mov      r13, qword ptr [rbp-0x30]
        sar      rdx, 63
        and      rdx, 0x3E8
-       sub      rdi, rdx
-       test     rdi, rdi
-       jg       G_M46469_IG28
-       test     rdi, rdi
-       jne      SHORT G_M46469_IG10
-       mov      rcx, 0xD1FFAB1E
-       cmp      rax, rcx
-       ja       G_M46469_IG28
-       jmp      SHORT G_M46469_IG10
-						;; size=73 bbWeight=0.50 PerfScore 7.38
+       sub      rsi, rdx
+       test     rsi, rsi
+       jg       G_M46469_IG22
+       test     rsi, rsi
+       jne      G_M46469_IG12
+       mov      rdi, 0xD1FFAB1E
+       cmp      r13, rdi
+       ja       G_M46469_IG22
+       jmp      G_M46469_IG12
+						;; size=80 bbWeight=0.50 PerfScore 7.38
 G_M46469_IG09:
        mov      rdi, 0xD1FFAB1E      ; '(not set)'
-       jmp      SHORT G_M46469_IG12
-						;; size=12 bbWeight=0.50 PerfScore 1.12
+						;; size=10 bbWeight=1 PerfScore 0.25
 G_M46469_IG10:
-       cmp      rdi, -1
-       jl       G_M46469_IG28
-       cmp      rdi, -1
-       jne      SHORT G_M46469_IG11
-       mov      rdi, 0xD1FFAB1E
-       cmp      rax, rdi
-       jb       G_M46469_IG28
-						;; size=35 bbWeight=0.50 PerfScore 2.00
-G_M46469_IG11:
-       lea      r13, [rax+4*rax]
-       add      r13, r13
-       mov      rdi, 0xD1FFAB1E      ; System.TimeSpan
-       call     CORINFO_HELP_NEWSFAST
-       mov      rdi, rax
-       mov      qword ptr [rdi+0x08], r13
-						;; size=29 bbWeight=0.50 PerfScore 1.62
-G_M46469_IG12:
-       test     rdi, rdi
-       jne      SHORT G_M46469_IG14
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M46469_IG13:
-       xor      rdx, rdx
-       jmp      SHORT G_M46469_IG15
-						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M46469_IG14:
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x08]System.Object:ToString():System.String:this
        mov      rdx, rax
-						;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M46469_IG15:
        mov      rdi, r14
        mov      esi, 1
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      esi, 2
        mov      rdx, 0xD1FFAB1E      ; ', Period = '
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        cmp      dword ptr [rbx+0x4C], -1
-       je       SHORT G_M46469_IG17
-						;; size=56 bbWeight=1 PerfScore 11.75
-G_M46469_IG16:
+       je       G_M46469_IG14
+						;; size=73 bbWeight=1 PerfScore 19.00
+G_M46469_IG11:
        mov      edx, dword ptr [rbx+0x4C]
        mov      edi, 0x3E8
-       lea      rax, [rbp-0x30]
-       mulx     rdi, rcx, rdi
+       lea      rax, [rbp-0x38]
+       mulx     rsi, rcx, rdi
        mov      qword ptr [rax], rcx
-       mov      rax, qword ptr [rbp-0x30]
+       mov      r12, qword ptr [rbp-0x38]
        sar      rdx, 63
        and      rdx, 0x3E8
-       sub      rdi, rdx
-       test     rdi, rdi
-       jg       G_M46469_IG28
-       test     rdi, rdi
-       jne      SHORT G_M46469_IG18
-       mov      rcx, 0xD1FFAB1E
-       cmp      rax, rcx
-       ja       G_M46469_IG28
-       jmp      SHORT G_M46469_IG18
-						;; size=73 bbWeight=0.50 PerfScore 7.38
-G_M46469_IG17:
-       mov      rdi, 0xD1FFAB1E      ; '(not set)'
-       jmp      SHORT G_M46469_IG20
-						;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M46469_IG18:
-       cmp      rdi, -1
-       jl       G_M46469_IG28
-       cmp      rdi, -1
-       jne      SHORT G_M46469_IG19
+       sub      rsi, rdx
+       test     rsi, rsi
+       jg       G_M46469_IG22
+       test     rsi, rsi
+       jne      G_M46469_IG17
+       mov      rdi, 0xD1FFAB1E
+       cmp      r12, rdi
+       ja       G_M46469_IG22
+       jmp      G_M46469_IG17
+						;; size=80 bbWeight=0.50 PerfScore 7.38
+G_M46469_IG12:
+       cmp      rsi, -1
+       jl       G_M46469_IG22
+       cmp      rsi, -1
+       jne      SHORT G_M46469_IG13
        mov      rdi, 0xD1FFAB1E
-       cmp      rax, rdi
-       jb       G_M46469_IG28
+       cmp      r13, rdi
+       jb       G_M46469_IG22
 						;; size=35 bbWeight=0.50 PerfScore 2.00
-G_M46469_IG19:
-       lea      r13, [rax+4*rax]
-       add      r13, r13
+G_M46469_IG13:
+       lea      r12, [r13+4*r13]
+       add      r12, r12
        mov      rdi, 0xD1FFAB1E      ; System.TimeSpan
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, rax
-       mov      qword ptr [rdi+0x08], r13
-						;; size=29 bbWeight=0.50 PerfScore 1.62
-G_M46469_IG20:
-       test     rdi, rdi
-       jne      SHORT G_M46469_IG22
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M46469_IG21:
-       xor      rdx, rdx
-       jmp      SHORT G_M46469_IG23
-						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M46469_IG22:
+       mov      qword ptr [rdi+0x08], r12
+       jmp      G_M46469_IG10
+						;; size=35 bbWeight=0.50 PerfScore 3.38
+G_M46469_IG14:
+       mov      rdi, 0xD1FFAB1E      ; '(not set)'
+						;; size=10 bbWeight=1 PerfScore 0.25
+G_M46469_IG15:
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x08]System.Object:ToString():System.String:this
        mov      rdx, rax
-						;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M46469_IG23:
        mov      rdi, r14
        mov      esi, 3
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      esi, 4
        mov      rdx, 0xD1FFAB1E      ; ', '
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      rdx, r15
        mov      esi, 5
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, gword ptr [rbx+0x20]
        mov      rax, 0xD1FFAB1E      ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
        mov      rdx, rax
        mov      rdi, r14
        mov      esi, 6
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      esi, 7
        mov      rdx, 0xD1FFAB1E      ; '('
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, gword ptr [rbx+0x28]
        test     rdi, rdi
-       jne      SHORT G_M46469_IG25
-						;; size=166 bbWeight=1 PerfScore 38.50
-G_M46469_IG24:
+       jne      SHORT G_M46469_IG19
+						;; size=179 bbWeight=1 PerfScore 45.75
+G_M46469_IG16:
        xor      rdx, rdx
-       jmp      SHORT G_M46469_IG26
+       jmp      SHORT G_M46469_IG20
 						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M46469_IG25:
+G_M46469_IG17:
+       cmp      rsi, -1
+       jl       G_M46469_IG22
+       cmp      rsi, -1
+       jne      SHORT G_M46469_IG18
+       mov      rdi, 0xD1FFAB1E
+       cmp      r12, rdi
+       jb       G_M46469_IG22
+						;; size=35 bbWeight=0.50 PerfScore 2.00
+G_M46469_IG18:
+       lea      r13, [r12+4*r12]
+       add      r13, r13
+       mov      rdi, 0xD1FFAB1E      ; System.TimeSpan
+       call     CORINFO_HELP_NEWSFAST
+       mov      rdi, rax
+       mov      qword ptr [rdi+0x08], r13
+       jmp      G_M46469_IG15
+						;; size=34 bbWeight=0.50 PerfScore 2.62
+G_M46469_IG19:
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x08]System.Object:ToString():System.String:this
        mov      rdx, rax
 						;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M46469_IG26:
+G_M46469_IG20:
        mov      rdi, 0xD1FFAB1E      ; 'null'
        test     rdx, rdx
        cmove    rdx, rdi
        mov      rdi, r14
        mov      esi, 8
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      esi, 9
        mov      rdx, 0xD1FFAB1E      ; ')'
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.String:Concat(System.String[]):System.String
        call     [rax]System.String:Concat(System.String[]):System.String
        nop      
 						;; size=83 bbWeight=1 PerfScore 12.25
-G_M46469_IG27:
-       add      rsp, 16
+G_M46469_IG21:
+       add      rsp, 24
        pop      rbx
+       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=1 PerfScore 3.75
-G_M46469_IG28:
+						;; size=15 bbWeight=1 PerfScore 4.25
+G_M46469_IG22:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 842, prolog size 17, PerfScore 145.25, instruction count 198, allocated bytes for code 842 (MethodHash=7db84a7a) for method System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts)
+; Total bytes of code 853, prolog size 19, PerfScore 150.25, instruction count 192, allocated bytes for code 853 (MethodHash=7db84a7a) for method System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 5, 2024

Top method improvements

-74 (-9.01 % of base) - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this
 ; Assembly listing for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]: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; 49 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Security.Cryptography.HashAlgorithmName>
-;  V02 loc0         [V02,T03] (  9,  6   )     ref  ->  r15         class-hnd <System.String>
+;  V02 loc0         [V02,T03] (  8,  5   )     ref  ->  r15         class-hnd <System.String>
 ;* V03 loc1         [V03,T21] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SA] multireg-arg ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V13 tmp9         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V14 tmp10        [V14    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;  V17 tmp13        [V17,T30] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Security.Cryptography.HashAlgorithmName>
-;  V18 tmp14        [V18,T33] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V18 tmp14        [V18,T32] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.String>
 ;  V19 tmp15        [V19,T31] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V20 tmp16        [V20,T01] (  6, 12   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter>
 ;  V21 tmp17        [V21,T24] (  1,  2   )  struct (32) [rbp-0x48]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
 ;* V22 tmp18        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V23 tmp19        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V25 tmp21        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V26 tmp22        [V26,T09] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V27 tmp23        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V28 tmp24        [V28,T14] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V29 tmp25        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V30 tmp26        [V30    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V32 tmp28        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V33 tmp29        [V33,T10] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V34 tmp30        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V35 tmp31        [V35,T15] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V36 tmp32        [V36    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V38 tmp34        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V39 tmp35        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V40 tmp36        [V40,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V41 tmp37        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V42 tmp38        [V42,T16] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V44 tmp40        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V45 tmp41        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V46 tmp42        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V47 tmp43        [V47,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V48 tmp44        [V48    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V49 tmp45        [V49,T17] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V50 tmp46        [V50    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V51 tmp47        [V51    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V52 tmp48        [V52    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V53 tmp49        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V54 tmp50        [V54,T13] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V56 tmp52        [V56,T18] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V57 tmp53        [V57    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V59 tmp55        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V60 tmp56        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V61 tmp57        [V61,T25] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SA] multireg-arg "Inlining Arg" <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
 ;* V62 tmp58        [V62    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V63 tmp59        [V63,T32] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V63 tmp59        [V63    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
 ;* V64 tmp60        [V64    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V65 tmp61        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V66 tmp62        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V67 tmp63        [V67,T06] (  2,  4   )   byref  ->  rsi         single-def "Inlining Arg"
 ;  V68 tmp64        [V68,T07] (  2,  4   )     int  ->  rdx         "Inlining Arg"
 ;  V69 tmp65        [V69,T00] ( 24, 12   )     ref  ->  rbx         single-def "field V01._name (fldOffset=0x0)" P-INDEP
 ;* V70 tmp66        [V70    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05._name (fldOffset=0x0)" P-INDEP
 ;* V71 tmp67        [V71    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V06._name (fldOffset=0x0)" P-INDEP
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._name (fldOffset=0x0)" P-INDEP
 ;* V73 tmp69        [V73    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._name (fldOffset=0x0)" P-INDEP
 ;* V74 tmp70        [V74    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V09._name (fldOffset=0x0)" P-INDEP
 ;* V75 tmp71        [V75    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V10._name (fldOffset=0x0)" P-INDEP
 ;* V76 tmp72        [V76    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V11._name (fldOffset=0x0)" P-INDEP
 ;* V77 tmp73        [V77    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V12._name (fldOffset=0x0)" P-INDEP
 ;* V78 tmp74        [V78    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._name (fldOffset=0x0)" P-INDEP
 ;* V79 tmp75        [V79    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._name (fldOffset=0x0)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._name (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._name (fldOffset=0x0)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._name (fldOffset=0x0)" P-INDEP
 ;* V83 tmp79        [V83    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._name (fldOffset=0x0)" P-INDEP
 ;* V84 tmp80        [V84    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V29._name (fldOffset=0x0)" P-INDEP
 ;* V85 tmp81        [V85    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V30._name (fldOffset=0x0)" P-INDEP
 ;* V86 tmp82        [V86    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V36._name (fldOffset=0x0)" P-INDEP
 ;* V87 tmp83        [V87    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V37._name (fldOffset=0x0)" P-INDEP
 ;* V88 tmp84        [V88    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V43._name (fldOffset=0x0)" P-INDEP
 ;* V89 tmp85        [V89    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V44._name (fldOffset=0x0)" P-INDEP
 ;* V90 tmp86        [V90    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V50._name (fldOffset=0x0)" P-INDEP
 ;* V91 tmp87        [V91    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V51._name (fldOffset=0x0)" P-INDEP
 ;* V92 tmp88        [V92    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V57._name (fldOffset=0x0)" P-INDEP
 ;* V93 tmp89        [V93    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._name (fldOffset=0x0)" P-INDEP
 ;* V94 tmp90        [V94    ] (  0,  0   )   byref  ->  zero-ref    "field V62._reference (fldOffset=0x0)" P-INDEP
 ;* V95 tmp91        [V95    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
 ;  V96 tmp92        [V96,T19] (  2,  2   )   byref  ->  rsi         single-def "field V64._reference (fldOffset=0x0)" P-INDEP
 ;  V97 tmp93        [V97,T22] (  2,  2   )     int  ->  rdx         "field V64._length (fldOffset=0x8)" P-INDEP
 ;  V98 tmp94        [V98,T20] (  2,  2   )   byref  ->  rsi         single-def "field V65._reference (fldOffset=0x0)" P-INDEP
 ;  V99 tmp95        [V99,T23] (  2,  2   )     int  ->  rdx         "field V65._length (fldOffset=0x8)" P-INDEP
 ;* V100 tmp96       [V100    ] (  0,  0   )   byref  ->  zero-ref    "field V66._reference (fldOffset=0x0)" P-INDEP
 ;* V101 tmp97       [V101    ] (  0,  0   )     int  ->  zero-ref    "field V66._length (fldOffset=0x8)" P-INDEP
-;  V102 tmp98       [V102,T34] (  2,  0   )     ref  ->  r12         single-def "argument with side effect"
-;  V103 tmp99       [V103,T35] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V104 tmp100      [V104,T36] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V102 tmp98       [V102,T33] (  2,  0   )     ref  ->  r12         single-def "argument with side effect"
+;  V103 tmp99       [V103,T34] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;* V104 tmp100      [V104    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V105 cse0        [V105,T02] ( 15,  7.50)     int  ->  r14         multi-def "CSE #02: aggressive"
 ;  V106 cse1        [V106,T04] (  4,  4   )    long  ->  rbx         "CSE #10: aggressive"
 ;  V107 cse2        [V107,T05] (  4,  4   )     int  ->  r13         "CSE #11: aggressive"
 ;  V108 cse3        [V108,T26] (  3,  1.50)     ref  ->  rsi         "CSE #03: conservative"
 ;  V109 cse4        [V109,T27] (  3,  1.50)     ref  ->  rsi         "CSE #07: conservative"
 ;  V110 cse5        [V110,T28] (  3,  1.50)     ref  ->  rsi         "CSE #08: conservative"
 ;  V111 cse6        [V111,T29] (  3,  1.50)     ref  ->  rsi         "CSE #09: conservative"
 ;  V112 cse7        [V112,T08] (  3,  2.50)     ref  ->  rsi         "CSE #01: moderate"
 ;
 ; Lcl frame size = 40
 
 G_M12053_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rsi
 						;; size=42 bbWeight=1 PerfScore 11.58
 G_M12053_IG02:
        mov      rsi, 0xD1FFAB1E      ; 'SHA256'
        cmp      rbx, rsi
        jne      SHORT G_M12053_IG04
 						;; size=15 bbWeight=1 PerfScore 1.50
 G_M12053_IG03:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.10045.4.3.2'
        jmp      G_M12053_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M12053_IG04:
        test     rbx, rbx
        je       SHORT G_M12053_IG05
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M12053_IG07
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M12053_IG05:
        mov      rsi, 0xD1FFAB1E      ; 'SHA384'
        cmp      rbx, rsi
        jne      SHORT G_M12053_IG08
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M12053_IG06:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.10045.4.3.3'
        jmp      G_M12053_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M12053_IG07:
        lea      rdi, bword ptr [rbx+0x0C]
        add      r14d, r14d
        mov      edx, r14d
        add      rsi, 12
        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       SHORT G_M12053_IG05
        jmp      SHORT G_M12053_IG03
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M12053_IG08:
        test     rbx, rbx
        je       SHORT G_M12053_IG09
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M12053_IG11
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M12053_IG09:
        mov      rsi, 0xD1FFAB1E      ; 'SHA512'
        cmp      rbx, rsi
        jne      SHORT G_M12053_IG12
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M12053_IG10:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.10045.4.3.4'
        jmp      G_M12053_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M12053_IG11:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M12053_IG09
        jmp      SHORT G_M12053_IG06
 						;; size=30 bbWeight=0.50 PerfScore 3.88
 G_M12053_IG12:
        test     rbx, rbx
        je       SHORT G_M12053_IG13
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M12053_IG15
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M12053_IG13:
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-256'
        cmp      rbx, rsi
        jne      SHORT G_M12053_IG16
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M12053_IG14:
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.10'
        jmp      SHORT G_M12053_IG19
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M12053_IG15:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M12053_IG13
        jmp      SHORT G_M12053_IG10
 						;; size=30 bbWeight=0.50 PerfScore 3.88
 G_M12053_IG16:
        test     rbx, rbx
        je       SHORT G_M12053_IG17
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 8
        je       G_M12053_IG21
 						;; size=19 bbWeight=0.50 PerfScore 2.25
 G_M12053_IG17:
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-384'
        cmp      rbx, rsi
        jne      G_M12053_IG22
 						;; size=19 bbWeight=0.50 PerfScore 0.75
 G_M12053_IG18:
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.11'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M12053_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Formats.Asn1.AsnWriter
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      dword ptr [r14+0x1C], 2
        xor      ebx, ebx
        mov      rdx, rbx
        xor      r13d, r13d
        mov      ecx, r13d
        lea      rsi, [rbp-0x48]
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
        call     [rax]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
-       test     r15, r15
-       je       G_M12053_IG26
        lea      rsi, bword ptr [r15+0x0C]
        mov      edx, dword ptr [r15+0x08]
        mov      rcx, rbx
        mov      r8d, r13d
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        call     [rax]System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        mov      rsi, rbx
        mov      edx, r13d
        mov      rdi, r14
        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, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        call     [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        nop      
-						;; size=131 bbWeight=1 PerfScore 23.00
+						;; size=122 bbWeight=1 PerfScore 21.75
 G_M12053_IG20:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M12053_IG21:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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_M12053_IG17
        jmp      G_M12053_IG14
 						;; size=37 bbWeight=0.50 PerfScore 3.88
 G_M12053_IG22:
        test     rbx, rbx
        je       SHORT G_M12053_IG23
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 8
        je       SHORT G_M12053_IG24
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M12053_IG23:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-512'
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String):ubyte
        call     [rax]System.String:Equals(System.String,System.String):ubyte
        test     eax, eax
        je       SHORT G_M12053_IG25
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.12'
        jmp      G_M12053_IG19
 						;; size=44 bbWeight=0.50 PerfScore 3.62
 G_M12053_IG24:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M12053_IG23
        jmp      G_M12053_IG18
 						;; size=33 bbWeight=0.50 PerfScore 3.88
 G_M12053_IG25:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.HashAlgorithmName
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        call     [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      edi, 0x41FB
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r12, rax
        mov      rdi, r14
        mov      rsi, rbx
        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      rcx, rax
        mov      rsi, r12
        mov      rdx, r15
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=137 bbWeight=0 PerfScore 0.00
-G_M12053_IG26:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentNullException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0xBCA
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:.ctor(System.String):this
-       call     [rax]System.ArgumentNullException:.ctor(System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=65 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 821, prolog size 39, PerfScore 82.21, instruction count 192, allocated bytes for code 821 (MethodHash=167cd0ea) for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
+; Total bytes of code 747, prolog size 39, PerfScore 80.96, instruction count 177, allocated bytes for code 747 (MethodHash=167cd0ea) for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
-74 (-8.79 % of base) - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this
 ; Assembly listing for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]: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; 49 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Security.Cryptography.HashAlgorithmName>
-;  V02 loc0         [V02,T03] (  9,  6   )     ref  ->  r15         class-hnd <System.String>
+;  V02 loc0         [V02,T03] (  8,  5   )     ref  ->  r15         class-hnd <System.String>
 ;* V03 loc1         [V03,T21] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SA] multireg-arg ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V13 tmp9         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V14 tmp10        [V14    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Security.Cryptography.HashAlgorithmName>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Security.Cryptography.HashAlgorithmName>
 ;  V17 tmp13        [V17,T30] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Security.Cryptography.HashAlgorithmName>
-;  V18 tmp14        [V18,T33] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V18 tmp14        [V18,T32] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.String>
 ;  V19 tmp15        [V19,T31] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;  V20 tmp16        [V20,T01] (  7, 14   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnWriter>
 ;  V21 tmp17        [V21,T24] (  1,  2   )  struct (32) [rbp-0x48]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.Formats.Asn1.AsnWriter+Scope>
 ;* V22 tmp18        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V23 tmp19        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V25 tmp21        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V26 tmp22        [V26,T09] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V27 tmp23        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V28 tmp24        [V28,T14] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V29 tmp25        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V30 tmp26        [V30    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V32 tmp28        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V33 tmp29        [V33,T10] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V34 tmp30        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V35 tmp31        [V35,T15] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V36 tmp32        [V36    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V37 tmp33        [V37    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V38 tmp34        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V39 tmp35        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V40 tmp36        [V40,T11] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V41 tmp37        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V42 tmp38        [V42,T16] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V43 tmp39        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V44 tmp40        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V45 tmp41        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V46 tmp42        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V47 tmp43        [V47,T12] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V48 tmp44        [V48    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V49 tmp45        [V49,T17] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V50 tmp46        [V50    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V51 tmp47        [V51    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V52 tmp48        [V52    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V53 tmp49        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V54 tmp50        [V54,T13] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;* V55 tmp51        [V55    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V56 tmp52        [V56,T18] (  2,  2   )   byref  ->  rdi         single-def "impAppendStmt"
 ;* V57 tmp53        [V57    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Security.Cryptography.HashAlgorithmName>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
 ;* V59 tmp55        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V60 tmp56        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V61 tmp57        [V61,T25] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SA] multireg-arg "Inlining Arg" <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
 ;* V62 tmp58        [V62    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V63 tmp59        [V63,T32] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V63 tmp59        [V63    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
 ;* V64 tmp60        [V64    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V65 tmp61        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V66 tmp62        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V67 tmp63        [V67,T06] (  2,  4   )   byref  ->  rsi         single-def "Inlining Arg"
 ;  V68 tmp64        [V68,T07] (  2,  4   )     int  ->  rdx         "Inlining Arg"
 ;  V69 tmp65        [V69,T00] ( 24, 12   )     ref  ->  rbx         single-def "field V01._name (fldOffset=0x0)" P-INDEP
 ;* V70 tmp66        [V70    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05._name (fldOffset=0x0)" P-INDEP
 ;* V71 tmp67        [V71    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V06._name (fldOffset=0x0)" P-INDEP
 ;* V72 tmp68        [V72    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._name (fldOffset=0x0)" P-INDEP
 ;* V73 tmp69        [V73    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._name (fldOffset=0x0)" P-INDEP
 ;* V74 tmp70        [V74    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V09._name (fldOffset=0x0)" P-INDEP
 ;* V75 tmp71        [V75    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V10._name (fldOffset=0x0)" P-INDEP
 ;* V76 tmp72        [V76    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V11._name (fldOffset=0x0)" P-INDEP
 ;* V77 tmp73        [V77    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V12._name (fldOffset=0x0)" P-INDEP
 ;* V78 tmp74        [V78    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._name (fldOffset=0x0)" P-INDEP
 ;* V79 tmp75        [V79    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._name (fldOffset=0x0)" P-INDEP
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._name (fldOffset=0x0)" P-INDEP
 ;* V81 tmp77        [V81    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._name (fldOffset=0x0)" P-INDEP
 ;* V82 tmp78        [V82    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._name (fldOffset=0x0)" P-INDEP
 ;* V83 tmp79        [V83    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._name (fldOffset=0x0)" P-INDEP
 ;* V84 tmp80        [V84    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V29._name (fldOffset=0x0)" P-INDEP
 ;* V85 tmp81        [V85    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V30._name (fldOffset=0x0)" P-INDEP
 ;* V86 tmp82        [V86    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V36._name (fldOffset=0x0)" P-INDEP
 ;* V87 tmp83        [V87    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V37._name (fldOffset=0x0)" P-INDEP
 ;* V88 tmp84        [V88    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V43._name (fldOffset=0x0)" P-INDEP
 ;* V89 tmp85        [V89    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V44._name (fldOffset=0x0)" P-INDEP
 ;* V90 tmp86        [V90    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V50._name (fldOffset=0x0)" P-INDEP
 ;* V91 tmp87        [V91    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V51._name (fldOffset=0x0)" P-INDEP
 ;* V92 tmp88        [V92    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V57._name (fldOffset=0x0)" P-INDEP
 ;* V93 tmp89        [V93    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V58._name (fldOffset=0x0)" P-INDEP
 ;* V94 tmp90        [V94    ] (  0,  0   )   byref  ->  zero-ref    "field V62._reference (fldOffset=0x0)" P-INDEP
 ;* V95 tmp91        [V95    ] (  0,  0   )     int  ->  zero-ref    "field V62._length (fldOffset=0x8)" P-INDEP
 ;  V96 tmp92        [V96,T19] (  2,  2   )   byref  ->  rsi         single-def "field V64._reference (fldOffset=0x0)" P-INDEP
 ;  V97 tmp93        [V97,T22] (  2,  2   )     int  ->  rdx         "field V64._length (fldOffset=0x8)" P-INDEP
 ;  V98 tmp94        [V98,T20] (  2,  2   )   byref  ->  rsi         single-def "field V65._reference (fldOffset=0x0)" P-INDEP
 ;  V99 tmp95        [V99,T23] (  2,  2   )     int  ->  rdx         "field V65._length (fldOffset=0x8)" P-INDEP
 ;* V100 tmp96       [V100    ] (  0,  0   )   byref  ->  zero-ref    "field V66._reference (fldOffset=0x0)" P-INDEP
 ;* V101 tmp97       [V101    ] (  0,  0   )     int  ->  zero-ref    "field V66._length (fldOffset=0x8)" P-INDEP
-;  V102 tmp98       [V102,T34] (  2,  0   )     ref  ->  r12         single-def "argument with side effect"
-;  V103 tmp99       [V103,T35] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V104 tmp100      [V104,T36] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V102 tmp98       [V102,T33] (  2,  0   )     ref  ->  r12         single-def "argument with side effect"
+;  V103 tmp99       [V103,T34] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;* V104 tmp100      [V104    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V105 cse0        [V105,T04] (  5,  5   )    long  ->  rbx         "CSE #10: aggressive"
 ;  V106 cse1        [V106,T05] (  5,  5   )     int  ->  r13         "CSE #11: aggressive"
 ;  V107 cse2        [V107,T02] ( 15,  7.50)     int  ->  r14         multi-def "CSE #02: aggressive"
 ;  V108 cse3        [V108,T26] (  3,  1.50)     ref  ->  rsi         "CSE #03: conservative"
 ;  V109 cse4        [V109,T27] (  3,  1.50)     ref  ->  rsi         "CSE #07: conservative"
 ;  V110 cse5        [V110,T28] (  3,  1.50)     ref  ->  rsi         "CSE #08: conservative"
 ;  V111 cse6        [V111,T29] (  3,  1.50)     ref  ->  rsi         "CSE #09: conservative"
 ;  V112 cse7        [V112,T08] (  3,  2.50)     ref  ->  rsi         "CSE #01: moderate"
 ;
 ; Lcl frame size = 40
 
 G_M38271_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 40
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rsi
 						;; size=42 bbWeight=1 PerfScore 11.58
 G_M38271_IG02:
        mov      rsi, 0xD1FFAB1E      ; 'SHA256'
        cmp      rbx, rsi
        jne      SHORT G_M38271_IG04
 						;; size=15 bbWeight=1 PerfScore 1.50
 G_M38271_IG03:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.113549.1.1.11'
        jmp      G_M38271_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M38271_IG04:
        test     rbx, rbx
        je       SHORT G_M38271_IG05
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M38271_IG07
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M38271_IG05:
        mov      rsi, 0xD1FFAB1E      ; 'SHA384'
        cmp      rbx, rsi
        jne      SHORT G_M38271_IG08
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M38271_IG06:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.113549.1.1.12'
        jmp      G_M38271_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M38271_IG07:
        lea      rdi, bword ptr [rbx+0x0C]
        add      r14d, r14d
        mov      edx, r14d
        add      rsi, 12
        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       SHORT G_M38271_IG05
        jmp      SHORT G_M38271_IG03
 						;; size=32 bbWeight=0.50 PerfScore 3.88
 G_M38271_IG08:
        test     rbx, rbx
        je       SHORT G_M38271_IG09
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M38271_IG11
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M38271_IG09:
        mov      rsi, 0xD1FFAB1E      ; 'SHA512'
        cmp      rbx, rsi
        jne      SHORT G_M38271_IG12
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M38271_IG10:
        mov      r15, 0xD1FFAB1E      ; '1.2.840.113549.1.1.13'
        jmp      G_M38271_IG19
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M38271_IG11:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M38271_IG09
        jmp      SHORT G_M38271_IG06
 						;; size=30 bbWeight=0.50 PerfScore 3.88
 G_M38271_IG12:
        test     rbx, rbx
        je       SHORT G_M38271_IG13
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 6
        je       SHORT G_M38271_IG15
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M38271_IG13:
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-256'
        cmp      rbx, rsi
        jne      SHORT G_M38271_IG16
 						;; size=15 bbWeight=0.50 PerfScore 0.75
 G_M38271_IG14:
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.14'
        jmp      SHORT G_M38271_IG19
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M38271_IG15:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M38271_IG13
        jmp      SHORT G_M38271_IG10
 						;; size=30 bbWeight=0.50 PerfScore 3.88
 G_M38271_IG16:
        test     rbx, rbx
        je       SHORT G_M38271_IG17
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 8
        je       G_M38271_IG21
 						;; size=19 bbWeight=0.50 PerfScore 2.25
 G_M38271_IG17:
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-384'
        cmp      rbx, rsi
        jne      G_M38271_IG22
 						;; size=19 bbWeight=0.50 PerfScore 0.75
 G_M38271_IG18:
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.15'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M38271_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Formats.Asn1.AsnWriter
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      dword ptr [r14+0x1C], 2
        xor      ebx, ebx
        mov      rdx, rbx
        xor      r13d, r13d
        mov      ecx, r13d
        lea      rsi, [rbp-0x48]
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
        call     [rax]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this
-       test     r15, r15
-       je       G_M38271_IG26
        lea      rsi, bword ptr [r15+0x0C]
        mov      edx, dword ptr [r15+0x08]
        mov      rcx, rbx
        mov      r8d, r13d
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        call     [rax]System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        mov      rsi, rbx
        mov      edx, r13d
        mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        call     [rax]System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this
        mov      rsi, rbx
        mov      edx, r13d
        mov      rdi, r14
        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, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        call     [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this
        nop      
-						;; size=152 bbWeight=1 PerfScore 27.00
+						;; size=143 bbWeight=1 PerfScore 25.75
 G_M38271_IG20:
        add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M38271_IG21:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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_M38271_IG17
        jmp      G_M38271_IG14
 						;; size=37 bbWeight=0.50 PerfScore 3.88
 G_M38271_IG22:
        test     rbx, rbx
        je       SHORT G_M38271_IG23
        mov      r14d, dword ptr [rbx+0x08]
        cmp      r14d, 8
        je       SHORT G_M38271_IG24
 						;; size=15 bbWeight=0.50 PerfScore 2.25
 G_M38271_IG23:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'SHA3-512'
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String):ubyte
        call     [rax]System.String:Equals(System.String,System.String):ubyte
        test     eax, eax
        je       SHORT G_M38271_IG25
        mov      r15, 0xD1FFAB1E      ; '2.16.840.1.101.3.4.3.16'
        jmp      G_M38271_IG19
 						;; size=44 bbWeight=0.50 PerfScore 3.62
 G_M38271_IG24:
        lea      rdi, bword ptr [rbx+0x0C]
        lea      edx, [r14+r14]
        add      rsi, 12
        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       SHORT G_M38271_IG23
        jmp      G_M38271_IG18
 						;; size=33 bbWeight=0.50 PerfScore 3.88
 G_M38271_IG25:
        mov      rdi, 0xD1FFAB1E      ; System.Security.Cryptography.HashAlgorithmName
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        call     [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      edi, 0x41FB
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      r12, rax
        mov      rdi, r14
        mov      rsi, rbx
        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      rcx, rax
        mov      rsi, r12
        mov      rdx, r15
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=137 bbWeight=0 PerfScore 0.00
-G_M38271_IG26:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentNullException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0xBCA
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:.ctor(System.String):this
-       call     [rax]System.ArgumentNullException:.ctor(System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=65 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 842, prolog size 39, PerfScore 86.21, instruction count 197, allocated bytes for code 842 (MethodHash=d7dd6a80) for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
+; Total bytes of code 768, prolog size 39, PerfScore 84.96, instruction count 182, allocated bytes for code 768 (MethodHash=d7dd6a80) for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)

Larger list of diffs: https://gist.github.com/MihuBot/384164dc4be1258945db3909b703932e

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 5, 2024

@EgorBo

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