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] JIT: Extend jump tables #666

Open
MihuBot opened this issue Sep 15, 2024 · 3 comments
Open

[JitDiff X64] [EgorBo] JIT: Extend jump tables #666

MihuBot opened this issue Sep 15, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Sep 15, 2024

Job completed in 20 minutes 2 seconds.

Diffs

Diffs
Found 300 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39332096
Total bytes of diff: 39329308
Total bytes of delta: -2788 (-0.01 % of base)
Total relative delta: -7.35
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
          42 : System.Private.Uri.dasm (0.05 % of base)
          29 : System.Net.Primitives.dasm (0.03 % of base)
          26 : System.Net.Quic.dasm (0.02 % of base)
          26 : System.Net.Security.dasm (0.01 % of base)
          24 : Microsoft.VisualBasic.Core.dasm (0.00 % of base)
          19 : System.Text.Json.dasm (0.00 % of base)
           8 : System.ComponentModel.TypeConverter.dasm (0.00 % of base)
           2 : System.Console.dasm (0.00 % of base)

Top file improvements (bytes):
        -645 : System.Private.Xml.dasm (-0.02 % of base)
        -599 : System.Text.RegularExpressions.dasm (-0.08 % of base)
        -530 : System.Private.CoreLib.dasm (-0.01 % of base)
        -183 : Microsoft.CSharp.dasm (-0.05 % of base)
        -150 : System.Data.Common.dasm (-0.01 % of base)
        -139 : System.Reflection.Metadata.dasm (-0.03 % of base)
        -125 : System.Security.Cryptography.dasm (-0.01 % of base)
         -65 : System.Linq.Expressions.dasm (-0.01 % of base)
         -62 : System.Private.DataContractSerialization.dasm (-0.01 % of base)
         -48 : System.Data.Odbc.dasm (-0.02 % of base)
         -40 : System.Net.Requests.dasm (-0.03 % of base)
         -39 : System.Reflection.MetadataLoadContext.dasm (-0.02 % of base)
         -35 : System.Formats.Asn1.dasm (-0.04 % of base)
         -34 : System.Resources.Extensions.dasm (-0.07 % of base)
         -32 : System.Net.WebHeaderCollection.dasm (-0.22 % of base)
         -28 : System.Reflection.Emit.dasm (-0.02 % of base)
         -23 : System.ServiceModel.Syndication.dasm (-0.01 % of base)
         -19 : System.Net.Http.dasm (-0.00 % of base)
         -17 : System.Configuration.ConfigurationManager.dasm (-0.00 % of base)
         -17 : System.Formats.Nrbf.dasm (-0.04 % of base)
         -17 : System.Web.HttpUtility.dasm (-0.09 % of base)
         -15 : System.ComponentModel.Primitives.dasm (-0.09 % of base)
         -14 : ILCompiler.Reflection.ReadyToRun.dasm (-0.01 % of base)
         -13 : System.Net.HttpListener.dasm (-0.01 % of base)
         -11 : System.Private.Xml.Linq.dasm (-0.01 % of base)
         -10 : System.Diagnostics.Process.dasm (-0.01 % of base)
         -10 : System.Net.Ping.dasm (-0.02 % of base)
          -9 : System.Reflection.Context.dasm (-0.02 % of base)
          -8 : System.Net.Mail.dasm (-0.00 % of base)
          -8 : System.Text.Encoding.CodePages.dasm (-0.01 % of base)
          -8 : System.Net.Sockets.dasm (-0.00 % of base)
          -6 : System.Security.Cryptography.Xml.dasm (-0.00 % of base)
          -5 : System.Formats.Tar.dasm (-0.00 % of base)

41 total files with Code Size differences (33 improved, 8 regressed), 218 unchanged.

Top method regressions (bytes):
          81 (5.32 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
          43 (0.75 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<ParseAttributeValueSlowAsync>d__532:MoveNext():this (FullOpts)
          39 (0.86 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
          36 (0.81 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:TryReadMetadata(System.Text.Json.Serialization.JsonConverter,System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref,byref):ubyte (FullOpts)
          28 (0.14 % of base) : System.Data.Common.dasm - System.Data.BinaryNode:EvalBinaryOp(int,System.Data.ExpressionNode,System.Data.ExpressionNode,System.Data.DataRow,int,int[]):System.Object:this (FullOpts)
          28 (0.39 % of base) : System.Private.CoreLib.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          26 (8.72 % of base) : System.Net.Primitives.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Private.Uri.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Net.Quic.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Net.Security.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          21 (2.37 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (FullOpts)
          21 (2.37 % of base) : System.Reflection.Metadata.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (FullOpts)
          18 (3.64 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:IsValidCustomDateOnlyFormat(System.ReadOnlySpan`1[ushort],ubyte):ubyte (FullOpts)
          18 (0.38 % of base) : System.Console.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
          14 (0.64 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:GetArrayData(System.Array,System.Type,int,int,int):this (FullOpts)
           9 (1.24 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteCommentOrPi(System.String,int):this (FullOpts)
           9 (0.84 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XPath.XPathScanner:NextLex():this (FullOpts)
           8 (0.60 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.MaskedTextProvider:TestChar(ushort,int,byref):ubyte:this (FullOpts)
           8 (1.50 % of base) : System.Private.Uri.dasm - System.UncNameHelper:IsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
           6 (0.76 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:TryGetNumber(System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts)
           5 (0.48 % of base) : System.Private.Uri.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
           5 (0.10 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ParseSubsetAsync>d__159:MoveNext():this (FullOpts)
           5 (0.57 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteElementTextBlockNoFlush(ulong,ulong,byref):int:this (FullOpts)
           4 (0.15 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileSwitchExpression(System.Linq.Expressions.Expression):this (FullOpts)
           4 (0.41 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:TryGetNumberMultiSegment(System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts)
           3 (0.51 % of base) : System.Data.Common.dasm - System.Data.ExpressionParser:BuildExpression(int):this (FullOpts)
           3 (0.30 % of base) : System.Net.Primitives.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           3 (0.30 % of base) : System.Private.Uri.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           3 (1.33 % of base) : System.Private.Xml.dasm - System.Xml.XmlComplianceUtil:IsValidLanguageID(System.String):ubyte (FullOpts)
           2 (0.60 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.TokenInfo:CreateFormat(System.String,int,int):System.Xml.Xsl.Runtime.TokenInfo (FullOpts)
           1 (0.09 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (FullOpts)
           1 (0.04 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
        -140 (-13.42 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
        -100 (-18.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this (FullOpts) (2 methods)
         -52 (-1.04 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (FullOpts) (2 methods)
         -50 (-17.99 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte (FullOpts)
         -49 (-8.09 % of base) : System.Data.Common.dasm - System.Xml.XmlDataDocument:OnRowChanged(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
         -39 (-1.94 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaCustomAttributeHelpers:ToMarshalAsAttribute(System.Reflection.Metadata.BlobHandle,System.Reflection.TypeLoading.Ecma.EcmaModule):System.Runtime.InteropServices.MarshalAsAttribute (FullOpts)
         -37 (-4.07 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
         -37 (-4.79 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteAttributeTextBlockNoFlush(ulong,ulong):int:this (FullOpts)
         -34 (-3.23 % of base) : System.Private.Xml.dasm - System.Xml.XmlSqlBinaryReader:ReadDoc():ubyte:this (FullOpts)
         -34 (-1.66 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:SkipUntil(ushort,ubyte):this (FullOpts)
         -32 (-19.16 % of base) : System.Net.Requests.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
         -32 (-19.16 % of base) : System.Net.WebHeaderCollection.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
         -28 (-2.78 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionRightToLeft(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         -27 (-0.57 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.WellKnownOids:GetValue(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
         -26 (-1.60 % of base) : System.Data.Common.dasm - System.Data.Common.SqlConvert:ConvertToSqlMoney(System.Object):System.Data.SqlTypes.SqlMoney (FullOpts)
         -25 (-1.97 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextEncoder:Write(ushort[],int,int):this (FullOpts)
         -23 (-15.44 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcConnection:SetSupportedType(short):this (FullOpts)
         -23 (-2.03 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArgumentType(byref,System.Reflection.Metadata.BlobReader,ubyte):System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]:this (FullOpts)
         -23 (-3.75 % of base) : System.Data.Common.dasm - System.Xml.XmlDataDocument:LoadTreeFromDataSet(System.Data.DataSet):this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:CountSingletons():int:this (FullOpts)
         -21 (-2.03 % of base) : System.Data.Common.dasm - System.Data.DataRowComparer:CompareArray(System.Array,System.Array):ubyte (FullOpts)
         -21 (-1.55 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.Deserializer:DeserializeRoot(System.Formats.Nrbf.SerializationRecordId):this (FullOpts)
         -19 (-34.55 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte (FullOpts)
         -19 (-34.55 % of base) : System.Reflection.Metadata.dasm - System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte (FullOpts)
         -19 (-1.81 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.MarshallingData:SerializeMarshallingData():System.Reflection.Metadata.BlobBuilder:this (FullOpts)
         -19 (-34.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:IsWhiteSpaceCharacter(ushort):ubyte (FullOpts)
         -19 (-10.92 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:GetAndValidateTagNumber(System.Nullable`1[int]):int (FullOpts)
         -19 (-0.79 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:StripAndMapEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double],uint,System.Collections.Generic.List`1[System.ValueTuple`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double],System.Text.RegularExpressions.Symbolic.DerivativeEffect[]]],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.DerivativeEffect]):this (FullOpts)
         -19 (-0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:StripAndMapEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int],uint,System.Collections.Generic.List`1[System.ValueTuple`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int],System.Text.RegularExpressions.Symbolic.DerivativeEffect[]]],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.DerivativeEffect]):this (FullOpts)
         -19 (-0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:StripAndMapEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long],uint,System.Collections.Generic.List`1[System.ValueTuple`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long],System.Text.RegularExpressions.Symbolic.DerivativeEffect[]]],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.DerivativeEffect]):this (FullOpts)
         -19 (-0.79 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:StripAndMapEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short],uint,System.Collections.Generic.List`1[System.ValueTuple`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short],System.Text.RegularExpressions.Symbolic.DerivativeEffect[]]],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.DerivativeEffect]):this (FullOpts)
         -19 (-0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:StripAndMapEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte],uint,System.Collections.Generic.List`1[System.ValueTuple`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte],System.Text.RegularExpressions.Symbolic.DerivativeEffect[]]],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.DerivativeEffect]):this (FullOpts)
         -19 (-31.67 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
         -19 (-2.60 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteAttributeTextBlockNoFlush(ulong,ulong):int:this (FullOpts)
         -18 (-1.49 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ScanCondSection3():int:this (FullOpts)
         -18 (-1.17 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ScanCondSection3Async>d__194:MoveNext():this (FullOpts)
         -18 (-0.98 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueChunk():ubyte:this (FullOpts)
         -17 (-2.25 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[double,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[int,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.30 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[long,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[short,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[ubyte,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.25 % of base) : System.Private.CoreLib.dasm - System.Enum:ToStringInlined[double,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToStringInlined[int,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.30 % of base) : System.Private.CoreLib.dasm - System.Enum:ToStringInlined[long,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToStringInlined[short,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToStringInlined[ubyte,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.21 % of base) : System.Formats.Nrbf.dasm - System.Formats.Nrbf.RectangularArrayRecord:Create(System.IO.BinaryReader,System.Formats.Nrbf.ArrayInfo,System.Formats.Nrbf.MemberTypeInfo,int[]):System.Formats.Nrbf.RectangularArrayRecord (FullOpts)
         -17 (-0.21 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)
         -17 (-1.17 % of base) : System.Web.HttpUtility.dasm - System.Web.Util.HttpEncoder:<JavaScriptStringEncode>g__EncodeCore|12_0(System.ReadOnlySpan`1[ushort],int,ubyte):System.String (FullOpts)
         -17 (-2.23 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:IsConstructedExpression(System.Xml.Xsl.Qil.QilNode):ubyte:this (FullOpts)
         -16 (-0.41 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ParseSubset():this (FullOpts)
         -16 (-19.51 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBinaryReader:IsValidArrayType(int):ubyte (FullOpts)
         -16 (-2.12 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteCommentOrPiNoFlush(System.String,int,int,int,byref):int:this (FullOpts)
         -16 (-2.31 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteElementTextBlock(ulong,ulong):this (FullOpts)
         -16 (-1.83 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteCommentOrPiNoFlush(System.String,int,int,int,byref):int:this (FullOpts)
         -16 (-2.22 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteElementTextBlock(ulong,ulong):this (FullOpts)
         -16 (-3.32 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILStateAnalyzer:AnalyzeContent(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -15 (-0.52 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:PutArrayData(System.Array,System.Type,int,int,int):this (FullOpts)
         -15 (-1.52 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.FileSystem:vbIOOpenFile(System.Reflection.Assembly,int,System.String,int,int,int,int) (FullOpts)
         -15 (-0.44 % of base) : System.ComponentModel.Primitives.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
         -15 (-1.34 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:this (FullOpts)
         -15 (-1.35 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:this (FullOpts)
         -15 (-1.35 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:this (FullOpts)
         -15 (-1.34 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:this (FullOpts)
         -15 (-1.35 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -15 (-1.46 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ParseAttlistDefault(System.Xml.Schema.SchemaAttDef,ubyte):this (FullOpts)
         -15 (-1.73 % of base) : System.Private.Xml.dasm - System.Xml.HtmlUtf8RawTextWriter:WriteUriAttributeText(ulong,ulong):this (FullOpts)
         -15 (-1.24 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextEncoder:Write(System.ReadOnlySpan`1[ushort]):this (FullOpts)
         -15 (-0.71 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<ParseCDataOrCommentTupleAsync>d__565:MoveNext():this (FullOpts)
         -15 (-0.68 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<ParsePIValueAsync>d__561:MoveNext():this (FullOpts)
         -15 (-0.64 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<SkipUntilAsync>d__570:MoveNext():this (FullOpts)
         -14 (-1.95 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.MetadataNameFormatter:EmitHandleName(System.Reflection.Metadata.Handle,ubyte,System.String,System.String):System.String:this (FullOpts)
         -14 (-1.69 % of base) : System.Data.Common.dasm - System.Data.Common.SqlConvert:ConvertToSqlInt64(System.Object):System.Data.SqlTypes.SqlInt64 (FullOpts)
         -14 (-1.42 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String (FullOpts)
         -14 (-0.31 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ParseElementOnlyContentAsync>d__164:MoveNext():this (FullOpts)
         -14 (-1.58 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteElementTextBlockNoFlush(ulong,ulong,byref):int:this (FullOpts)
         -14 (-2.24 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:Compare(System.Xml.Xsl.Qil.QilBinary):this (FullOpts)
         -13 (-1.19 % of base) : System.Net.Http.dasm - System.Net.HttpStatusDescription:Get(int):System.String (FullOpts) (2 methods)
         -13 (-1.19 % of base) : System.Net.HttpListener.dasm - System.Net.HttpStatusDescription:Get(int):System.String (FullOpts) (2 methods)
         -13 (-2.49 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.Deserializer:<DeserializeRoot>g__DeserializeNew|32_0(System.Formats.Nrbf.SerializationRecordId):System.Object:this (FullOpts)
         -13 (-1.43 % of base) : System.Private.Xml.dasm - System.Xml.HtmlEncodedRawTextWriter:WriteUriAttributeText(ulong,ulong):this (FullOpts)
         -13 (-0.96 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseCDataOrComment(int,byref,byref):ubyte:this (FullOpts)
         -13 (-1.48 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteCommentOrPi(System.String,int):this (FullOpts)
         -12 (-0.85 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
         -12 (-0.24 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:ScanFactoriesRecursive(System.Configuration.XmlUtil,System.String,System.Collections.Hashtable):this (FullOpts)
         -12 (-0.63 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):ubyte (FullOpts) (2 methods)
         -12 (-1.74 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeFeature:IsSupported(System.String):ubyte (FullOpts)
         -12 (-0.34 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ParseElementOnlyContent(System.Xml.Schema.ParticleContentValidator,int):this (FullOpts)
         -12 (-1.77 % of base) : System.Private.Xml.dasm - System.Xml.HtmlEncodedRawTextWriter:WriteHtmlAttributeText(ulong,ulong):this (FullOpts)
         -12 (-1.51 % of base) : System.Private.Xml.dasm - System.Xml.HtmlUtf8RawTextWriter:WriteHtmlAttributeText(ulong,ulong):this (FullOpts)
         -12 (-1.78 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteAttributeTextBlock(ulong,ulong):this (FullOpts)
         -12 (-1.73 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteAttributeTextBlock(ulong,ulong):this (FullOpts)
         -11 (-1.75 % of base) : System.Data.Common.dasm - System.Data.Common.SqlConvert:ConvertToSqlInt32(System.Object):System.Data.SqlTypes.SqlInt32 (FullOpts)
         -11 (-0.75 % of base) : System.Data.Common.dasm - System.Data.Select:Eval(System.Data.BinaryNode,System.Data.DataRow,int):int:this (FullOpts)
         -11 (-2.40 % of base) : System.Console.dasm - System.IO.KeyParser:ParseFromSingleChar(ushort,ubyte):System.ConsoleKeyInfo (FullOpts)

Top method regressions (percentages):
          26 (8.72 % of base) : System.Net.Primitives.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Private.Uri.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Net.Quic.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          26 (8.72 % of base) : System.Net.Security.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
          81 (5.32 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
          18 (3.64 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:IsValidCustomDateOnlyFormat(System.ReadOnlySpan`1[ushort],ubyte):ubyte (FullOpts)
          21 (2.37 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (FullOpts)
          21 (2.37 % of base) : System.Reflection.Metadata.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (FullOpts)
           8 (1.50 % of base) : System.Private.Uri.dasm - System.UncNameHelper:IsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
           3 (1.33 % of base) : System.Private.Xml.dasm - System.Xml.XmlComplianceUtil:IsValidLanguageID(System.String):ubyte (FullOpts)
           9 (1.24 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteCommentOrPi(System.String,int):this (FullOpts)
          39 (0.86 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
           9 (0.84 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XPath.XPathScanner:NextLex():this (FullOpts)
          36 (0.81 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:TryReadMetadata(System.Text.Json.Serialization.JsonConverter,System.Text.Json.Serialization.Metadata.JsonTypeInfo,byref,byref):ubyte (FullOpts)
           6 (0.76 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:TryGetNumber(System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts)
          43 (0.75 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+<ParseAttributeValueSlowAsync>d__532:MoveNext():this (FullOpts)
          14 (0.64 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:GetArrayData(System.Array,System.Type,int,int,int):this (FullOpts)
           8 (0.60 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.MaskedTextProvider:TestChar(ushort,int,byref):ubyte:this (FullOpts)
           2 (0.60 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.TokenInfo:CreateFormat(System.String,int,int):System.Xml.Xsl.Runtime.TokenInfo (FullOpts)
           5 (0.57 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteElementTextBlockNoFlush(ulong,ulong,byref):int:this (FullOpts)
           3 (0.51 % of base) : System.Data.Common.dasm - System.Data.ExpressionParser:BuildExpression(int):this (FullOpts)
           5 (0.48 % of base) : System.Private.Uri.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
           4 (0.41 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:TryGetNumberMultiSegment(System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts)
          28 (0.39 % of base) : System.Private.CoreLib.dasm - System.Number:NumberToStringFormat[ubyte](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          18 (0.38 % of base) : System.Console.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
           3 (0.30 % of base) : System.Net.Primitives.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           3 (0.30 % of base) : System.Private.Uri.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
           4 (0.15 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileSwitchExpression(System.Linq.Expressions.Expression):this (FullOpts)
          28 (0.14 % of base) : System.Data.Common.dasm - System.Data.BinaryNode:EvalBinaryOp(int,System.Data.ExpressionNode,System.Data.ExpressionNode,System.Data.DataRow,int,int[]):System.Object:this (FullOpts)
           5 (0.10 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+<ParseSubsetAsync>d__159:MoveNext():this (FullOpts)
           1 (0.09 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (FullOpts)
           1 (0.04 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseText(byref,byref,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
         -19 (-34.55 % of base) : System.Private.CoreLib.dasm - System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte (FullOpts)
         -19 (-34.55 % of base) : System.Reflection.Metadata.dasm - System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte (FullOpts)
         -19 (-34.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:IsWhiteSpaceCharacter(ushort):ubyte (FullOpts)
         -19 (-31.67 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
         -16 (-19.51 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBinaryReader:IsValidArrayType(int):ubyte (FullOpts)
         -32 (-19.16 % of base) : System.Net.Requests.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
         -32 (-19.16 % of base) : System.Net.WebHeaderCollection.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
        -100 (-18.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this (FullOpts) (2 methods)
         -50 (-17.99 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte (FullOpts)
         -23 (-15.44 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcConnection:SetSupportedType(short):this (FullOpts)
        -140 (-13.42 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
         -10 (-11.76 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:GetByteLength(short):int:this (FullOpts)
         -10 (-10.99 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.Ecma335.MetadataTokens:TryGetHeapIndex(ubyte,byref):ubyte (FullOpts)
         -19 (-10.92 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:GetAndValidateTagNumber(System.Nullable`1[int]):int (FullOpts)
         -10 (-9.01 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessManager:ProcFsStateToThreadState(ushort):int (FullOpts)
          -6 (-8.22 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.XsltInput:PositionAdjustment(int):int (FullOpts)
         -49 (-8.09 % of base) : System.Data.Common.dasm - System.Xml.XmlDataDocument:OnRowChanged(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
         -10 (-7.41 % of base) : System.Private.Xml.dasm - MS.Internal.Xml.XPath.BooleanFunctions:Evaluate(System.Xml.XPath.XPathNodeIterator):System.Object:this (FullOpts)
         -10 (-6.80 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.IcmpV4MessageConstants:MapV4TypeToIPStatus(int,int):int (FullOpts)
          -5 (-6.67 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.Statics:Format32(int,int):int (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:CountSingletons():int:this (FullOpts)
         -22 (-6.08 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:CountSingletons():int:this (FullOpts)
         -10 (-5.81 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:GetTypeInfoKind(System.Type,System.Text.Json.Serialization.JsonConverter):int (FullOpts)
          -5 (-5.43 % of base) : System.Linq.Expressions.dasm - System.Dynamic.BinaryOperationBinder:OperationIsValid(int):ubyte (FullOpts)
         -10 (-5.35 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcTransaction:get_IsolationLevel():int:this (FullOpts)
         -37 (-4.79 % of base) : System.Private.Xml.dasm - System.Xml.XmlUtf8RawTextWriter:WriteAttributeTextBlockNoFlush(ulong,ulong):int:this (FullOpts)
          -5 (-4.42 % of base) : System.Private.CoreLib.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
         -10 (-4.20 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:CalculateExprAndUnaryOpKinds(uint,ubyte):System.ValueTuple`3[int,int,int] (FullOpts)
         -37 (-4.07 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
          -6 (-4.03 % of base) : System.Text.Json.dasm - System.Text.Json.Schema.JsonSchema:<MapSchemaType>g__ToIdentifier|108_0(int):System.String (FullOpts)
         -11 (-4.00 % of base) : System.Data.Common.dasm - System.Xml.XmlDataDocument:EnsureDisconnectedDataRow(System.Xml.XmlBoundElement):this (FullOpts)
         -23 (-3.75 % of base) : System.Data.Common.dasm - System.Xml.XmlDataDocument:LoadTreeFromDataSet(System.Data.DataSet):this (FullOpts)
          -5 (-3.68 % of base) : System.Data.Common.dasm - System.Data.BinaryNode:SqlResultType(int):int (FullOpts)
         -10 (-3.65 % of base) : System.Data.Odbc.dasm - System.Data.Common.ADP:ConnectionStateMsg(int):System.String (FullOpts)
         -10 (-3.65 % of base) : System.Data.Common.dasm - System.Data.Common.ADP:ConnectionStateMsg(int):System.String (FullOpts)
          -5 (-3.45 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.XmlUtilWriter:UpdatePosition(ushort):this (FullOpts)
         -16 (-3.32 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILStateAnalyzer:AnalyzeContent(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
         -34 (-3.23 % of base) : System.Private.Xml.dasm - System.Xml.XmlSqlBinaryReader:ReadDoc():ubyte:this (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[double] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[double] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-3.16 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector128(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -8 (-3.12 % of base) : System.Formats.Asn1.dasm - System.Formats.Asn1.AsnCharacterStringEncodings:GetEncoding(int):System.Text.Encoding (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[long] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[float] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[int] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[uint] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector256`1[long] (FullOpts)
          -6 (-3.11 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherVector256(ulong,System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[double],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[double],ubyte):System.Runtime.Intrinsics.Vector128`1[double] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[double],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[double],ubyte):System.Runtime.Intrinsics.Vector128`1[double] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[float],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[float],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[float],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[float],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[float],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector128`1[float],ubyte):System.Runtime.Intrinsics.Vector128`1[float] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[int],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[int],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[int],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector128`1[int],ubyte):System.Runtime.Intrinsics.Vector128`1[int] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[long],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[long],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[long],ubyte):System.Runtime.Intrinsics.Vector128`1[long] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[uint],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[uint],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[uint],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[uint],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[uint],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector128`1[uint],ubyte):System.Runtime.Intrinsics.Vector128`1[uint] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[ulong],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector128`1[ulong],ubyte):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
          -6 (-2.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector128(System.Runtime.Intrinsics.Vector128`1[ulong],ulong,System.Runtime.Intrinsics.Vector128`1[long],System.Runtime.Intrinsics.Vector128`1[ulong],ubyte):System.Runtime.Intrinsics.Vector128`1[ulong] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[double],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector256`1[double],ubyte):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[double],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[double],ubyte):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[float],ulong,System.Runtime.Intrinsics.Vector256`1[int],System.Runtime.Intrinsics.Vector256`1[float],ubyte):System.Runtime.Intrinsics.Vector256`1[float] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[int],ulong,System.Runtime.Intrinsics.Vector256`1[int],System.Runtime.Intrinsics.Vector256`1[int],ubyte):System.Runtime.Intrinsics.Vector256`1[int] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[long],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector256`1[long] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[long],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[long],ubyte):System.Runtime.Intrinsics.Vector256`1[long] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[uint],ulong,System.Runtime.Intrinsics.Vector256`1[int],System.Runtime.Intrinsics.Vector256`1[uint],ubyte):System.Runtime.Intrinsics.Vector256`1[uint] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[ulong],ulong,System.Runtime.Intrinsics.Vector128`1[int],System.Runtime.Intrinsics.Vector256`1[ulong],ubyte):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
          -6 (-2.90 % of base) : System.Private.CoreLib.dasm - System.Runtime.Intrinsics.X86.Avx2:GatherMaskVector256(System.Runtime.Intrinsics.Vector256`1[ulong],ulong,System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[ulong],ubyte):System.Runtime.Intrinsics.Vector256`1[ulong] (FullOpts)
         -28 (-2.78 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionRightToLeft(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         -19 (-2.60 % of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:WriteAttributeTextBlockNoFlush(ulong,ulong):int:this (FullOpts)
         -11 (-2.58 % of base) : System.Private.Xml.Linq.dasm - System.Xml.Linq.XDocument:ValidateNode(System.Xml.Linq.XNode,System.Xml.Linq.XNode):this (FullOpts)
         -13 (-2.49 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.Deserializer:<DeserializeRoot>g__DeserializeNew|32_0(System.Formats.Nrbf.SerializationRecordId):System.Object:this (FullOpts)
          -6 (-2.47 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.QilGenerator:ChooseBestType(System.Xml.Xsl.Xslt.VarPar):System.Xml.Xsl.XmlQueryType:this (FullOpts)
          -7 (-2.42 % of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBinaryReader:IsStartArray(byref):ubyte:this (FullOpts)
         -11 (-2.40 % of base) : System.Console.dasm - System.IO.KeyParser:ParseFromSingleChar(ushort,ubyte):System.ConsoleKeyInfo (FullOpts)
          -8 (-2.37 % of base) : System.Private.CoreLib.dasm - System.RuntimeType:GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo):System.Reflection.MemberInfo:this (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[int,long](System.RuntimeType,ushort,byref):System.String (FullOpts)
         -17 (-2.31 % of base) : System.Private.CoreLib.dasm - System.Enum:ToString[short,long](System.RuntimeType,ushort,byref):System.String (FullOpts)

314 total methods with Code Size differences (282 improved, 32 regressed), 231792 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Sep 15, 2024

Top method regressions

81 (5.32 % of base) - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]
 ; Assembly listing for method Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T08] (  6, 55   )     ref  ->  rbx         class-hnd single-def <System.Reflection.MemberInfo[]>
+;  V00 arg0         [V00,T08] (  6, 55   )     ref  ->  [rbp-0x78]  class-hnd single-def <System.Reflection.MemberInfo[]>
 ;  V01 arg1         [V01,T30] (  4, 18   )     ref  ->  r12         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T12] (  7, 42   )     int  ->  r15         single-def
-;  V03 arg3         [V03,T31] (  4, 18   )     ref  ->  [rbp-0x78]  class-hnd single-def <System.String[]>
+;  V03 arg3         [V03,T31] (  4, 18   )     ref  ->  [rbp-0x80]  class-hnd single-def <System.String[]>
 ;  V04 arg4         [V04,T28] (  6, 19.50)     ref  ->  r13         class-hnd single-def <System.Type[]>
 ;  V05 arg5         [V05,T13] (  7, 42   )   ubyte  ->  r14         single-def
 ;  V06 arg6         [V06,T41] (  2,  6   )     ref  ->  [rbp+0x10]  class-hnd single-def <System.Type>
 ;  V07 arg7         [V07,T33] (  2, 16   )   byref  ->  [rbp+0x18]  single-def
 ;  V08 arg8         [V08,T34] (  2, 16   )   byref  ->  [rbp+0x20]  single-def
 ;  V09 arg9         [V09,T35] (  2, 16   )     ref  ->  [rbp+0x28]  class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container>
 ;* V10 loc0         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
 ;  V11 loc1         [V11,T32] (  4, 17.50)     int  ->  [rbp-0x2C] 
-;  V12 loc2         [V12,T17] (  9, 32.50)     ref  ->  [rbp-0x80]  class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
+;  V12 loc2         [V12,T17] (  9, 32.50)     ref  ->  [rbp-0x88]  class-hnd exact spill-single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
 ;  V13 loc3         [V13,T29] (  4, 20.50)   ubyte  ->  [rbp-0x30] 
 ;  V14 loc4         [V14,T00] ( 19,187   )     int  ->  [rbp-0x34] 
-;  V15 loc5         [V15,T27] (  3, 22   )     ref  ->  [rbp-0x88]  class-hnd spill-single-def <System.Type>
-;  V16 loc6         [V16,T01] ( 14,184   )     ref  ->  [rbp-0x90]  class-hnd spill-single-def <System.Reflection.MemberInfo>
-;  V17 loc7         [V17,T06] (  8, 64   )     ref  ->  [rbp-0x98]  class-hnd <System.Reflection.ParameterInfo[]>
+;  V15 loc5         [V15,T27] (  3, 22   )     ref  ->  [rbp-0x90]  class-hnd spill-single-def <System.Type>
+;  V16 loc6         [V16,T01] ( 14,184   )     ref  ->  [rbp-0x98]  class-hnd <System.Reflection.MemberInfo>
+;  V17 loc7         [V17,T06] (  8, 64   )     ref  ->  [rbp-0xA0]  class-hnd <System.Reflection.ParameterInfo[]>
 ;  V18 loc8         [V18,T10] (  3, 48   )     int  ->  [rbp-0x38] 
 ;  V19 loc9         [V19    ] (  3, 24   )     int  ->  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V20 loc10        [V20    ] (  4, 32   )     int  ->  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V21 loc11        [V21    ] (  5, 40   )     int  ->  [rbp-0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V22 loc12        [V22,T19] (  4, 32   )   ubyte  ->  [rbp-0x54]  spill-single-def
-;  V23 loc13        [V23,T02] (  8,112   )     int  ->  rax        
+;  V23 loc13        [V23,T02] (  6, 96   )     int  ->  rax        
 ;* V24 loc14        [V24,T38] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Reflection.MethodBase>
 ;* V25 loc15        [V25,T39] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Reflection.PropertyInfo>
-;  V26 loc16        [V26,T15] (  5, 40   )     ref  ->  [rbp-0xA0]  class-hnd spill-single-def <System.Reflection.MethodInfo>
-;  V27 loc17        [V27,T18] (  4, 32   )     ref  ->  [rbp-0xA8]  class-hnd spill-single-def <System.Reflection.MethodInfo>
-;  V28 loc18        [V28,T21] (  3, 24   )     ref  ->  [rbp-0xB0]  class-hnd spill-single-def <System.Reflection.ParameterInfo[]>
+;  V26 loc16        [V26,T15] (  5, 40   )     ref  ->  [rbp-0xA8]  class-hnd spill-single-def <System.Reflection.MethodInfo>
+;  V27 loc17        [V27,T18] (  4, 32   )     ref  ->  [rbp-0xB0]  class-hnd spill-single-def <System.Reflection.MethodInfo>
+;  V28 loc18        [V28,T21] (  3, 24   )     ref  ->  [rbp-0xB8]  class-hnd spill-single-def <System.Reflection.ParameterInfo[]>
 ;  V29 loc19        [V29,T37] (  4,  8   )     int  ->  rsi        
 ;  V30 OutArgs      [V30    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V31 tmp1         [V31,T40] (  3,  6   )     ref  ->  [rbp-0xB8]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
+;  V31 tmp1         [V31,T40] (  3,  6   )     ref  ->  [rbp-0xC0]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
 ;  V32 tmp2         [V32,T36] (  2, 16   )   ubyte  ->  rdi         "Inline return value spill temp"
 ;  V33 tmp3         [V33,T09] (  4, 48   )     ref  ->  rax         "spilling varStr"
 ;  V34 tmp4         [V34,T20] (  3, 32   )     int  ->  rdi         "spilling unroll qmark"
 ;  V35 tmp5         [V35,T22] (  3, 24   )     ref  ->  rdi         "argument with side effect"
 ;  V36 tmp6         [V36,T04] (  3, 96   )     ref  ->  rdi         "argument with side effect"
 ;  V37 tmp7         [V37,T23] (  3, 24   )     ref  ->  rsi         "arr expr"
 ;  V38 tmp8         [V38,T07] (  2, 64   )     ref  ->  rcx         "arr expr"
 ;  V39 cse0         [V39,T25] (  3, 24   )    long  ->  [rbp-0x60]  spill-single-def "CSE #07: moderate"
 ;  V40 cse1         [V40,T16] (  4, 40   )     int  ->  rdx         "CSE #08: moderate"
 ;  V41 cse2         [V41,T24] (  3, 24   )     ref  ->  rdi         "CSE #09: moderate"
 ;  V42 cse3         [V42,T14] (  6, 43   )     int  ->  [rbp-0x64]  spill-single-def "CSE #01: aggressive"
-;  V43 cse4         [V43,T03] (  6, 96   )    long  ->  [rbp-0x70]  spill-single-def "CSE #04: aggressive"
+;  V43 cse4         [V43,T03] (  6, 96   )    long  ->  [rbp-0x70]  "CSE #04: aggressive"
 ;  V44 cse5         [V44,T26] (  3, 24   )     int  ->  rax         "CSE #10: moderate"
 ;  V45 rat0         [V45,T05] (  8, 84   )    long  ->  rsi         "Widened IV V29"
-;  V46 rat1         [V46,T11] (  3, 44.80)     int  ->  rcx         "ReplaceWithLclVar is creating a new local variable"
+;  V46 rat1         [V46,T11] (  3, 47.67)     int  ->  registers   "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 184
+; Lcl frame size = 200
 
 G_M46810_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 184
-       lea      rbp, [rsp+0xE0]
+       sub      rsp, 200
+       lea      rbp, [rsp+0xF0]
        vxorps   xmm8, xmm8, xmm8
        vmovdqa  xmmword ptr [rbp-0x50], xmm8
        xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
-       mov      gword ptr [rbp-0x78], rcx
+       mov      gword ptr [rbp-0x80], rcx
        mov      rbx, rdi
        mov      r12, rsi
        mov      r15d, edx
        mov      r13, r8
        mov      r14d, r9d
 						;; size=60 bbWeight=1 PerfScore 12.58
 G_M46810_IG02:
        xor      r9d, r9d
        test     r13, r13
        mov      dword ptr [rbp-0x2C], r9d
        je       SHORT G_M46810_IG04
 						;; size=12 bbWeight=1 PerfScore 2.50
 G_M46810_IG03:
        mov      r9d, dword ptr [r13+0x08]
        mov      dword ptr [rbp-0x2C], r9d
 						;; size=8 bbWeight=0.50 PerfScore 1.50
 G_M46810_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0xB8], rax
+       mov      gword ptr [rbp-0xC0], rax
        mov      ecx, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x64], ecx
        mov      esi, ecx
        mov      rdi, rax
        mov      rdx, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this
        call     [rdx]System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this
-       mov      rax, gword ptr [rbp-0xB8]
-       mov      gword ptr [rbp-0x80], rax
+       mov      rax, gword ptr [rbp-0xC0]
+       mov      gword ptr [rbp-0x88], rax
        mov      ecx, dword ptr [rbp-0x64]
        test     ecx, ecx
        jne      SHORT G_M46810_IG06
-						;; size=63 bbWeight=1 PerfScore 13.25
+						;; size=66 bbWeight=1 PerfScore 13.25
 G_M46810_IG05:
-       mov      r15, gword ptr [rbp-0x80]
+       mov      r12, gword ptr [rbp-0x88]
        jmp      G_M46810_IG49
-       align    [5 bytes for IG45]
-						;; size=14 bbWeight=0.50 PerfScore 1.50
+       align    [6 bytes for IG45]
+						;; size=18 bbWeight=0.50 PerfScore 1.50
 G_M46810_IG06:
        mov      dword ptr [rbp-0x30], 1
        xor      esi, esi
        jmp      SHORT G_M46810_IG08
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M46810_IG07:
+       mov      ecx, esi
        mov      esi, edx
-						;; size=2 bbWeight=2 PerfScore 0.50
+						;; size=4 bbWeight=2 PerfScore 1.00
 G_M46810_IG08:
        cmp      esi, ecx
        jae      G_M46810_IG54
        mov      dword ptr [rbp-0x34], esi
        mov      edi, esi
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        mov      r8, qword ptr [rdi]
        mov      r8, qword ptr [r8+0x40]
        call     [r8+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this
-       mov      gword ptr [rbp-0x88], rax
+       mov      gword ptr [rbp-0x90], rax
        mov      rcx, gword ptr [rbp+0x10]
        test     rcx, rcx
        jne      SHORT G_M46810_IG13
 						;; size=45 bbWeight=4 PerfScore 59.00
 G_M46810_IG09:
        mov      gword ptr [rbp+0x10], rcx
 						;; size=4 bbWeight=2 PerfScore 2.00
 G_M46810_IG10:
        mov      edi, dword ptr [rbp-0x34]
        mov      rsi, gword ptr [rbx+8*rdi+0x10]
-       mov      gword ptr [rbp-0x90], rsi
        xor      r8d, r8d
        mov      dword ptr [rbp-0x38], r8d
        mov      rdi, rsi
+       mov      gword ptr [rbp-0x98], rsi
        mov      r9, qword ptr [rsi]
        mov      qword ptr [rbp-0x70], r9
        mov      r10, qword ptr [r9+0x40]
        call     [r10+0x28]System.Reflection.MemberInfo:get_MemberType():int:this
        cmp      eax, 16
        jg       SHORT G_M46810_IG16
 						;; size=45 bbWeight=32 PerfScore 472.00
 G_M46810_IG11:
-       lea      ecx, [rax-0x01]
-       cmp      ecx, 3
-       ja       G_M46810_IG18
-						;; size=12 bbWeight=8 PerfScore 14.00
+       dec      eax
+       cmp      eax, 15
+       ja       G_M46810_IG39
+						;; size=11 bbWeight=8 PerfScore 12.00
 G_M46810_IG12:
-       mov      edi, ecx
-       lea      rax, [reloc @RWD00]
-       mov      eax, dword ptr [rax+4*rdi]
-       lea      rcx, G_M46810_IG02
-       add      rax, rcx
-       jmp      rax
-						;; size=24 bbWeight=6.40 PerfScore 38.40
+       mov      esi, eax
+       mov      rax, gword ptr [rbp-0x98]
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      edx, dword ptr [rbp-0x38]
+       lea      rdi, [reloc @RWD00]
+       mov      edi, dword ptr [rdi+4*rsi]
+       lea      r8, G_M46810_IG02
+       add      rdi, r8
+       jmp      rdi
+						;; size=38 bbWeight=7.83 PerfScore 70.50
 G_M46810_IG13:
        mov      gword ptr [rbp+0x10], rcx
        mov      rdi, rcx
        mov      rsi, rax
        mov      rdx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:IsOrInheritsFrom(System.Type,System.Type):ubyte
        call     [rdx]Microsoft.VisualBasic.CompilerServices.Symbols:IsOrInheritsFrom(System.Type,System.Type):ubyte
        test     eax, eax
        je       SHORT G_M46810_IG10
 						;; size=26 bbWeight=2 PerfScore 12.00
 G_M46810_IG14:
        xor      edx, edx
        xor      ebx, ebx
-       mov      r15, gword ptr [rbp-0x80]
-       cmp      dword ptr [r15+0x10], 0
+       mov      r12, gword ptr [rbp-0x88]
+       cmp      dword ptr [r12+0x10], 0
        jle      G_M46810_IG49
-						;; size=19 bbWeight=0.50 PerfScore 2.75
+						;; size=23 bbWeight=0.50 PerfScore 2.75
 G_M46810_IG15:
-       mov      edx, dword ptr [r15+0x10]
+       mov      edx, dword ptr [r12+0x10]
        cmp      ebx, edx
        jb       G_M46810_IG43
        jmp      G_M46810_IG52
-						;; size=17 bbWeight=4 PerfScore 21.00
+						;; size=18 bbWeight=4 PerfScore 21.00
 G_M46810_IG16:
        cmp      eax, 32
-       je       SHORT G_M46810_IG17
+       je       G_M46810_IG20
        cmp      eax, 64
-       je       SHORT G_M46810_IG17
+       je       G_M46810_IG20
        cmp      eax, 128
-       jne      G_M46810_IG39
-						;; size=21 bbWeight=8 PerfScore 30.00
+       je       G_M46810_IG20
+       jmp      G_M46810_IG39
+						;; size=34 bbWeight=8 PerfScore 46.00
 G_M46810_IG17:
        test     r14b, r14b
+       mov      qword ptr [rbp-0x70], rcx
+       mov      dword ptr [rbp-0x38], edx
        jne      G_M46810_IG39
-       xor      edx, edx
-       mov      dword ptr [rbp-0x30], edx
-       jmp      G_M46810_IG39
-						;; size=19 bbWeight=8 PerfScore 36.00
-G_M46810_IG18:
-       cmp      eax, 8
-       jne      G_M46810_IG25
-						;; size=9 bbWeight=8 PerfScore 10.00
-G_M46810_IG19:
-       mov      rsi, gword ptr [rbp-0x90]
-       mov      rdi, 0xD1FFAB1E      ; System.Reflection.MethodBase
-       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
-       call     [rcx]CORINFO_HELP_CHKCASTCLASS
-       test     r14b, r14b
-       je       SHORT G_M46810_IG24
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M46810_IG51
-						;; size=53 bbWeight=8 PerfScore 80.00
-G_M46810_IG20:
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rax, qword ptr [rbp-0x70]
-       mov      rcx, qword ptr [rax+0x50]
-       call     [rcx+0x20]System.Reflection.MethodBase:get_Attributes():int:this
-       test     eax, 0x800
-       je       G_M46810_IG39
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rax, qword ptr [rbp-0x70]
-       mov      rcx, qword ptr [rax+0x40]
-       call     [rcx+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
-       cmp      dword ptr [rax+0x08], 3
-       jl       SHORT G_M46810_IG22
-						;; size=53 bbWeight=8 PerfScore 154.00
-G_M46810_IG21:
-       mov      edi, dword ptr [rax+0x0C]
-       xor      edi, 0xD1FFAB1E
-       mov      eax, dword ptr [rax+0x0E]
-       xor      eax, 0xD1FFAB1E
-       or       edi, eax
-       sete     dil
-       movzx    rdi, dil
-       jmp      SHORT G_M46810_IG23
-						;; size=29 bbWeight=4 PerfScore 32.00
-G_M46810_IG22:
-       xor      edi, edi
-						;; size=2 bbWeight=4 PerfScore 1.00
-G_M46810_IG23:
-       test     edi, edi
-       je       G_M46810_IG39
-						;; size=8 bbWeight=8 PerfScore 10.00
-G_M46810_IG24:
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rax, qword ptr [rbp-0x70]
-       mov      rax, qword ptr [rax+0x50]
-       call     [rax+0x18]System.Reflection.MethodBase:GetParameters():System.Reflection.ParameterInfo[]:this
        mov      gword ptr [rbp-0x98], rax
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:GetTypeParameters(System.Reflection.MemberInfo):System.Type[]
-       call     [rcx]Microsoft.VisualBasic.CompilerServices.Symbols:GetTypeParameters(System.Reflection.MemberInfo):System.Type[]
-       mov      r8d, dword ptr [rax+0x08]
-       mov      dword ptr [rbp-0x38], r8d
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
-       call     [rcx]Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
-       test     eax, eax
-       je       G_M46810_IG29
-       jmp      G_M46810_IG28
-						;; size=84 bbWeight=8 PerfScore 182.00
-G_M46810_IG25:
-       cmp      eax, 16
-       jne      G_M46810_IG39
-       test     r14b, r14b
-       jne      G_M46810_IG39
-       mov      rsi, gword ptr [rbp-0x90]
+       mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.PropertyInfo
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
-       call     [rax]CORINFO_HELP_CHKCASTCLASS
-       mov      rdi, gword ptr [rbp-0x90]
+       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
+       call     [r8]CORINFO_HELP_CHKCASTCLASS
+       mov      rdi, gword ptr [rbp-0x98]
        xor      esi, esi
        mov      rax, qword ptr [rbp-0x70]
        mov      rax, qword ptr [rax+0x58]
        mov      qword ptr [rbp-0x60], rax
        call     [rax+0x08]System.Reflection.PropertyInfo:GetGetMethod(ubyte):System.Reflection.MethodInfo:this
-       mov      gword ptr [rbp-0xA0], rax
+       mov      gword ptr [rbp-0xA8], rax
        test     rax, rax
-       jne      G_M46810_IG27
-       mov      rdi, gword ptr [rbp-0x90]
+       jne      G_M46810_IG19
+       mov      rdi, gword ptr [rbp-0x98]
        xor      esi, esi
        mov      rax, qword ptr [rbp-0x60]
        call     [rax+0x18]System.Reflection.PropertyInfo:GetSetMethod(ubyte):System.Reflection.MethodInfo:this
-       mov      gword ptr [rbp-0xA8], rax
+       mov      gword ptr [rbp-0xB0], rax
        mov      rdi, rax
        mov      rcx, qword ptr [rax]
        mov      rcx, qword ptr [rcx+0x50]
        call     [rcx+0x18]System.Reflection.MethodBase:GetParameters():System.Reflection.ParameterInfo[]:this
-       mov      gword ptr [rbp-0xB0], rax
+       mov      gword ptr [rbp-0xB8], rax
        mov      esi, dword ptr [rax+0x08]
        sub      esi, 2
        jo       G_M46810_IG53
        add      esi, 1
        jo       G_M46810_IG53
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; System.Reflection.ParameterInfo[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      edx, dword ptr [rax+0x08]
-       mov      rdi, gword ptr [rbp-0xB0]
-       mov      gword ptr [rbp-0x98], rax
+       mov      rdi, gword ptr [rbp-0xB8]
+       mov      gword ptr [rbp-0xA0], rax
        mov      rsi, rax
        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,System.Array,int)
        call     [rcx]System.Array:Copy(System.Array,System.Array,int)
-       mov      rdi, gword ptr [rbp-0xA8]
+       mov      rdi, gword ptr [rbp-0xB0]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
-						;; size=218 bbWeight=8 PerfScore 374.00
-G_M46810_IG26:
+						;; size=220 bbWeight=8 PerfScore 382.00
+G_M46810_IG18:
        call     [rax]Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
        test     eax, eax
-       je       SHORT G_M46810_IG29
-       jmp      SHORT G_M46810_IG28
-						;; size=8 bbWeight=8 PerfScore 50.00
-G_M46810_IG27:
+       je       G_M46810_IG28
+       jmp      G_M46810_IG27
+						;; size=15 bbWeight=8 PerfScore 50.00
+G_M46810_IG19:
        mov      rdi, rax
        mov      rcx, qword ptr [rax]
        mov      rcx, qword ptr [rcx+0x50]
        call     [rcx+0x18]System.Reflection.MethodBase:GetParameters():System.Reflection.ParameterInfo[]:this
-       mov      gword ptr [rbp-0x98], rax
-       mov      rdi, gword ptr [rbp-0xA0]
+       mov      gword ptr [rbp-0xA0], rax
+       mov      rdi, gword ptr [rbp-0xA8]
        mov      rcx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
        call     [rcx]Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
        test     eax, eax
-       je       SHORT G_M46810_IG29
-						;; size=43 bbWeight=8 PerfScore 110.00
-G_M46810_IG28:
-       xor      eax, eax
-       mov      dword ptr [rbp-0x30], eax
+       je       G_M46810_IG28
+       jmp      G_M46810_IG27
+						;; size=52 bbWeight=8 PerfScore 126.00
+G_M46810_IG20:
+       test     r14b, r14b
+       jne      G_M46810_IG39
+       xor      edx, edx
+       mov      dword ptr [rbp-0x30], edx
+       jmp      G_M46810_IG39
+						;; size=19 bbWeight=8 PerfScore 36.00
+G_M46810_IG21:
+       mov      qword ptr [rbp-0x70], rcx
+       mov      gword ptr [rbp-0x98], rax
+       mov      rsi, rax
+       mov      rdi, 0xD1FFAB1E      ; System.Reflection.MethodBase
+       mov      rdx, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
+       call     [rdx]CORINFO_HELP_CHKCASTCLASS
+       test     r14b, r14b
+       je       G_M46810_IG26
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M46810_IG51
+						;; size=64 bbWeight=8 PerfScore 90.00
+G_M46810_IG22:
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rax, qword ptr [rbp-0x70]
+       mov      rcx, qword ptr [rax+0x50]
+       call     [rcx+0x20]System.Reflection.MethodBase:get_Attributes():int:this
+       test     eax, 0x800
+       je       G_M46810_IG39
+       mov      rax, gword ptr [rbp-0x98]
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      gword ptr [rbp-0x98], rax
+       mov      rdi, rax
+       mov      qword ptr [rbp-0x70], rcx
+       mov      rdx, qword ptr [rcx+0x40]
+       call     [rdx+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
+       cmp      dword ptr [rax+0x08], 3
+       jl       SHORT G_M46810_IG24
+						;; size=67 bbWeight=8 PerfScore 172.00
+G_M46810_IG23:
+       mov      edi, dword ptr [rax+0x0C]
+       xor      edi, 0xD1FFAB1E
+       mov      eax, dword ptr [rax+0x0E]
+       xor      eax, 0xD1FFAB1E
+       or       edi, eax
+       sete     dil
+       movzx    rdi, dil
+       jmp      SHORT G_M46810_IG25
+						;; size=29 bbWeight=4 PerfScore 32.00
+G_M46810_IG24:
+       xor      edi, edi
+						;; size=2 bbWeight=4 PerfScore 1.00
+G_M46810_IG25:
+       test     edi, edi
+       je       G_M46810_IG39
+						;; size=8 bbWeight=8 PerfScore 10.00
+G_M46810_IG26:
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rax, qword ptr [rbp-0x70]
+       mov      rax, qword ptr [rax+0x50]
+       call     [rax+0x18]System.Reflection.MethodBase:GetParameters():System.Reflection.ParameterInfo[]:this
+       mov      gword ptr [rbp-0xA0], rax
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:GetTypeParameters(System.Reflection.MemberInfo):System.Type[]
+       call     [rcx]Microsoft.VisualBasic.CompilerServices.Symbols:GetTypeParameters(System.Reflection.MemberInfo):System.Type[]
+       mov      edx, dword ptr [rax+0x08]
+       mov      dword ptr [rbp-0x38], edx
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
+       call     [rcx]Microsoft.VisualBasic.CompilerServices.Symbols:IsShadows(System.Reflection.MethodBase):ubyte
+       test     eax, eax
+       je       SHORT G_M46810_IG28
+						;; size=73 bbWeight=8 PerfScore 166.00
+G_M46810_IG27:
+       xor      ecx, ecx
+       mov      dword ptr [rbp-0x30], ecx
 						;; size=5 bbWeight=8 PerfScore 10.00
-G_M46810_IG29:
+G_M46810_IG28:
        xor      ecx, ecx
        mov      dword ptr [rbp-0x40], ecx
 						;; size=5 bbWeight=8 PerfScore 10.00
-G_M46810_IG30:
+G_M46810_IG29:
        mov      dword ptr [rbp-0x48], ecx
        mov      dword ptr [rbp-0x50], -1
        lea      rcx, [rbp-0x50]
        lea      rsi, [rbp-0x40]
        lea      rdx, [rbp-0x48]
-       mov      rdi, gword ptr [rbp-0x98]
+       mov      rdi, gword ptr [rbp-0xA0]
        mov      r8, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.Symbols:GetAllParameterCounts(System.Reflection.ParameterInfo[],byref,byref,byref)
        call     [r8]Microsoft.VisualBasic.CompilerServices.Symbols:GetAllParameterCounts(System.Reflection.ParameterInfo[],byref,byref,byref)
        cmp      dword ptr [rbp-0x50], 0
        setge    al
        movzx    rax, al
        mov      dword ptr [rbp-0x54], eax
        cmp      r15d, dword ptr [rbp-0x40]
        jl       G_M46810_IG38
        test     eax, eax
-       jne      SHORT G_M46810_IG31
+       jne      SHORT G_M46810_IG30
        cmp      r15d, dword ptr [rbp-0x48]
        jg       G_M46810_IG38
 						;; size=79 bbWeight=8 PerfScore 154.00
-G_M46810_IG31:
+G_M46810_IG30:
        mov      r10d, dword ptr [rbp-0x2C]
        test     r10d, r10d
-       jle      SHORT G_M46810_IG32
+       jle      SHORT G_M46810_IG31
        mov      dword ptr [rbp-0x2C], r10d
        mov      edi, dword ptr [rbp-0x38]
        cmp      r10d, edi
        mov      r10d, dword ptr [rbp-0x2C]
        jne      G_M46810_IG37
 						;; size=29 bbWeight=8 PerfScore 52.00
-G_M46810_IG32:
+G_M46810_IG31:
        test     eax, eax
-       jne      SHORT G_M46810_IG34
+       jne      SHORT G_M46810_IG33
 						;; size=4 bbWeight=8 PerfScore 10.00
-G_M46810_IG33:
+G_M46810_IG32:
+       mov      gword ptr [rbp-0x78], rbx
        mov      dword ptr [rbp-0x2C], r10d
-       jmp      SHORT G_M46810_IG35
-						;; size=6 bbWeight=4 PerfScore 12.00
-G_M46810_IG34:
+       jmp      SHORT G_M46810_IG34
+						;; size=10 bbWeight=4 PerfScore 16.00
+G_M46810_IG33:
        cmp      r15d, dword ptr [rbp-0x48]
+       mov      gword ptr [rbp-0x78], rbx
        mov      dword ptr [rbp-0x2C], r10d
        jne      SHORT G_M46810_IG36
-						;; size=10 bbWeight=8 PerfScore 32.00
-G_M46810_IG35:
-       mov      r11, gword ptr [rbp-0x78]
+						;; size=14 bbWeight=8 PerfScore 40.00
+G_M46810_IG34:
+       mov      r11, gword ptr [rbp-0x80]
        mov      gword ptr [rsp], r11
        mov      gword ptr [rsp+0x08], r13
        movzx    rdi, r14b
        mov      dword ptr [rsp+0x10], edi
-       mov      rcx, gword ptr [rbp-0x80]
+       mov      rcx, gword ptr [rbp-0x88]
        mov      gword ptr [rsp+0x18], rcx
        mov      r9, gword ptr [rbp+0x28]
        mov      gword ptr [rsp+0x20], r9
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rsi, gword ptr [rbp-0x98]
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rsi, gword ptr [rbp-0xA0]
        mov      edx, dword ptr [rbp-0x50]
        mov      r8, r12
        mov      r9d, r15d
        xor      ecx, ecx
-       mov      r11, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
-       call     [r11]Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
+       mov      rbx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
+       call     [rbx]Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
        cmp      dword ptr [rbp-0x54], 0
-       je       G_M46810_IG39
-						;; size=87 bbWeight=8 PerfScore 146.00
+       jne      SHORT G_M46810_IG36
+						;; size=85 bbWeight=8 PerfScore 146.00
+G_M46810_IG35:
+       mov      rbx, gword ptr [rbp-0x78]
+       jmp      G_M46810_IG39
+						;; size=9 bbWeight=4 PerfScore 12.00
 G_M46810_IG36:
-       mov      rax, gword ptr [rbp-0x78]
+       mov      rax, gword ptr [rbp-0x80]
        mov      gword ptr [rsp], rax
        mov      gword ptr [rsp+0x08], r13
        movzx    rdi, r14b
        mov      dword ptr [rsp+0x10], edi
-       mov      r11, gword ptr [rbp-0x80]
+       mov      r11, gword ptr [rbp-0x88]
        mov      gword ptr [rsp+0x18], r11
        mov      rcx, gword ptr [rbp+0x28]
        mov      gword ptr [rsp+0x20], rcx
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rsi, gword ptr [rbp-0x98]
+       mov      rdi, gword ptr [rbp-0x98]
+       mov      rsi, gword ptr [rbp-0xA0]
        mov      edx, dword ptr [rbp-0x50]
        mov      r8, r12
        mov      r9d, r15d
        mov      ecx, 1
-       mov      rax, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
-       call     [rax]Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
+       mov      rbx, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
+       call     [rbx]Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container)
+       mov      rbx, gword ptr [rbp-0x78]
        jmp      SHORT G_M46810_IG39
-						;; size=81 bbWeight=8 PerfScore 138.00
+						;; size=88 bbWeight=8 PerfScore 146.00
 G_M46810_IG37:
        mov      rax, bword ptr [rbp+0x20]
        mov      edi, dword ptr [rax]
        add      edi, 1
        jo       G_M46810_IG53
        mov      bword ptr [rbp+0x20], rax
        mov      dword ptr [rax], edi
        mov      dword ptr [rbp-0x2C], r10d
        jmp      SHORT G_M46810_IG39
 						;; size=27 bbWeight=8 PerfScore 74.00
 G_M46810_IG38:
        mov      rcx, bword ptr [rbp+0x18]
        mov      edi, dword ptr [rcx]
        add      edi, 1
        jo       G_M46810_IG53
        mov      bword ptr [rbp+0x18], rcx
        mov      dword ptr [rcx], edi
 						;; size=21 bbWeight=8 PerfScore 50.00
 G_M46810_IG39:
        mov      edx, dword ptr [rbp-0x34]
        add      edx, 1
        jo       G_M46810_IG53
        cmp      dword ptr [rbp-0x64], edx
        jle      SHORT G_M46810_IG42
 						;; size=17 bbWeight=32 PerfScore 168.00
 G_M46810_IG40:
        mov      dword ptr [rbp-0x34], edx
        mov      edi, edx
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
-       mov      r8, qword ptr [rdi]
-       mov      r8, qword ptr [r8+0x40]
-       call     [r8+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this
-       mov      rcx, gword ptr [rbp-0x88]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x40]
+       call     [rax+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this
+       mov      rcx, gword ptr [rbp-0x90]
        cmp      rax, rcx
        je       G_M46810_IG10
-						;; size=37 bbWeight=16 PerfScore 200.00
+						;; size=36 bbWeight=16 PerfScore 200.00
 G_M46810_IG41:
        mov      edx, dword ptr [rbp-0x34]
 						;; size=3 bbWeight=8 PerfScore 8.00
 G_M46810_IG42:
-       mov      r8d, dword ptr [rbp-0x30]
-       test     r8d, r8d
+       mov      ecx, dword ptr [rbp-0x30]
+       test     ecx, ecx
        je       G_M46810_IG14
        mov      esi, dword ptr [rbp-0x64]
        cmp      esi, edx
-       mov      dword ptr [rbp-0x30], r8d
-       mov      ecx, esi
+       mov      dword ptr [rbp-0x30], ecx
        jg       G_M46810_IG07
        jmp      G_M46810_IG14
-						;; size=35 bbWeight=4 PerfScore 31.00
+						;; size=30 bbWeight=4 PerfScore 30.00
 G_M46810_IG43:
-       mov      rdi, gword ptr [r15+0x08]
+       mov      rdi, gword ptr [r12+0x08]
        mov      rsi, rdi
        mov      eax, dword ptr [rsi+0x08]
        cmp      ebx, eax
        jae      G_M46810_IG54
        mov      ecx, ebx
        cmp      gword ptr [rsi+8*rcx+0x10], 0
        jne      SHORT G_M46810_IG48
-						;; size=28 bbWeight=4 PerfScore 39.00
+						;; size=29 bbWeight=4 PerfScore 39.00
 G_M46810_IG44:
        mov      esi, ebx
        add      esi, 1
        jo       SHORT G_M46810_IG53
        jmp      SHORT G_M46810_IG46
 						;; size=9 bbWeight=2 PerfScore 7.00
 G_M46810_IG45:
        add      esi, 1
        jo       SHORT G_M46810_IG53
 						;; size=5 bbWeight=8 PerfScore 10.00
 G_M46810_IG46:
        cmp      esi, edx
        jge      SHORT G_M46810_IG47
        jae      SHORT G_M46810_IG52
        mov      rcx, rdi
        cmp      esi, eax
        jae      SHORT G_M46810_IG54
        cmp      gword ptr [rcx+8*rsi+0x10], 0
        je       SHORT G_M46810_IG45
 						;; size=21 bbWeight=16 PerfScore 124.00
 G_M46810_IG47:
        sub      esi, ebx
        jo       SHORT G_M46810_IG53
        mov      edx, esi
-       mov      rdi, r15
+       mov      rdi, r12
        mov      esi, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List`1[System.__Canon]:RemoveRange(int,int):this
        call     [rax]System.Collections.Generic.List`1[System.__Canon]:RemoveRange(int,int):this
 						;; size=23 bbWeight=2 PerfScore 10.50
 G_M46810_IG48:
        add      ebx, 1
        jo       SHORT G_M46810_IG53
-       cmp      ebx, dword ptr [r15+0x10]
+       cmp      ebx, dword ptr [r12+0x10]
        jl       G_M46810_IG15
-						;; size=15 bbWeight=4 PerfScore 21.00
+						;; size=16 bbWeight=4 PerfScore 21.00
 G_M46810_IG49:
-       mov      rax, r15
+       mov      rax, r12
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M46810_IG50:
-       add      rsp, 184
+       add      rsp, 200
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M46810_IG51:
        mov      rdi, 0xD1FFAB1E      ; Microsoft.VisualBasic.CompilerServices.Symbols
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M46810_IG20
+       jmp      G_M46810_IG22
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M46810_IG52:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M46810_IG53:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 G_M46810_IG54:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-RWD00  	dd	G_M46810_IG19 - G_M46810_IG02
-       	dd	G_M46810_IG17 - G_M46810_IG02
+RWD00  	dd	G_M46810_IG21 - G_M46810_IG02
+       	dd	G_M46810_IG20 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG20 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG21 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
+       	dd	G_M46810_IG39 - G_M46810_IG02
        	dd	G_M46810_IG39 - G_M46810_IG02
        	dd	G_M46810_IG17 - G_M46810_IG02
 
 
-; Total bytes of code 1522, prolog size 60, PerfScore 3034.61, instruction count 377, allocated bytes for code 1522 (MethodHash=dba74925) for method Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
+; Total bytes of code 1603, prolog size 60, PerfScore 3138.21, instruction count 390, allocated bytes for code 1603 (MethodHash=dba74925) for method Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],ubyte,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
 ; ============================================================
26 (8.72 % of base) - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte
 ; Assembly listing for method System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T04] (  4,  8   )    long  ->  rdi         single-def
 ;  V01 arg1         [V01,T00] ( 10, 23.50)     int  ->  rsi        
 ;  V02 arg2         [V02,T10] (  4,  3.50)   byref  ->  rdx         single-def
 ;  V03 arg3         [V03,T12] (  3,  2.25)   ubyte  ->  rcx         single-def
 ;  V04 arg4         [V04,T09] (  3,  4   )   ubyte  ->   r8         single-def
 ;  V05 loc0         [V05,T11] (  4,  5.50)     int  ->   r9        
 ;  V06 loc1         [V06,T03] (  6, 11   )     int  ->  r10        
 ;  V07 loc2         [V07,T06] (  6,  9.50)   ubyte  ->  r11        
 ;  V08 loc3         [V08,T08] (  4,  7   )   ubyte  ->  rbx        
 ;  V09 loc4         [V09,T01] (  9, 22.00)  ushort  ->  rax        
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V11 tmp1         [V11,T14] (  3,  3   )     int  ->  r11         "dup spill"
 ;* V12 tmp2         [V12    ] (  0,  0   )     int  ->  zero-ref   
 ;  V13 tmp3         [V13,T15] (  2,  2   )     int  ->  rax         "Single return block return value"
 ;  V14 cse0         [V14,T05] (  3, 10   )     int  ->  r14         "CSE #05: aggressive"
 ;  V15 cse1         [V15,T07] (  4,  8   )     int  ->  r15         "CSE #02: aggressive"
-;  V16 cse2         [V16,T13] (  2,  4.25)     int  ->  rcx         hoist "CSE #01: moderate"
+;  V16 cse2         [V16,T13] (  2,  4.25)     int  ->  [rbp-0x2C]  spill-single-def hoist "CSE #01: moderate"
 ;  V17 rat0         [V17,T02] (  3, 11.99)     int  ->  r13         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M57636_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       lea      rbp, [rsp+0x28]
-						;; size=15 bbWeight=1 PerfScore 6.50
+       push     rax
+       lea      rbp, [rsp+0x30]
+						;; size=16 bbWeight=1 PerfScore 7.50
 G_M57636_IG02:
        xor      r9d, r9d
        xor      r10d, r10d
        xor      r11d, r11d
        xor      ebx, ebx
        mov      r15d, dword ptr [rdx]
        cmp      esi, r15d
-       jge      G_M57636_IG12
+       jge      G_M57636_IG18
 						;; size=23 bbWeight=1 PerfScore 4.25
 G_M57636_IG03:
        movzx    rcx, cl
+       mov      dword ptr [rbp-0x2C], ecx
        align    [0 bytes for IG04]
-						;; size=3 bbWeight=0.25 PerfScore 0.06
+						;; size=6 bbWeight=0.25 PerfScore 0.31
 G_M57636_IG04:
        movsxd   rax, esi
        movzx    r14, word  ptr [rdi+2*rax]
        mov      eax, r14d
        test     ecx, ecx
-       jne      SHORT G_M57636_IG07
-						;; size=15 bbWeight=4 PerfScore 15.00
+       jne      G_M57636_IG14
+						;; size=19 bbWeight=4 PerfScore 15.00
 G_M57636_IG05:
        cmp      eax, 47
-       je       G_M57636_IG12
+       je       G_M57636_IG18
        cmp      eax, 92
-       je       SHORT G_M57636_IG12
+       je       G_M57636_IG18
        test     r8b, r8b
-       je       SHORT G_M57636_IG09
+       je       SHORT G_M57636_IG08
        cmp      eax, 63
-       ja       SHORT G_M57636_IG09
-						;; size=24 bbWeight=2 PerfScore 10.00
+       ja       SHORT G_M57636_IG08
+						;; size=28 bbWeight=2 PerfScore 10.00
 G_M57636_IG06:
-       mov      r13, 0xD1FFAB1E
-       bt       r13, rax
-       jae      SHORT G_M57636_IG12
-       jmp      SHORT G_M57636_IG09
-						;; size=18 bbWeight=2.00 PerfScore 7.48
-G_M57636_IG07:
        mov      r13d, eax
-       sub      r13d, 37
-       cmp      r13d, 56
-       ja       SHORT G_M57636_IG09
-						;; size=13 bbWeight=2 PerfScore 3.50
+       lea      r12, [reloc @RWD00]
+       mov      r12d, dword ptr [r12+4*r13]
+       lea      rcx, G_M57636_IG02
+       add      r12, rcx
+       jmp      r12
+						;; size=27 bbWeight=2.00 PerfScore 11.98
+G_M57636_IG07:
+       mov      ecx, dword ptr [rbp-0x2C]
+						;; size=3 bbWeight=1.00 PerfScore 1.00
 G_M57636_IG08:
-       mov      r12, 0xD1FFAB1E
-       bt       r12, r13
-       jb       SHORT G_M57636_IG12
-						;; size=16 bbWeight=2.00 PerfScore 3.49
-G_M57636_IG09:
        lea      r13d, [rax-0x30]
        cmp      r13d, 9
-       jbe      SHORT G_M57636_IG15
+       ja       SHORT G_M57636_IG16
 						;; size=10 bbWeight=4 PerfScore 7.00
-G_M57636_IG10:
-       cmp      eax, 46
-       jne      G_M57636_IG18
+G_M57636_IG09:
        test     r11d, r11d
-       je       G_M57636_IG18
-       test     r10d, r10d
-       setg     r11b
-       movzx    r11, r11b
-       test     r11d, ebx
-       jne      SHORT G_M57636_IG18
-       inc      r9d
-       xor      r11d, r11d
-       xor      r10d, r10d
-       xor      ebx, ebx
-						;; size=45 bbWeight=2 PerfScore 12.50
-G_M57636_IG11:
-       inc      esi
-       cmp      esi, r15d
-       jl       G_M57636_IG04
-						;; size=11 bbWeight=4 PerfScore 6.00
-G_M57636_IG12:
-       cmp      r9d, 3
-       sete     al
-       movzx    rax, al
-       and      r11d, eax
-       je       SHORT G_M57636_IG13
-       mov      dword ptr [rdx], esi
-						;; size=17 bbWeight=0.50 PerfScore 1.88
-G_M57636_IG13:
-       movzx    rax, r11b
-						;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M57636_IG14:
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=11 bbWeight=0.50 PerfScore 2.00
-G_M57636_IG15:
-       test     r11d, r11d
-       jne      SHORT G_M57636_IG17
+       jne      SHORT G_M57636_IG11
        cmp      eax, 48
-       jne      SHORT G_M57636_IG17
+       jne      SHORT G_M57636_IG11
        lea      r11d, [rsi+0x01]
        cmp      r11d, r15d
-       jge      SHORT G_M57636_IG16
+       jge      SHORT G_M57636_IG10
        lea      eax, [rsi+0x01]
        cdqe     
        cmp      word  ptr [rdi+2*rax], 48
-       je       SHORT G_M57636_IG18
+       je       SHORT G_M57636_IG12
 						;; size=31 bbWeight=2 PerfScore 18.00
-G_M57636_IG16:
+G_M57636_IG10:
        mov      ebx, 1
 						;; size=5 bbWeight=2 PerfScore 0.50
-G_M57636_IG17:
+G_M57636_IG11:
        mov      r11d, 1
        lea      r10d, [r10+4*r10]
        lea      r10d, [r14+2*r10-0x30]
        cmp      r10d, 255
-       jle      SHORT G_M57636_IG11
+       jle      SHORT G_M57636_IG17
 						;; size=24 bbWeight=2 PerfScore 6.00
-G_M57636_IG18:
+G_M57636_IG12:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57636_IG19:
+G_M57636_IG13:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=0.50 PerfScore 2.00
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M57636_IG14:
+       mov      r13d, eax
+       sub      r13d, 37
+       cmp      r13d, 56
+       ja       SHORT G_M57636_IG08
+						;; size=13 bbWeight=2 PerfScore 3.50
+G_M57636_IG15:
+       mov      r12, 0xD1FFAB1E
+       bt       r12, r13
+       jb       SHORT G_M57636_IG18
+       jmp      SHORT G_M57636_IG08
+						;; size=18 bbWeight=2.00 PerfScore 7.48
+G_M57636_IG16:
+       cmp      eax, 46
+       jne      SHORT G_M57636_IG12
+       test     r11d, r11d
+       je       SHORT G_M57636_IG12
+       test     r10d, r10d
+       setg     r11b
+       movzx    r11, r11b
+       test     r11d, ebx
+       jne      SHORT G_M57636_IG12
+       inc      r9d
+       xor      r11d, r11d
+       xor      r10d, r10d
+       xor      ebx, ebx
+						;; size=37 bbWeight=2 PerfScore 12.50
+G_M57636_IG17:
+       inc      esi
+       cmp      esi, r15d
+       jl       G_M57636_IG04
+						;; size=11 bbWeight=4 PerfScore 6.00
+G_M57636_IG18:
+       cmp      r9d, 3
+       sete     al
+       movzx    rax, al
+       and      r11d, eax
+       je       SHORT G_M57636_IG19
+       mov      dword ptr [rdx], esi
+						;; size=17 bbWeight=0.50 PerfScore 1.88
+G_M57636_IG19:
+       movzx    rax, r11b
+						;; size=4 bbWeight=0.50 PerfScore 0.12
+G_M57636_IG20:
+       add      rsp, 8
+       pop      rbx
+       pop      r12
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+RWD00  	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG18 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG18 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG07 - G_M57636_IG02
+       	dd	G_M57636_IG18 - G_M57636_IG02
 
-; Total bytes of code 298, prolog size 15, PerfScore 106.41, instruction count 98, allocated bytes for code 298 (MethodHash=dbf31edb) for method System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
+
+; Total bytes of code 324, prolog size 16, PerfScore 117.39, instruction count 106, allocated bytes for code 324 (MethodHash=dbf31edb) for method System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
 ; ============================================================

Note: some changes were skipped as they were too large to fit into a comment.

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

@MihuBot
Copy link
Owner Author

MihuBot commented Sep 15, 2024

Top method improvements

-140 (-13.42 % of base) - Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this
 ; Assembly listing for method Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  4,  4   )     ref  ->  rbx         this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter>
 ;  V01 arg1         [V01,T04] (  4,  4   )     ref  ->  r15         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall>
 ;  V02 loc0         [V02,T07] (  3,  3   )     ref  ->  r14         class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExprList>
 ;  V03 loc1         [V03,T00] ( 22, 11.50)     ref  ->  r13         class-hnd single-def <System.Linq.Expressions.Expression>
 ;  V04 loc2         [V04,T01] ( 22, 11.50)     ref  ->  rax         class-hnd single-def <System.Linq.Expressions.Expression>
-;  V05 loc3         [V05,T05] (  8,  5   )     int  ->  rbx        
+;  V05 loc3         [V05,T05] (  7,  4.50)     int  ->  rbx        
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    "Single return block return value"
 ;  V08 rat0         [V08,T06] (  3,  4   )     ref  ->  rsi         "Spilling to split statement for tree"
 ;  V09 rat1         [V09,T02] (  4,  7   )     ref  ->  r14         "replacement local"
 ;  V10 rat2         [V10,T12] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
-;  V11 rat3         [V11,T08] (  3,  2.94)     int  ->  r15         "ReplaceWithLclVar is creating a new local variable"
-;  V12 rat4         [V12,T10] (  3,  2.83)     int  ->  rbx         "ReplaceWithLclVar is creating a new local variable"
-;  V13 rat5         [V13,T09] (  3,  2.88)     int  ->  r14         "ReplaceWithLclVar is creating a new local variable"
-;  V14 rat6         [V14,T11] (  3,  2.83)     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
+;  V11 rat3         [V11,T08] (  3,  2.94)     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
+;  V12 rat4         [V12,T11] (  3,  2.83)     int  ->  rbx         "ReplaceWithLclVar is creating a new local variable"
+;  V13 rat5         [V13,T10] (  3,  2.88)     int  ->  r15         "ReplaceWithLclVar is creating a new local variable"
+;  V14 rat6         [V14,T09] (  3,  2.92)     int  ->  rbx         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M50533_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=22 bbWeight=1 PerfScore 8.00
+						;; size=19 bbWeight=1 PerfScore 6.00
 G_M50533_IG02:
        mov      rsi, gword ptr [r15+0x40]
        mov      r14, rsi
        test     r14, r14
        je       SHORT G_M50533_IG04
 						;; size=12 bbWeight=1 PerfScore 3.50
 G_M50533_IG03:
        mov      rdi, 0xD1FFAB1E      ; Microsoft.CSharp.RuntimeBinder.Semantics.ExprList
        cmp      qword ptr [r14], rdi
        jne      G_M50533_IG56
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M50533_IG04:
        mov      rsi, gword ptr [r14+0x38]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GetExpression(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):System.Linq.Expressions.Expression:this
        call     [rax]Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GetExpression(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):System.Linq.Expressions.Expression:this
        mov      r13, rax
        mov      rsi, gword ptr [r14+0x40]
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GetExpression(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):System.Linq.Expressions.Expression:this
        call     [rax]Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GetExpression(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):System.Linq.Expressions.Expression:this
        mov      ebx, dword ptr [r15+0x60]
        cmp      ebx, 30
        jle      G_M50533_IG35
 						;; size=54 bbWeight=1 PerfScore 14.50
 G_M50533_IG05:
        cmp      ebx, 32
        jne      SHORT G_M50533_IG07
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:GreaterThanOrEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=25 bbWeight=0.50 PerfScore 1.25
 G_M50533_IG06:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:GreaterThanOrEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG07:
-       lea      r15d, [rbx-0x23]
-       cmp      r15d, 16
+       lea      edi, [rbx-0x23]
+       cmp      edi, 16
        ja       SHORT G_M50533_IG09
-						;; size=10 bbWeight=0.50 PerfScore 0.88
+						;; size=8 bbWeight=0.50 PerfScore 0.88
 G_M50533_IG08:
-       mov      edi, r15d
+       mov      edi, edi
        lea      rsi, [reloc @RWD00]
        mov      esi, dword ptr [rsi+4*rdi]
        lea      rdx, G_M50533_IG02
        add      rsi, rdx
        jmp      rsi
-						;; size=25 bbWeight=0.47 PerfScore 2.83
+						;; size=24 bbWeight=0.47 PerfScore 2.83
 G_M50533_IG09:
        add      ebx, -54
        cmp      ebx, 4
        ja       G_M50533_IG55
 						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M50533_IG10:
        mov      edi, ebx
        lea      rsi, [reloc @RWD68]
        mov      esi, dword ptr [rsi+4*rdi]
        lea      rdx, G_M50533_IG02
        add      rsi, rdx
        jmp      rsi
 						;; size=24 bbWeight=0.42 PerfScore 2.50
 G_M50533_IG11:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:SubtractChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG12:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:SubtractChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG13:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Subtract(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG14:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Subtract(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG15:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:RightShift(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG16:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:RightShift(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG17:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:OrElse(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG18:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:OrElse(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG19:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Or(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG20:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Or(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG21:
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:NotEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=20 bbWeight=0.50 PerfScore 0.62
 G_M50533_IG22:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:NotEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG23:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:MultiplyChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG24:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:MultiplyChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG25:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Multiply(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG26:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Multiply(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG27:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Modulo(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG28:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Modulo(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG29:
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:LessThanOrEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=20 bbWeight=0.50 PerfScore 0.62
 G_M50533_IG30:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:LessThanOrEqual(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG31:
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:LessThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=20 bbWeight=0.50 PerfScore 0.62
 G_M50533_IG32:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:LessThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG33:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:LeftShift(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG34:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:LeftShift(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG35:
-       lea      r14d, [rbx-0x07]
-       cmp      r14d, 6
+       lea      r15d, [rbx-0x07]
+       cmp      r15d, 6
        ja       SHORT G_M50533_IG37
 						;; size=10 bbWeight=0.50 PerfScore 0.88
 G_M50533_IG36:
-       mov      edi, r14d
+       mov      edi, r15d
        lea      rsi, [reloc @RWD88]
        mov      esi, dword ptr [rsi+4*rdi]
        lea      rdx, G_M50533_IG02
        add      rsi, rdx
        jmp      rsi
 						;; size=25 bbWeight=0.44 PerfScore 2.62
 G_M50533_IG37:
-       lea      r12d, [rbx-0x17]
-       cmp      r12d, 4
-       ja       SHORT G_M50533_IG39
-						;; size=10 bbWeight=0.50 PerfScore 0.88
+       add      ebx, -23
+       cmp      ebx, 7
+       ja       G_M50533_IG55
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M50533_IG38:
-       mov      edi, r12d
+       mov      edi, ebx
        lea      rsi, [reloc @RWD116]
        mov      esi, dword ptr [rsi+4*rdi]
        lea      rdx, G_M50533_IG02
        add      rsi, rdx
        jmp      rsi
-						;; size=25 bbWeight=0.42 PerfScore 2.50
+						;; size=24 bbWeight=0.46 PerfScore 2.75
 G_M50533_IG39:
-       cmp      ebx, 30
-       jne      G_M50533_IG55
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:GreaterThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=29 bbWeight=0.50 PerfScore 1.25
+						;; size=20 bbWeight=0.50 PerfScore 0.62
 G_M50533_IG40:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:GreaterThan(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG41:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:ExclusiveOr(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG42:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:ExclusiveOr(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG43:
        mov      rdi, r13
        mov      rsi, rax
        xor      edx, edx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Equal(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=20 bbWeight=0.50 PerfScore 0.62
 G_M50533_IG44:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Equal(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG45:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Divide(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG46:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Divide(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG47:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:AndAlso(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG48:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:AndAlso(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG49:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:And(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG50:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:And(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG51:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:AddChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG52:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:AddChecked(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG53:
        mov      rdi, r13
        mov      rsi, rax
        xor      rdx, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Expression:Add(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
 						;; size=18 bbWeight=0.50 PerfScore 0.50
 G_M50533_IG54:
-       add      rsp, 8
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Expression:Add(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo):System.Linq.Expressions.BinaryExpression
-						;; size=17 bbWeight=0.50 PerfScore 2.62
+						;; size=11 bbWeight=0.50 PerfScore 2.25
 G_M50533_IG55:
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.CSharp.RuntimeBinder.Error:InternalCompilerError():System.Exception
        call     [rax]Microsoft.CSharp.RuntimeBinder.Error:InternalCompilerError():System.Exception
        mov      rdi, rax
        call     CORINFO_HELP_THROW
        int3     
 						;; size=21 bbWeight=0 PerfScore 0.00
 G_M50533_IG56:
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 RWD00  	dd	G_M50533_IG33 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG31 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG29 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG27 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG25 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG23 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG21 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG19 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG17 - G_M50533_IG02
 RWD68  	dd	G_M50533_IG15 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG13 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG11 - G_M50533_IG02
 RWD88  	dd	G_M50533_IG53 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG51 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG49 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG47 - G_M50533_IG02
 RWD116 	dd	G_M50533_IG45 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG43 - G_M50533_IG02
        	dd	G_M50533_IG55 - G_M50533_IG02
        	dd	G_M50533_IG41 - G_M50533_IG02
+       	dd	G_M50533_IG55 - G_M50533_IG02
+       	dd	G_M50533_IG55 - G_M50533_IG02
+       	dd	G_M50533_IG39 - G_M50533_IG02
 
 
-; Total bytes of code 1043, prolog size 16, PerfScore 109.58, instruction count 335, allocated bytes for code 1043 (MethodHash=8c4a3a9a) for method Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 903, prolog size 13, PerfScore 99.21, instruction count 289, allocated bytes for code 903 (MethodHash=8c4a3a9a) for method Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
 ; ============================================================
-100 (-18.80 % of base) - System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this
 ; Assembly listing for method System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 15,  9   )     ref  ->  rdi         this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-;  V01 loc0         [V01,T01] ( 11,  6   )     ref  ->  rdi         class-hnd <System.Text.RegularExpressions.RegexNode>
-;  V02 loc1         [V02,T02] (  7,  4.50)   ubyte  ->  rax        
+;  V01 loc0         [V01,T01] ( 11,  6   )     ref  ->  rax         class-hnd <System.Text.RegularExpressions.RegexNode>
+;  V02 loc1         [V02,T02] (  6,  4   )   ubyte  ->  rax        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 cse0         [V04,T03] (  3,  3   )     int  ->  rax         "CSE #01: aggressive"
-;  V05 rat0         [V05,T04] (  3,  2.92)     int  ->  rbx         "ReplaceWithLclVar is creating a new local variable"
+;  V05 rat0         [V05,T04] (  3,  2.99)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M64711_IG01:
        push     rbp
-       push     rbx
-       push     rax
-       lea      rbp, [rsp+0x10]
-						;; size=8 bbWeight=1 PerfScore 3.50
+       mov      rbp, rsp
+						;; size=4 bbWeight=1 PerfScore 1.25
 G_M64711_IG02:
        movzx    rax, byte  ptr [rdi+0x2E]
        cmp      eax, 13
        je       SHORT G_M64711_IG04
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M64711_IG03:
        and      dword ptr [rdi+0x28], -2
 						;; size=4 bbWeight=0.50 PerfScore 1.50
 G_M64711_IG04:
        cmp      eax, 8
-       jbe      G_M64711_IG17
+       jbe      G_M64711_IG16
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M64711_IG05:
        cmp      eax, 11
-       je       G_M64711_IG18
-       lea      ebx, [rax-0x18]
-       cmp      ebx, 10
+       je       G_M64711_IG17
+       add      eax, -24
+       cmp      eax, 21
        ja       SHORT G_M64711_IG07
-						;; size=17 bbWeight=0.50 PerfScore 1.50
+						;; size=17 bbWeight=0.50 PerfScore 1.38
 G_M64711_IG06:
-       mov      eax, ebx
+       mov      eax, eax
        lea      rcx, [reloc @RWD00]
        mov      ecx, dword ptr [rcx+4*rax]
        lea      rdx, G_M64711_IG02
        add      rcx, rdx
        jmp      rcx
-						;; size=24 bbWeight=0.46 PerfScore 2.75
+						;; size=24 bbWeight=0.49 PerfScore 2.97
 G_M64711_IG07:
-       cmp      eax, 45
-       je       G_M64711_IG18
-						;; size=9 bbWeight=0.50 PerfScore 0.62
+       mov      rax, rdi
+       jmp      G_M64711_IG18
+						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M64711_IG08:
-       jmp      G_M64711_IG19
-						;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M64711_IG09:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceExpressionConditional():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceExpressionConditional():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      G_M64711_IG19
-						;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG10:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG09:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceBackreferenceConditional():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceBackreferenceConditional():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      G_M64711_IG19
-						;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG11:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG10:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG12:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG11:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceLookaround():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceLookaround():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG13:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG12:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceGroup():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceGroup():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG14:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG13:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceLoops():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceLoops():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG15:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG14:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceConcatenation():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceConcatenation():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG16:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG15:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceAlternation():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceAlternation():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-       jmp      SHORT G_M64711_IG19
-						;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M64711_IG17:
+       jmp      SHORT G_M64711_IG18
+						;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M64711_IG16:
        cmp      eax, 5
-       je       SHORT G_M64711_IG18
+       je       SHORT G_M64711_IG17
        cmp      eax, 8
-       jne      G_M64711_IG08
+       jne      G_M64711_IG07
 						;; size=14 bbWeight=0.50 PerfScore 1.25
-G_M64711_IG18:
+G_M64711_IG17:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.RegularExpressions.RegexNode:ReduceSet():System.Text.RegularExpressions.RegexNode:this
        call     [rax]System.Text.RegularExpressions.RegexNode:ReduceSet():System.Text.RegularExpressions.RegexNode:this
-       mov      rdi, rax
-						;; size=15 bbWeight=0.50 PerfScore 1.75
+						;; size=12 bbWeight=0.50 PerfScore 1.62
+G_M64711_IG18:
+       nop      
+						;; size=1 bbWeight=1 PerfScore 0.25
 G_M64711_IG19:
-       mov      rax, rdi
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M64711_IG20:
-       add      rsp, 8
-       pop      rbx
        pop      rbp
        ret      
-						;; size=7 bbWeight=1 PerfScore 2.25
-RWD00  	dd	G_M64711_IG16 - G_M64711_IG02
-       	dd	G_M64711_IG15 - G_M64711_IG02
+						;; size=2 bbWeight=1 PerfScore 1.50
+RWD00  	dd	G_M64711_IG15 - G_M64711_IG02
        	dd	G_M64711_IG14 - G_M64711_IG02
-       	dd	G_M64711_IG14 - G_M64711_IG02
-       	dd	G_M64711_IG08 - G_M64711_IG02
        	dd	G_M64711_IG13 - G_M64711_IG02
+       	dd	G_M64711_IG13 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
        	dd	G_M64711_IG12 - G_M64711_IG02
-       	dd	G_M64711_IG12 - G_M64711_IG02
+       	dd	G_M64711_IG11 - G_M64711_IG02
        	dd	G_M64711_IG11 - G_M64711_IG02
        	dd	G_M64711_IG10 - G_M64711_IG02
        	dd	G_M64711_IG09 - G_M64711_IG02
+       	dd	G_M64711_IG08 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG07 - G_M64711_IG02
+       	dd	G_M64711_IG17 - G_M64711_IG02
 
 
-; Total bytes of code 266, prolog size 8, PerfScore 42.88, instruction count 68, allocated bytes for code 266 (MethodHash=41750338) for method System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this (FullOpts)
+; Total bytes of code 216, prolog size 4, PerfScore 38.34, instruction count 54, allocated bytes for code 216 (MethodHash=41750338) for method System.Text.RegularExpressions.RegexNode:Reduce():System.Text.RegularExpressions.RegexNode:this (FullOpts)
 ; ============================================================
-50 (-17.99 % of base) - System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte
 ; Assembly listing for method System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
 ;  V01 arg1         [V01,T10] (  4,  3   )   byref  ->  rbx         single-def
 ;  V02 arg2         [V02,T11] (  4,  3   )   byref  ->  r15         single-def
 ;  V03 arg3         [V03,T12] (  3,  3   )   byref  ->   r8         single-def
 ;  V04 loc0         [V04,T07] (  7, 12.25)     int  ->  r13        
 ;  V05 loc1         [V05,T13] (  6,  4.25)     int  ->  r14        
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V07 tmp1         [V07    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V08 tmp2         [V08,T04] (  3, 20   )  ushort  ->  rdx         "Inlining Arg"
+;  V08 tmp2         [V08,T05] (  2, 16   )  ushort  ->  rax         "Inlining Arg"
 ;* V09 tmp3         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;  V10 tmp4         [V10,T05] (  3, 20   )  ushort  ->  rdx         "Inlining Arg"
+;  V10 tmp4         [V10,T06] (  2, 16   )  ushort  ->   r9         "Inlining Arg"
 ;* V11 tmp5         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V12 tmp6         [V12,T09] (  3,  6   )     int  ->  rdx         "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V14 tmp8         [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp9         [V15,T16] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.Text.Base64Helper+Base64CharValidatable>
 ;  V16 tmp10        [V16,T08] (  4, 10   )   byref  ->  rdi         single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-;  V17 tmp11        [V17,T06] (  5, 15   )     int  ->  rsi         single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;  V17 tmp11        [V17,T04] (  5, 15   )     int  ->  rsi         single-def "field V00._length (fldOffset=0x8)" P-INDEP
 ;* V18 tmp12        [V18    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V07._reference (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x8)" P-INDEP
 ;  V20 tmp14        [V20,T14] (  2,  2   )   byref  ->  rsi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;  V21 tmp15        [V21,T15] (  2,  2   )     int  ->  rdx         "field V13._length (fldOffset=0x8)" P-INDEP
 ;  V22 rat0         [V22,T03] (  7, 21.75)    long  ->  r13         "Widened IV V04"
 ;  V23 rat1         [V23,T00] (  8, 25.75)    long  ->  r14         "Widened IV V05"
-;  V24 rat2         [V24,T01] (  3, 22.67)     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
-;  V25 rat3         [V25,T02] (  3, 22.67)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
+;  V24 rat2         [V24,T01] (  3, 23.84)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
+;  V25 rat3         [V25,T02] (  3, 23.84)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M60008_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x30]
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdx
        mov      r15, rcx
-						;; size=22 bbWeight=1 PerfScore 8.00
+						;; size=19 bbWeight=1 PerfScore 6.00
 G_M60008_IG02:
        lea      r14d, [rsi-0x01]
        xor      r13d, r13d
        jmp      SHORT G_M60008_IG04
-       align    [1 bytes for IG03]
-						;; size=10 bbWeight=1 PerfScore 2.75
+       align    [4 bytes for IG03]
+						;; size=13 bbWeight=1 PerfScore 2.75
 G_M60008_IG03:
-       lea      edx, [r13+0x01]
-       mov      r13d, edx
+       lea      eax, [r13+0x01]
+       mov      r13d, eax
 						;; size=7 bbWeight=4 PerfScore 3.00
 G_M60008_IG04:
        cmp      r13d, esi
        jl       SHORT G_M60008_IG06
 						;; size=5 bbWeight=8 PerfScore 10.00
 G_M60008_IG05:
-       jmp      SHORT G_M60008_IG11
-       align    [0 bytes for IG10]
+       jmp      SHORT G_M60008_IG10
+       align    [0 bytes for IG09]
 						;; size=2 bbWeight=0.25 PerfScore 0.50
 G_M60008_IG06:
-       movzx    rdx, word  ptr [rdi+2*r13]
-       lea      r12d, [rdx-0x09]
-       cmp      r12d, 4
+       movzx    rax, word  ptr [rdi+2*r13]
+       add      eax, -9
+       cmp      eax, 23
        ja       SHORT G_M60008_IG08
-						;; size=15 bbWeight=4 PerfScore 15.00
+						;; size=13 bbWeight=4 PerfScore 14.00
 G_M60008_IG07:
-       mov      eax, r12d
-       lea      rcx, [reloc @RWD00]
-       mov      ecx, dword ptr [rcx+4*rax]
-       lea      rdx, G_M60008_IG02
-       add      rcx, rdx
-       jmp      rcx
-						;; size=25 bbWeight=3.33 PerfScore 20.00
+       mov      ecx, 0xD1FFAB1E
+       bt       ecx, eax
+       jb       SHORT G_M60008_IG03
+						;; size=10 bbWeight=3.92 PerfScore 6.86
 G_M60008_IG08:
-       cmp      edx, 32
-       je       SHORT G_M60008_IG03
-						;; size=5 bbWeight=2 PerfScore 2.50
-G_M60008_IG09:
-       jmp      SHORT G_M60008_IG11
+       jmp      SHORT G_M60008_IG10
 						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60008_IG10:
-       lea      edx, [r14-0x01]
-       mov      r14d, edx
+G_M60008_IG09:
+       lea      eax, [r14-0x01]
+       mov      r14d, eax
 						;; size=7 bbWeight=4 PerfScore 3.00
-G_M60008_IG11:
+G_M60008_IG10:
        cmp      r14d, r13d
-       jg       SHORT G_M60008_IG13
+       jg       SHORT G_M60008_IG12
 						;; size=5 bbWeight=8 PerfScore 10.00
-G_M60008_IG12:
-       jmp      SHORT G_M60008_IG16
+G_M60008_IG11:
+       jmp      SHORT G_M60008_IG14
 						;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M60008_IG13:
+G_M60008_IG12:
        cmp      r14d, esi
-       jae      G_M60008_IG23
-       movzx    rdx, word  ptr [rdi+2*r14]
-       lea      eax, [rdx-0x09]
-       cmp      eax, 4
-       ja       SHORT G_M60008_IG15
-						;; size=22 bbWeight=4 PerfScore 20.00
+       jae      G_M60008_IG21
+       movzx    r9, word  ptr [rdi+2*r14]
+       add      r9d, -9
+       cmp      r9d, 23
+       ja       SHORT G_M60008_IG14
+						;; size=24 bbWeight=4 PerfScore 19.00
+G_M60008_IG13:
+       mov      eax, 0xD1FFAB1E
+       bt       eax, r9d
+       jb       SHORT G_M60008_IG09
+						;; size=11 bbWeight=3.92 PerfScore 6.86
 G_M60008_IG14:
-       mov      eax, eax
-       lea      rcx, [reloc @RWD20]
-       mov      ecx, dword ptr [rcx+4*rax]
-       lea      rdx, G_M60008_IG02
-       add      rcx, rdx
-       jmp      rcx
-						;; size=24 bbWeight=3.33 PerfScore 20.00
-G_M60008_IG15:
-       cmp      edx, 32
-       je       SHORT G_M60008_IG10
-						;; size=5 bbWeight=2 PerfScore 2.50
-G_M60008_IG16:
        lea      edx, [r14+0x01]
        sub      edx, r13d
        mov      ecx, r13d
        mov      eax, edx
        add      rcx, rax
        mov      esi, esi
        cmp      rcx, rsi
-       ja       SHORT G_M60008_IG22
+       ja       SHORT G_M60008_IG20
        mov      esi, r13d
        lea      rsi, bword ptr [rdi+2*rsi]
        xor      edi, edi
        mov      rcx, r8
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.Text.Base64Helper:IsValid[ushort,System.Buffers.Text.Base64Helper+Base64CharValidatable](System.Buffers.Text.Base64Helper+Base64CharValidatable,System.ReadOnlySpan`1[ushort],byref):ubyte
        call     [rax]System.Buffers.Text.Base64Helper:IsValid[ushort,System.Buffers.Text.Base64Helper+Base64CharValidatable](System.Buffers.Text.Base64Helper+Base64CharValidatable,System.ReadOnlySpan`1[ushort],byref):ubyte
        test     eax, eax
-       jne      SHORT G_M60008_IG20
+       jne      SHORT G_M60008_IG18
 						;; size=50 bbWeight=1 PerfScore 8.75
-G_M60008_IG17:
+G_M60008_IG15:
        xor      eax, eax
        mov      dword ptr [rbx], eax
 						;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M60008_IG18:
+G_M60008_IG16:
        mov      dword ptr [r15], eax
 						;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M60008_IG19:
-       add      rsp, 8
+G_M60008_IG17:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60008_IG20:
+						;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M60008_IG18:
        mov      dword ptr [rbx], r13d
        inc      r14d
        mov      dword ptr [r15], r14d
        mov      eax, 1
 						;; size=14 bbWeight=0.50 PerfScore 1.25
-G_M60008_IG21:
-       add      rsp, 8
+G_M60008_IG19:
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60008_IG22:
+						;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M60008_IG20:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M60008_IG23:
+G_M60008_IG21:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-RWD00  	dd	G_M60008_IG03 - G_M60008_IG02
-       	dd	G_M60008_IG03 - G_M60008_IG02
-       	dd	G_M60008_IG09 - G_M60008_IG02
-       	dd	G_M60008_IG09 - G_M60008_IG02
-       	dd	G_M60008_IG03 - G_M60008_IG02
-RWD20  	dd	G_M60008_IG10 - G_M60008_IG02
-       	dd	G_M60008_IG10 - G_M60008_IG02
-       	dd	G_M60008_IG16 - G_M60008_IG02
-       	dd	G_M60008_IG16 - G_M60008_IG02
-       	dd	G_M60008_IG10 - G_M60008_IG02
 
-
-; Total bytes of code 278, prolog size 22, PerfScore 134.12, instruction count 96, allocated bytes for code 278 (MethodHash=a4951597) for method System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte (FullOpts)
+; Total bytes of code 228, prolog size 19, PerfScore 98.10, instruction count 80, allocated bytes for code 228 (MethodHash=a4951597) for method System.Security.Cryptography.PemEncoding:TryCountBase64(System.ReadOnlySpan`1[ushort],byref,byref,byref):ubyte (FullOpts)
 ; ============================================================
-32 (-19.16 % of base) - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte
 ; Assembly listing for method System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T07] (  4,  3.25)     ref  ->  rdi         class-hnd single-def <System.String>
 ;* V01 loc0         [V01,T09] (  0,  0   )     int  ->  zero-ref   
-;  V02 loc1         [V02,T00] ( 12, 28   )  ushort  ->  rdx        
+;  V02 loc1         [V02,T00] ( 11, 26   )  ushort  ->  rdx        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 cse0         [V04,T08] (  3,  2.25)     int  ->  rcx         "CSE #01: aggressive"
 ;  V05 rat0         [V05,T01] (  4, 12.25)   byref  ->  rdi         "Strength reduced derived IV"
 ;  V06 rat1         [V06,T02] (  4, 12.25)     int  ->  rcx         "Trip count IV"
 ;  V07 rat2         [V07,T05] (  2,  8   )     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
 ;  V08 rat3         [V08,T06] (  2,  8   )     int  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
-;  V09 rat4         [V09,T03] (  3, 11.60)     int  ->  rsi         "ReplaceWithLclVar is creating a new local variable"
-;  V10 rat5         [V10,T04] (  3, 11.33)     int  ->   r8         "ReplaceWithLclVar is creating a new local variable"
+;  V09 rat4         [V09,T04] (  3, 11.60)     int  ->  rsi         "ReplaceWithLclVar is creating a new local variable"
+;  V10 rat5         [V10,T03] (  3, 11.92)     int  ->  rdx         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 0
 
 G_M3909_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M3909_IG02:
        mov      ecx, dword ptr [rdi+0x08]
        test     ecx, ecx
-       jle      G_M3909_IG15
-						;; size=11 bbWeight=1 PerfScore 3.25
+       jle      SHORT G_M3909_IG14
+						;; size=7 bbWeight=1 PerfScore 3.25
 G_M3909_IG03:
        add      rdi, 12
        align    [0 bytes for IG04]
 						;; size=4 bbWeight=0.25 PerfScore 0.06
 G_M3909_IG04:
        movzx    rdx, word  ptr [rdi]
        cmp      edx, 47
        jbe      SHORT G_M3909_IG09
 						;; size=8 bbWeight=4 PerfScore 13.00
 G_M3909_IG05:
        cmp      edx, 93
        jbe      SHORT G_M3909_IG08
        cmp      edx, 123
        je       SHORT G_M3909_IG06
        cmp      edx, 125
-       jne      SHORT G_M3909_IG14
+       jne      SHORT G_M3909_IG13
 						;; size=15 bbWeight=2 PerfScore 7.50
 G_M3909_IG06:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M3909_IG07:
        pop      rbp
        ret      
 						;; size=2 bbWeight=0.50 PerfScore 0.75
 G_M3909_IG08:
        lea      eax, [rdx-0x3A]
        cmp      eax, 6
        jbe      SHORT G_M3909_IG06
        add      edx, -91
        cmp      edx, 2
-       ja       SHORT G_M3909_IG14
+       ja       SHORT G_M3909_IG13
        jmp      SHORT G_M3909_IG06
 						;; size=18 bbWeight=2 PerfScore 10.50
 G_M3909_IG09:
        cmp      edx, 32
        jbe      SHORT G_M3909_IG11
        cmp      edx, 34
        je       SHORT G_M3909_IG06
        lea      esi, [rdx-0x27]
        cmp      esi, 8
-       ja       SHORT G_M3909_IG14
+       ja       SHORT G_M3909_IG13
 						;; size=18 bbWeight=2 PerfScore 8.50
 G_M3909_IG10:
-       mov      r8d, esi
+       mov      edx, esi
        lea      rax, [reloc @RWD00]
-       mov      eax, dword ptr [rax+4*r8]
-       lea      rdx, G_M3909_IG02
-       add      rax, rdx
-       jmp      rax
-						;; size=26 bbWeight=1.80 PerfScore 10.80
-G_M3909_IG11:
-       lea      r8d, [rdx-0x09]
-       cmp      r8d, 4
-       ja       SHORT G_M3909_IG13
-						;; size=10 bbWeight=2 PerfScore 3.50
-G_M3909_IG12:
-       mov      eax, r8d
-       lea      rdx, [reloc @RWD36]
-       mov      edx, dword ptr [rdx+4*rax]
+       mov      eax, dword ptr [rax+4*rdx]
        lea      rsi, G_M3909_IG02
-       add      rdx, rsi
-       jmp      rdx
-						;; size=25 bbWeight=1.67 PerfScore 10.00
+       add      rax, rsi
+       jmp      rax
+						;; size=24 bbWeight=1.80 PerfScore 10.80
+G_M3909_IG11:
+       add      edx, -9
+       cmp      edx, 23
+       ja       SHORT G_M3909_IG13
+						;; size=8 bbWeight=2 PerfScore 3.00
+G_M3909_IG12:
+       mov      eax, 0xD1FFAB1E
+       bt       eax, edx
+       jb       SHORT G_M3909_IG06
+						;; size=10 bbWeight=1.96 PerfScore 3.43
 G_M3909_IG13:
-       cmp      edx, 32
-       je       SHORT G_M3909_IG06
-						;; size=5 bbWeight=2 PerfScore 2.50
-G_M3909_IG14:
        add      rdi, 2
        dec      ecx
-       jne      G_M3909_IG04
-						;; size=12 bbWeight=4 PerfScore 6.00
-G_M3909_IG15:
+       jne      SHORT G_M3909_IG04
+						;; size=8 bbWeight=4 PerfScore 6.00
+G_M3909_IG14:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3909_IG16:
+G_M3909_IG15:
        pop      rbp
        ret      
 						;; size=2 bbWeight=0.50 PerfScore 0.75
 RWD00  	dd	G_M3909_IG06 - G_M3909_IG02
        	dd	G_M3909_IG06 - G_M3909_IG02
        	dd	G_M3909_IG06 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
+       	dd	G_M3909_IG13 - G_M3909_IG02
+       	dd	G_M3909_IG13 - G_M3909_IG02
        	dd	G_M3909_IG06 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
-       	dd	G_M3909_IG06 - G_M3909_IG02
-RWD36  	dd	G_M3909_IG06 - G_M3909_IG02
-       	dd	G_M3909_IG06 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
-       	dd	G_M3909_IG14 - G_M3909_IG02
+       	dd	G_M3909_IG13 - G_M3909_IG02
+       	dd	G_M3909_IG13 - G_M3909_IG02
        	dd	G_M3909_IG06 - G_M3909_IG02
 
 
-; Total bytes of code 167, prolog size 4, PerfScore 78.61, instruction count 56, allocated bytes for code 167 (MethodHash=4006f0ba) for method System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
+; Total bytes of code 135, prolog size 4, PerfScore 69.04, instruction count 51, allocated bytes for code 139 (MethodHash=4006f0ba) for method System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (FullOpts)
 ; ============================================================

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

@MihuBot
Copy link
Owner Author

MihuBot commented Sep 15, 2024

@MihaZupan

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