{"Summary":"89 changed method listings; 89 examples across 13 assemblies.\n\nFound 106 files with textual diffs.\n\nSummary of Code Size diffs:\n(Lower is better)\n\nTotal bytes of base: 408871550\nTotal bytes of diff: 408869453\nTotal bytes of delta: -2097 (-0.00 % of base)\nTotal relative delta: -6.01\n    diff is an improvement.\n    relative diff is an improvement.\n\n\nTop file improvements (bytes):\n       -1580 : dnlib.dasm (-0.12 % of base)\n        -481 : ClosedXML.dasm (-0.02 % of base)\n         -36 : Microsoft.Diagnostics.Runtime.dasm (-0.01 % of base)\n\n3 total files with Code Size differences (3 improved, 0 regressed), 757 unchanged.\n\nTop method improvements (bytes):\n        -162 (-9.20 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n        -154 (-8.14 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n         -89 (-6.97 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n         -53 (-5.77 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n         -50 (-8.58 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n         -50 (-6.50 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n         -41 (-14.14 % of base) : dnlib.dasm - dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -41 (-14.91 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -41 (-3.56 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.80 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-19.42 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -38 (-7.29 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n         -37 (-7.13 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n         -36 (-35.64 % of base) : Microsoft.Diagnostics.Runtime.dasm - Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)\n         -33 (-3.14 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n         -33 (-3.37 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n         -33 (-2.62 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n         -33 (-9.82 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n         -32 (-11.81 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-11.51 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-7.19 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n         -32 (-12.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.85 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-2.93 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n         -32 (-3.75 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n         -28 (-5.35 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n         -24 (-5.83 % of base) : ClosedXML.dasm - ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -13 (-0.93 % of base) : ClosedXML.dasm - ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)\n         -10 (-1.90 % of base) : ClosedXML.dasm - ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)\n\nTop method improvements (percentages):\n         -36 (-35.64 % of base) : Microsoft.Diagnostics.Runtime.dasm - Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-20.00 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.80 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -40 (-19.61 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n         -40 (-19.42 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n         -41 (-14.91 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n         -41 (-14.14 % of base) : dnlib.dasm - dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n         -32 (-12.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.85 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n         -32 (-11.81 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -32 (-11.51 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n         -33 (-9.82 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n        -162 (-9.20 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n         -32 (-9.17 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)\n         -15 (-8.67 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)\n         -50 (-8.58 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n        -154 (-8.14 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n         -38 (-7.29 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n         -32 (-7.19 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n         -37 (-7.13 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n         -89 (-6.97 % of base) : dnlib.dasm - dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -17 (-6.85 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -50 (-6.50 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n         -28 (-6.06 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n         -15 (-5.84 % of base) : ClosedXML.dasm - ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n         -24 (-5.83 % of base) : ClosedXML.dasm - ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)\n         -53 (-5.77 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n         -28 (-5.35 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n         -32 (-3.75 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n         -41 (-3.56 % of base) : dnlib.dasm - dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n         -33 (-3.37 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n         -33 (-3.14 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n         -32 (-2.93 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n         -33 (-2.62 % of base) : dnlib.dasm - dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n         -10 (-1.90 % of base) : ClosedXML.dasm - ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)\n         -13 (-0.93 % of base) : ClosedXML.dasm - ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)\n\n67 total methods with Code Size differences (67 improved, 0 regressed), 2193601 unchanged.\n\n--------------------------------------------------------------------------------","Notes":["1 new method listings are excluded. Use -includeNewMethodRegressions to include them.","1 removed method listings are excluded. Use -includeRemovedMethodImprovements to include them.","Large methods use reduced context, and exceptionally large diffs omit their middle. Each affected example is marked. Use -uploadDasm for the complete JIT disassembly artifacts."],"Entries":[{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)","Category":"improvement","Description":"412 -\u003E 388 bytes (-24)","ExtraInfo":null,"Diff":"@@ -1,175 \u002B1,174 @@\n ; Assembly listing for method ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.FormulaSlice\u003E\n-;  V01 arg1         [V01,T09] (  3,  3   )  struct (16) [rbp-0x30]  do-not-enreg[SFA] multireg-arg single-def \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V02 loc0         [V02,T03] (  8, 17.50)     ref  -\u003E  [rbp-0x38]  class-hnd exact EH-live single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V00 this         [V00,T09] (  3,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.FormulaSlice\u003E\n\u002B;  V01 arg1         [V01,T10] (  3,  3   )  struct (16) [rbp-0x30]  do-not-enreg[SFA] multireg-arg single-def \u003CClosedXML.Excel.XLSheetRange\u003E\n\u002B;  V02 loc0         [V02,T05] (  8, 17.50)     ref  -\u003E  [rbp-0x38]  class-hnd exact EH-live single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V04 tmp1         [V04,T04] (  8, 16   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V04 tmp1         [V04,T06] (  8, 16   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V06 tmp3         [V06,T10] (  2,  4   )     ref  -\u003E  rbx         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V06 tmp3         [V06,T11] (  2,  4   )     ref  -\u003E  rbx         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]]\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V09 tmp6         [V09,T11] (  2,  4   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n-;  V10 tmp7         [V10,T12] (  2,  4   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T13] (  2,  4   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V12 tmp9         [V12,T20] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n-;  V13 tmp10        [V13,T00] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V14 tmp11        [V14,T05] (  2, 16   )     ref  -\u003E  rdi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLCellFormula\u003E\n-;  V15 tmp12        [V15,T16] (  2,  2   )     ref  -\u003E  rsi         single-def \u0022field V05._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V09 tmp6         [V09,T12] (  2,  4   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n\u002B;  V10 tmp7         [V10,T13] (  2,  4   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp8         [V11,T14] (  2,  4   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V12 tmp9         [V12,T21] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V14 tmp11        [V14,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V15 tmp12        [V15,T17] (  2,  2   )     ref  -\u003E  rsi         single-def \u0022field V05._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V17 tmp14        [V17    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05._idx (fldOffset=0xc)\u0022 P-INDEP\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp16        [V19    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V07._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V20 tmp17        [V20,T17] (  2,  2   )     int  -\u003E  r15         single-def \u0022field V07._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V21 tmp18        [V21,T18] (  2,  2   )     int  -\u003E  r15         single-def \u0022V01.[000..004)\u0022\n-;  V22 tmp19        [V22,T19] (  2,  2   )     int  -\u003E  r14         single-def \u0022V01.[008..012)\u0022\n-;  V23 tmp20        [V23,T01] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V24 tmp21        [V24,T02] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V25 tmp22        [V25,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V26 cse0         [V26,T07] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #01: aggressive\u0022\n-;  V27 rat0         [V27,T14] (  3,  3   )    long  -\u003E  r15         \u0022V01.rsi\u0022\n-;  V28 rat1         [V28,T15] (  3,  3   )    long  -\u003E  r14         \u0022V01.rdx\u0022\n\u002B;  V20 tmp17        [V20,T18] (  2,  2   )     int  -\u003E  r15         single-def \u0022field V07._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V21 tmp18        [V21,T19] (  2,  2   )     int  -\u003E  r15         single-def \u0022V01.[000..004)\u0022\n\u002B;  V22 tmp19        [V22,T20] (  2,  2   )     int  -\u003E  r14         single-def \u0022V01.[008..012)\u0022\n\u002B;  V23 tmp20        [V23,T01] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V24 tmp21        [V24,T03] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V25 tmp22        [V25,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V26 tmp23        [V26,T04] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V27 cse0         [V27,T08] (  3, 12   )     int  -\u003E  rax         \u0022CSE #01: moderate\u0022\n\u002B;  V28 rat0         [V28,T15] (  3,  3   )    long  -\u003E  r15         \u0022V01.rsi\u0022\n\u002B;  V29 rat1         [V29,T16] (  3,  3   )    long  -\u003E  r14         \u0022V01.rdx\u0022\n ;\n ; Lcl frame size = 32\n \n G_M50880_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 32\n        lea      rbp, [rsp\u002B0x40]\n        mov      qword ptr [rbp-0x30], rsi\n        mov      qword ptr [rbp-0x28], rdx\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14, rdx\n \t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 8.50\n G_M50880_IG02:\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        mov      rbx, gword ptr [rbx\u002B0x18]\n        vmovups  xmm0, xmmword ptr [rbp-0x30]\n        vmovups  xmmword ptr [r13\u002B0x10], xmm0\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M50880_IG11\n \t\t\t\t\t\t;; size=52 bbWeight=1 PerfScore 8.75\n G_M50880_IG03:\n        mov      rdi, 0xD1FFAB1E      ; data for ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]:Dummy\n        mov      rsi, gword ptr [rdi]\n        lea      rdi, bword ptr [r13\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r13\u002B0x28], rdi\n        mov      rsi, gword ptr [rbx\u002B0x10]\n        dec      r15d\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [r13\u002B0x30]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [r13\u002B0x38], r14d\n        mov      dword ptr [r13\u002B0x3C], r15d\n        mov      gword ptr [rbp-0x38], r13\n \t\t\t\t\t\t;; size=70 bbWeight=1 PerfScore 12.25\n G_M50880_IG04:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        test     eax, eax\n-       je       G_M50880_IG08\n-\t\t\t\t\t\t;; size=24 bbWeight=8 PerfScore 44.00\n\u002B       je       SHORT G_M50880_IG08\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=8 PerfScore 44.00\n G_M50880_IG05:\n-       mov      r13, gword ptr [rbp-0x38]\n-       cmp      byte  ptr [r13\u002B0x0C], 0\n\u002B       mov      rdi, gword ptr [rbp-0x38]\n\u002B       cmp      byte  ptr [rdi\u002B0x0C], 0\n        jne      SHORT G_M50880_IG06\n-       lea      rdi, bword ptr [r13\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rdi\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M50880_IG07\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.XLCellFormula\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rdi, gword ptr [rax]\n-       mov      byte  ptr [rdi\u002B0x11], 1\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M50880_IG07\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n\u002B       mov      byte  ptr [rax\u002B0x11], 1\n        jmp      SHORT G_M50880_IG04\n-\t\t\t\t\t\t;; size=80 bbWeight=4 PerfScore 103.00\n\u002B\t\t\t\t\t\t;; size=62 bbWeight=4 PerfScore 100.00\n G_M50880_IG06:\n        mov      rdi, 0xD1FFAB1E      ; System.ObjectDisposedException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Enumerator\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ObjectDisposedException:.ctor(System.String):this\n        call     [rax]System.ObjectDisposedException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M50880_IG07:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n G_M50880_IG08:\n-       mov      r13, gword ptr [rbp-0x38]\n-       lea      rax, bword ptr [r13\u002B0x08]\n\u002B       mov      rdi, gword ptr [rbp-0x38]\n\u002B       lea      rax, bword ptr [rdi\u002B0x08]\n        mov      ecx, 1\n        xchg     dword ptr [rax], ecx\n        test     ecx, ecx\n        jne      SHORT G_M50880_IG10\n \t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 29.00\n G_M50880_IG09:\n-       mov      byte  ptr [r13\u002B0x0C], 1\n-\t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.50\n\u002B       mov      byte  ptr [rdi\u002B0x0C], 1\n\u002B\t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M50880_IG10:\n        add      rsp, 32\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 3.75\n G_M50880_IG11:\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M50880_IG03\n \t\t\t\t\t\t;; size=27 bbWeight=0 PerfScore 0.00\n G_M50880_IG12:\n        push     rax\n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n G_M50880_IG13:\n-       mov      r13, gword ptr [rbp-0x38]\n-       lea      rax, bword ptr [r13\u002B0x08]\n\u002B       mov      rdi, gword ptr [rbp-0x38]\n\u002B       lea      rax, bword ptr [rdi\u002B0x08]\n        mov      ecx, 1\n        xchg     dword ptr [rax], ecx\n        test     ecx, ecx\n        jne      SHORT G_M50880_IG14\n-       mov      byte  ptr [r13\u002B0x0C], 1\n-\t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n\u002B       mov      byte  ptr [rdi\u002B0x0C], 1\n\u002B\t\t\t\t\t\t;; size=23 bbWeight=0 PerfScore 0.00\n G_M50880_IG14:\n        add      rsp, 8\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 412, prolog size 34, PerfScore 209.75, instruction count 102, allocated bytes for code 412 (MethodHash=0a13393f) for method ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)\n\u002B; Total bytes of code 388, prolog size 34, PerfScore 206.75, instruction count 100, allocated bytes for code 388 (MethodHash=0a13393f) for method ClosedXML.Excel.FormulaSlice:MarkDirty(ClosedXML.Excel.XLSheetRange):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":412,"DiffBytes":388},{"Assembly":"Elastic.Apm.dasm","Method":"Elastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)","Category":"same-size","Description":"335 -\u003E 335 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,175 \u002B1,175 @@\n ; Assembly listing for method Elastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T07] (  4,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CElastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable\u003E\n ;  V01 arg1         [V01,T03] (  7,  9   )     ref  -\u003E  rbx         class-hnd single-def \u003Cchar[]\u003E\n ;  V02 arg2         [V02,T04] (  7,  6   )     int  -\u003E  r15         single-def\n ;  V03 arg3         [V03,T05] (  6,  6   )     int  -\u003E  r14         single-def\n ;  V04 loc0         [V04,T00] ( 21, 23   )     int  -\u003E  r13        \n ;  V05 loc1         [V05,T06] (  6,  6   )     int  -\u003E  rdx         single-def\n ;* V06 loc2         [V06    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V07 loc3         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u003CElastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable\u002BEntry[]\u003E\n ;  V08 loc4         [V08,T02] ( 11, 17.04)     int  -\u003E  rcx        \n ;  V09 loc5         [V09,T01] (  8, 19.50)     ref  -\u003E  r12         class-hnd \u003CElastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable\u002BEntry\u003E\n ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V11 tmp1         [V11,T08] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n ;  V12 tmp2         [V12,T09] (  3,  3   )     int  -\u003E  rdx         \u0022index expr\u0022\n ;  V13 cse0         [V13,T10] (  4,  1.54)     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M16970_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x30]\n        mov      rbx, rsi\n        mov      r15d, edx\n        mov      r14d, ecx\n \t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 8.25\n G_M16970_IG02:\n        test     r14d, r14d\n        je       G_M16970_IG14\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M16970_IG03:\n-       lea      r13d, [r14\u002B0x000CAB2B]\n\u002B       lea      r13d, [r14\u002B0x000CA985]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      r15d, esi\n        jae      G_M16970_IG16\n        mov      edx, r15d\n        movzx    rdx, word  ptr [rbx\u002B2*rdx\u002B0x10]\n        mov      ecx, r13d\n        shl      ecx, 7\n        xor      edx, ecx\n        add      r13d, edx\n        lea      edx, [r15\u002Br14]\n        lea      ecx, [r15\u002B0x01]\n        cmp      ecx, edx\n        jge      SHORT G_M16970_IG05\n        test     edx, edx\n        jl       G_M16970_IG10\n        cmp      esi, edx\n        jl       G_M16970_IG10\n        align    [0 bytes for IG04]\n \t\t\t\t\t\t;; size=66 bbWeight=0.50 PerfScore 6.00\n G_M16970_IG04:\n        mov      esi, ecx\n        movzx    rsi, word  ptr [rbx\u002B2*rsi\u002B0x10]\n        mov      eax, r13d\n        shl      eax, 7\n        xor      esi, eax\n        add      r13d, esi\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M16970_IG04\n \t\t\t\t\t\t;; size=24 bbWeight=3.96 PerfScore 19.80\n G_M16970_IG05:\n        mov      esi, r13d\n        sar      esi, 17\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 11\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 5\n        sub      r13d, esi\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        mov      edx, r13d\n        and      edx, dword ptr [rdi\u002B0x14]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n        jae      G_M16970_IG16\n        mov      edi, edx\n        mov      r12, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        test     r12, r12\n        je       SHORT G_M16970_IG12\n \t\t\t\t\t\t;; size=58 bbWeight=0.50 PerfScore 6.88\n G_M16970_IG06:\n        cmp      dword ptr [r12\u002B0x18], r13d\n        jne      SHORT G_M16970_IG11\n \t\t\t\t\t\t;; size=7 bbWeight=4 PerfScore 12.00\n G_M16970_IG07:\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rsi, rbx\n        mov      edx, r15d\n        mov      ecx, r14d\n        mov      rax, 0xD1FFAB1E      ; code for Elastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        call     [rax]Elastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        test     eax, eax\n        je       SHORT G_M16970_IG11\n \t\t\t\t\t\t;; size=30 bbWeight=2 PerfScore 14.50\n G_M16970_IG08:\n        mov      rax, gword ptr [r12\u002B0x08]\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M16970_IG09:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M16970_IG10:\n        cmp      ecx, esi\n        jae      SHORT G_M16970_IG16\n        mov      eax, ecx\n        movzx    rax, word  ptr [rbx\u002B2*rax\u002B0x10]\n        mov      r8d, r13d\n        shl      r8d, 7\n        xor      eax, r8d\n        add      eax, r13d\n        mov      r13d, eax\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M16970_IG10\n        jmp      G_M16970_IG05\n \t\t\t\t\t\t;; size=38 bbWeight=0.04 PerfScore 0.34\n G_M16970_IG11:\n        mov      r12, gword ptr [r12\u002B0x10]\n        test     r12, r12\n        jne      SHORT G_M16970_IG06\n \t\t\t\t\t\t;; size=10 bbWeight=4 PerfScore 13.00\n G_M16970_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M16970_IG13:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M16970_IG14:\n        mov      rax, 0xD1FFAB1E      ; \u0027\u0027\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M16970_IG15:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M16970_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n ; Total bytes of code 335, prolog size 25, PerfScore 89.64, instruction count 114, allocated bytes for code 335 (MethodHash=39aabdb5) for method Elastic.Apm.Libraries.Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":335,"DiffBytes":335},{"Assembly":"Microsoft.Diagnostics.Runtime.dasm","Method":"Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)","Category":"improvement","Description":"101 -\u003E 65 bytes (-36)","ExtraInfo":null,"Diff":"@@ -1,69 \u002B1,62 @@\n ; Assembly listing for method Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T01] (  5, 11   )     ref  -\u003E  rbx         this class-hnd single-def \u003CMicrosoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry\u003E\n-;  V01 loc0         [V01,T03] (  4,  6   )    long  -\u003E  r15        \n-;* V02 loc1         [V02,T04] (  0,  0   )     int  -\u003E  zero-ref   \n-;  V03 loc2         [V03,T02] (  3, 10   )     ref  -\u003E  rcx         class-hnd \u003CMicrosoft.Diagnostics.Runtime.Windows.CachePage\u00601[byte[]]\u003E\n\u002B;  V00 this         [V00,T02] (  5, 11   )     ref  -\u003E  rdi         this class-hnd single-def \u003CMicrosoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry\u003E\n\u002B;  V01 loc0         [V01,T04] (  4,  6   )    long  -\u003E  rax        \n\u002B;* V02 loc1         [V02,T05] (  0,  0   )     int  -\u003E  zero-ref   \n\u002B;  V03 loc2         [V03,T03] (  3, 10   )     ref  -\u003E  rsi         class-hnd \u003CMicrosoft.Diagnostics.Runtime.Windows.CachePage\u00601[byte[]]\u003E\n ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V05 rat0         [V05,T00] (  5, 17   )    long  -\u003E  r14         \u0022Widened IV V02\u0022\n\u002B;  V05 tmp1         [V05,T00] (  3, 24   )     ref  -\u003E  rdx         \u0022arr expr\u0022\n\u002B;  V06 rat0         [V06,T01] (  6, 21   )    long  -\u003E  rcx         \u0022Widened IV V02\u0022\n ;\n-; Lcl frame size = 8\n\u002B; Lcl frame size = 0\n \n G_M17557_IG01:\n        push     rbp\n-       push     r15\n-       push     r14\n-       push     rbx\n-       push     rax\n-       lea      rbp, [rsp\u002B0x20]\n-       mov      rbx, rdi\n-\t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n\u002B       mov      rbp, rsp\n\u002B\t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.25\n G_M17557_IG02:\n-       xor      r15d, r15d\n-       xor      r14d, r14d\n-       mov      rdi, gword ptr [rbx\u002B0x08]\n-       cmp      dword ptr [rdi\u002B0x08], 0\n\u002B       xor      eax, eax\n\u002B       xor      ecx, ecx\n\u002B       mov      rdx, gword ptr [rdi\u002B0x08]\n\u002B       cmp      dword ptr [rdx\u002B0x08], 0\n        je       SHORT G_M17557_IG06\n-\t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 5.50\n\u002B       align    [0 bytes for IG03]\n\u002B\t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.50\n G_M17557_IG03:\n-       mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      rsi, r14\n-       mov      rdx, 0xD1FFAB1E      ; Microsoft.Diagnostics.Runtime.Windows.CachePage\u00601[byte[]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       xor      rcx, rcx\n-       xchg     gword ptr [rax], rcx\n-       test     rcx, rcx\n\u002B       mov      rdx, gword ptr [rdi\u002B0x08]\n\u002B       cmp      ecx, dword ptr [rdx\u002B0x08]\n\u002B       jae      SHORT G_M17557_IG07\n\u002B       lea      rdx, bword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       xor      rsi, rsi\n\u002B       xchg     gword ptr [rdx], rsi\n\u002B       test     rsi, rsi\n        je       SHORT G_M17557_IG05\n-\t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 133.00\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 134.00\n G_M17557_IG04:\n-       add      r15, qword ptr [rcx\u002B0x10]\n\u002B       add      rax, qword ptr [rsi\u002B0x10]\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.00\n G_M17557_IG05:\n-       inc      r14d\n-       mov      rax, gword ptr [rbx\u002B0x08]\n-       cmp      dword ptr [rax\u002B0x08], r14d\n\u002B       inc      ecx\n\u002B       mov      rdx, gword ptr [rdi\u002B0x08]\n\u002B       cmp      dword ptr [rdx\u002B0x08], ecx\n        jg       SHORT G_M17557_IG03\n-\t\t\t\t\t\t;; size=13 bbWeight=4 PerfScore 21.00\n\u002B\t\t\t\t\t\t;; size=11 bbWeight=4 PerfScore 21.00\n G_M17557_IG06:\n-       mov      rax, r15\n-\t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.25\n-G_M17557_IG07:\n-       add      rsp, 8\n-       pop      rbx\n-       pop      r14\n-       pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 1.50\n\u002BG_M17557_IG07:\n\u002B       call     CORINFO_HELP_RNGCHKFAIL\n\u002B       int3     \n\u002B\t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 101, prolog size 15, PerfScore 172.75, instruction count 33, allocated bytes for code 101 (MethodHash=8437bb6a) for method Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)\n\u002B; Total bytes of code 65, prolog size 4, PerfScore 167.25, instruction count 25, allocated bytes for code 65 (MethodHash=8437bb6a) for method Microsoft.Diagnostics.Runtime.Windows.ArrayPoolBasedCacheEntry:TryRemoveAllPagesFromCache():ulong:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":101,"DiffBytes":65},{"Assembly":"Newtonsoft.Json.dasm","Method":"Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)","Category":"same-size","Description":"333 -\u003E 333 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,173 \u002B1,173 @@\n ; Assembly listing for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T07] (  4,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CNewtonsoft.Json.DefaultJsonNameTable\u003E\n ;  V01 arg1         [V01,T03] (  7,  9   )     ref  -\u003E  rbx         class-hnd single-def \u003Cchar[]\u003E\n ;  V02 arg2         [V02,T04] (  7,  6   )     int  -\u003E  r15         single-def\n ;  V03 arg3         [V03,T05] (  6,  6   )     int  -\u003E  r14         single-def\n ;  V04 loc0         [V04,T00] ( 21, 23   )     int  -\u003E  r13        \n ;  V05 loc1         [V05,T06] (  6,  6   )     int  -\u003E  rdx         single-def\n ;* V06 loc2         [V06    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;  V07 loc3         [V07,T10] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V08 loc4         [V08,T02] ( 11, 17.04)     int  -\u003E  rcx        \n ;  V09 loc5         [V09,T01] (  8, 19.50)     ref  -\u003E  r12         class-hnd \u003CNewtonsoft.Json.DefaultJsonNameTable\u002BEntry\u003E\n ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V11 tmp1         [V11,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n ;  V12 cse0         [V12,T09] (  4,  1.54)     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M29284_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x30]\n        mov      rbx, rsi\n        mov      r15d, edx\n        mov      r14d, ecx\n \t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 8.25\n G_M29284_IG02:\n        test     r14d, r14d\n        je       G_M29284_IG14\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M29284_IG03:\n-       lea      r13d, [r14\u002B0x000D3A82]\n\u002B       lea      r13d, [r14\u002B0x000D3AF7]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      r15d, esi\n        jae      G_M29284_IG16\n        mov      edx, r15d\n        movzx    rdx, word  ptr [rbx\u002B2*rdx\u002B0x10]\n        mov      ecx, r13d\n        shl      ecx, 7\n        xor      edx, ecx\n        add      r13d, edx\n        lea      edx, [r15\u002Br14]\n        lea      ecx, [r15\u002B0x01]\n        cmp      ecx, edx\n        jge      SHORT G_M29284_IG05\n        test     edx, edx\n        jl       G_M29284_IG10\n        cmp      esi, edx\n        jl       G_M29284_IG10\n        align    [0 bytes for IG04]\n \t\t\t\t\t\t;; size=66 bbWeight=0.50 PerfScore 6.00\n G_M29284_IG04:\n        mov      esi, ecx\n        movzx    rsi, word  ptr [rbx\u002B2*rsi\u002B0x10]\n        mov      eax, r13d\n        shl      eax, 7\n        xor      esi, eax\n        add      r13d, esi\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M29284_IG04\n \t\t\t\t\t\t;; size=24 bbWeight=3.96 PerfScore 19.80\n G_M29284_IG05:\n        mov      esi, r13d\n        sar      esi, 17\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 11\n        sub      r13d, esi\n        mov      esi, r13d\n        sar      esi, 5\n        sub      r13d, esi\n        mov      esi, r13d\n        and      esi, dword ptr [rdi\u002B0x14]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      esi, dword ptr [rdi\u002B0x08]\n        jae      G_M29284_IG16\n        mov      r12, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        test     r12, r12\n        je       SHORT G_M29284_IG12\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 6.75\n G_M29284_IG06:\n        cmp      dword ptr [r12\u002B0x18], r13d\n        jne      SHORT G_M29284_IG11\n \t\t\t\t\t\t;; size=7 bbWeight=4 PerfScore 12.00\n G_M29284_IG07:\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rsi, rbx\n        mov      edx, r15d\n        mov      ecx, r14d\n        mov      rax, 0xD1FFAB1E      ; code for Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        call     [rax]Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,char[],int,int):bool\n        test     eax, eax\n        je       SHORT G_M29284_IG11\n \t\t\t\t\t\t;; size=30 bbWeight=2 PerfScore 14.50\n G_M29284_IG08:\n        mov      rax, gword ptr [r12\u002B0x08]\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M29284_IG09:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG10:\n        cmp      ecx, esi\n        jae      SHORT G_M29284_IG16\n        mov      eax, ecx\n        movzx    rax, word  ptr [rbx\u002B2*rax\u002B0x10]\n        mov      r8d, r13d\n        shl      r8d, 7\n        xor      eax, r8d\n        add      eax, r13d\n        mov      r13d, eax\n        inc      ecx\n        cmp      ecx, edx\n        jl       SHORT G_M29284_IG10\n        jmp      G_M29284_IG05\n \t\t\t\t\t\t;; size=38 bbWeight=0.04 PerfScore 0.34\n G_M29284_IG11:\n        mov      r12, gword ptr [r12\u002B0x10]\n        test     r12, r12\n        jne      SHORT G_M29284_IG06\n \t\t\t\t\t\t;; size=10 bbWeight=4 PerfScore 13.00\n G_M29284_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M29284_IG13:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG14:\n        mov      rax, 0xD1FFAB1E      ; \u0027\u0027\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M29284_IG15:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M29284_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n ; Total bytes of code 333, prolog size 25, PerfScore 89.52, instruction count 113, allocated bytes for code 333 (MethodHash=987c8d9b) for method Newtonsoft.Json.DefaultJsonNameTable:Get(char[],int,int):System.String:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":333,"DiffBytes":333},{"Assembly":"SharpCompress.dasm","Method":"SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,SharpCompress.Compressors.ZStandard.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)","Category":"same-size","Description":"1,649 -\u003E 1,649 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,614 \u002B1,614 @@\n ; Assembly listing for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,SharpCompress.Compressors.ZStandard.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 40 single block inlinees; 21 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T01] ( 18, 11   )    long  -\u003E  rbx         single-def\n ;  V01 arg1         [V01,T04] (  5,  3.50)    long  -\u003E  r14         single-def\n ;  V02 arg2         [V02    ] ( 19, 11   )  struct (224) [rbp\u002B0x10]  do-not-enreg[XSF] addr-exposed ld-addr-op single-def \u003CSharpCompress.Compressors.ZStandard.Unsafe.ZSTD_CCtx_params_s\u003E\n ;  V03 arg3         [V03,T05] (  4,  3   )    long  -\u003E  r13         single-def\n ;  V04 arg4         [V04,T02] (  7,  4.50)    long  -\u003E  r15         single-def\n ;  V05 arg5         [V05,T06] (  4,  3   )    long  -\u003E  r12         single-def\n ;  V06 arg6         [V06,T07] (  3,  2.50)     int  -\u003E  [rbp-0x2C]  single-def\n ;* V07 loc0         [V07    ] (  0,  0   )  struct (24) zero-ref    \u003CSharpCompress.Compressors.ZStandard.Unsafe.ZSTD_customMem\u003E\n ;  V08 loc1         [V08,T26] (  3,  1.50)     int  -\u003E  [rbp-0x30]  spill-single-def\n ;  V09 loc2         [V09,T20] (  4,  2   )    long  -\u003E  [rbp-0x38]  spill-single-def\n ;  V10 loc3         [V10,T27] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def\n ;  V11 loc4         [V11,T40] (  2,  1   )     int  -\u003E  [rbp-0x40]  spill-single-def\n ;  V12 loc5         [V12,T21] (  4,  2   )    long  -\u003E  [rbp-0x48]  spill-single-def\n ;  V13 loc6         [V13,T28] (  3,  1.50)    long  -\u003E  [rbp-0x50]  spill-single-def\n ;# V14 OutArgs      [V14    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V15 tmp1         [V15,T24] (  2,  2   )    long  -\u003E  [rbp-0x58]  spill-single-def \u0022impAppendStmt\u0022\n ;  V16 tmp2         [V16,T25] (  2,  2   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022impAppendStmt\u0022\n ;* V17 tmp3         [V17    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;  V18 tmp4         [V18,T41] (  2,  1   )    long  -\u003E  rdi         single-def\n ;  V19 tmp5         [V19,T29] (  3,  1.50)     int  -\u003E  rax        \n ;* V20 tmp6         [V20    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V21 tmp7         [V21    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V22 tmp8         [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V23 tmp9         [V23,T46] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;* V24 tmp10        [V24    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V25 tmp11        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V26 tmp12        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V27 tmp13        [V27,T47] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V28 tmp14        [V28,T42] (  2,  1   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022Inline return value spill temp\u0022\n ;* V29 tmp15        [V29    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CSharpCompress.Compressors.ZStandard.Unsafe.ldmParams_t\u003E\n ;* V30 tmp16        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V31 tmp17        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V32 tmp18        [V32,T12] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V33 tmp19        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline stloc first use temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V34 tmp20        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V35 tmp21        [V35    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V36 tmp22        [V36    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V37 tmp23        [V37    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V38 tmp24        [V38    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V39 tmp25        [V39    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V40 tmp26        [V40,T13] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V41 tmp27        [V41    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline stloc first use temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V42 tmp28        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V43 tmp29        [V43    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V44 tmp30        [V44    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V45 tmp31        [V45    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V46 tmp32        [V46    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V47 tmp33        [V47,T14] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V48 tmp34        [V48    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003CSharpCompress.Compressors.ZStandard.Unsafe.ZSTD_window_t\u003E\n ;* V49 tmp35        [V49    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V50 tmp36        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V51 tmp37        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V52 tmp38        [V52    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V53 tmp39        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V54 tmp40        [V54    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V55 tmp41        [V55    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V56 tmp42        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V57 tmp43        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V58 tmp44        [V58,T09] (  4,  4   )    long  -\u003E  rsi         \u0022Inlining Arg\u0022\n ;* V59 tmp45        [V59    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;  V60 tmp46        [V60,T30] (  3,  1.50)    long  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V61 tmp47        [V61    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;  V62 tmp48        [V62,T10] (  4,  4   )    long  -\u003E  rsi         \u0022Inlining Arg\u0022\n ;* V63 tmp49        [V63    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;  V64 tmp50        [V64,T31] (  3,  1.50)    long  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V65 tmp51        [V65    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V66 tmp52        [V66    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V67 tmp53        [V67    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V68 tmp54        [V68    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V69 tmp55        [V69    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V70 tmp56        [V70    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V71 tmp57        [V71    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V72 tmp58        [V72    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V73 tmp59        [V73    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V74 tmp60        [V74    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V75 tmp61        [V75,T00] ( 19, 19   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V76 tmp62        [V76,T15] (  5,  2.50)    long  -\u003E  rsi         single-def \u0022Inline stloc first use temp\u0022\n ;  V77 tmp63        [V77,T22] (  4,  2   )    long  -\u003E  r12         single-def \u0022Inline stloc first use temp\u0022\n ;  V78 tmp64        [V78,T43] (  2,  1   )     int  -\u003E  rsi        \n ;* V79 tmp65        [V79    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V80 tmp66        [V80    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V81 tmp67        [V81    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V82 tmp68        [V82    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V83 tmp69        [V83,T48] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;* V84 tmp70        [V84    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V85 tmp71        [V85    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V86 tmp72        [V86    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V87 tmp73        [V87,T49] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;* V88 tmp74        [V88    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V89 tmp75        [V89    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V90 tmp76        [V90    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V91 tmp77        [V91,T50] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;* V92 tmp78        [V92    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V93 tmp79        [V93    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V94 tmp80        [V94    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V95 tmp81        [V95,T51] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V96 tmp82        [V96,T11] (  3,  4   )     int  -\u003E  rax         \u0022Single return block return value\u0022\n ;  V97 FramesRoot   [V97,T03] ( 10,  6   )    long  -\u003E  [rbp-0x70]  spill-single-def \u0022Pinvoke FrameListRoot\u0022\n ;  V98 PInvokeFrame [V98    ] ( 12,  8   )  struct (56) [rbp-0xA8]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;  V99 tmp85        [V99,T16] (  5,  2.50)    long  -\u003E  [rbp-0xB0]  spill-single-def \u0022field V07.customAlloc (fldOffset=0x0)\u0022 P-INDEP\n ;  V100 tmp86       [V100,T17] (  5,  2.50)    long  -\u003E  [rbp-0xB8]  spill-single-def \u0022field V07.customFree (fldOffset=0x8)\u0022 P-INDEP\n ;  V101 tmp87       [V101,T18] (  5,  2.50)    long  -\u003E  [rbp-0xC0]  spill-single-def \u0022field V07.opaque (fldOffset=0x10)\u0022 P-INDEP\n ;* V102 tmp88       [V102    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V33._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V103 tmp89       [V103    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V34._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V104 tmp90       [V104    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V41._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V105 tmp91       [V105    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V42._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V106 tmp92       [V106    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V49._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V107 tmp93       [V107    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V49._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V108 tmp94       [V108    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V50._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V109 tmp95       [V109    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V50._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V110 tmp96       [V110    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V51._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V111 tmp97       [V111    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V51._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V112 tmp98       [V112    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V52._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V113 tmp99       [V113    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V52._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V114 tmp100      [V114    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V53._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V115 tmp101      [V115    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V53._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V116 tmp102      [V116    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V54._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V117 tmp103      [V117    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V54._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V118 tmp104      [V118    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V55._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V119 tmp105      [V119    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V55._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V120 tmp106      [V120    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V56._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V121 tmp107      [V121    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V56._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V122 tmp108      [V122    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V57._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V123 tmp109      [V123    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V57._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V124 tmp110      [V124,T45] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V29.[000..004)\u0022\n ;  V125 tmp111      [V125,T44] (  2,  1   )     int  -\u003E  rdi         single-def \u0022V29.[012..016)\u0022\n ;* V126 tmp112      [V126    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V48.[000..008)\u0022\n ;* V127 tmp113      [V127    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V48.[008..016)\u0022\n ;* V128 tmp114      [V128    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V48.[016..024)\u0022\n ;* V129 tmp115      [V129    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V48.[024..028)\u0022\n ;* V130 tmp116      [V130    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V48.[028..032)\u0022\n ;* V131 tmp117      [V131    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V48.[032..036)\u0022\n ;* V132 tmp118      [V132    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V133 tmp119      [V133    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V134 tmp120      [V134    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;  V135 cse0        [V135,T32] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #16: moderate\u0022\n ;  V136 cse1        [V136,T23] (  4,  2   )    long  -\u003E  rcx         \u0022CSE #14: moderate\u0022\n ;  V137 cse2        [V137,T33] (  3,  1.50)     int  -\u003E  rsi         \u0022CSE #15: moderate\u0022\n ;  V138 cse3        [V138,T34] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #05: moderate\u0022\n ;  V139 cse4        [V139,T35] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #07: moderate\u0022\n ;  V140 cse5        [V140,T36] (  3,  1.50)    long  -\u003E  rdi         \u0022CSE #08: moderate\u0022\n ;  V141 cse6        [V141,T37] (  3,  1.50)    long  -\u003E  [rbp-0xC8]  spill-single-def \u0022CSE #09: moderate\u0022\n ;  V142 cse7        [V142,T38] (  3,  1.50)    long  -\u003E  rcx         \u0022CSE #11: moderate\u0022\n ;  V143 cse8        [V143,T39] (  3,  1.50)     int  -\u003E  rcx         \u0022CSE #12: moderate\u0022\n ;  V144 cse9        [V144,T08] (  8,  4   )    long  -\u003E  r14         \u0022CSE #06: moderate\u0022\n ;  V145 cse10       [V145,T19] (  5,  2.50)    long  -\u003E  r12         \u0022CSE #13: moderate\u0022\n ;\n ; Lcl frame size = 168\n \n G_M13510_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 168\n        lea      rbp, [rsp\u002B0xD0]\n        mov      dword ptr [rbp-0x2C], r9d\n        mov      rbx, rdi\n        mov      r14, rsi\n        mov      r13, rdx\n        mov      r15, rcx\n        mov      r12, r8\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 9.00\n G_M13510_IG02:\n        lea      rdi, [rbp-0xA8]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      qword ptr [rbp-0x70], rax\n        mov      rdi, rsp\n        mov      qword ptr [rbp-0x90], rdi\n        mov      rdi, rbp\n        mov      qword ptr [rbp-0x80], rdi\n        cmp      dword ptr [rbp\u002B0x70], 1\n        je       G_M13510_IG36\n \t\t\t\t\t\t;; size=43 bbWeight=1 PerfScore 7.00\n G_M13510_IG03:\n        vxorps   xmm0, xmm0, xmm0\n        vmovdqu  xmmword ptr [rbp\u002B0x70], xmm0\n        vmovdqu  xmmword ptr [rbp\u002B0x78], xmm0\n \t\t\t\t\t\t;; size=14 bbWeight=0.50 PerfScore 1.17\n G_M13510_IG04:\n        cmp      byte  ptr [rbx], bl\n        xor      edi, edi\n        mov      dword ptr [rbx\u002B0x0988], edi\n        cmp      dword ptr [rbp\u002B0x34], 0\n        je       SHORT G_M13510_IG06\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 5.25\n G_M13510_IG05:\n        lea      rdi, [rbx\u002B0x0930]\n        xor      esi, esi\n        mov      rcx, 0xD1FFAB1E      ; code for SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_XXH64_reset(ptr,ulong):int\n        call     [rcx]SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_XXH64_reset(ptr,ulong):int\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG06:\n        cmp      dword ptr [rbp\u002B0x70], 1\n        jne      G_M13510_IG33\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 2.00\n G_M13510_IG07:\n        mov      rcx, qword ptr [rbp\u002B0xB8]\n        mov      qword ptr [rbp-0xB0], rcx\n        mov      rsi, qword ptr [rbp\u002B0xC0]\n        mov      qword ptr [rbp-0xB8], rsi\n        mov      r8, qword ptr [rbp\u002B0xC8]\n        mov      qword ptr [rbp-0xC0], r8\n        mov      r9d, dword ptr [rbp\u002B0x74]\n        mov      dword ptr [rbp-0x30], r9d\n        mov      edx, 1\n        shlx     r10, rdx, r9\n        shl      r10, 3\n        mov      qword ptr [rbp-0x38], r10\n        mov      r11d, dword ptr [rbp\u002B0x74]\n        sub      r11d, dword ptr [rbp\u002B0x78]\n        mov      dword ptr [rbp-0x3C], r11d\n        mov      edi, dword ptr [rbx\u002B0x74]\n        sub      edi, dword ptr [rbx\u002B0x78]\n        mov      dword ptr [rbp-0x40], edi\n        shlx     rdx, rdx, r11\n        mov      qword ptr [rbp-0x48], rdx\n        mov      edi, dword ptr [rbp\u002B0x7C]\n        mov      rax, r13\n        xor      edx, edx\n        div      rdx:rax, rdi\n        mov      qword ptr [rbp-0x68], rax\n        mov      rdi, qword ptr [r14]\n        test     rdi, rdi\n        je       G_M13510_IG39\n        and      rdi, -2\n        mov      rdi, gword ptr [rdi]\n        mov      rdx, 0xD1FFAB1E      ; code for System.Threading.Monitor:Enter(System.Object)\n        call     [rdx]System.Threading.Monitor:Enter(System.Object)\n        mov      rdi, qword ptr [rbp-0x68]\n        lea      rdi, [rdi\u002B2*rdi]\n        shl      rdi, 2\n        mov      qword ptr [r14\u002B0x08], rdi\n        mov      rdi, qword ptr [r14]\n        test     rdi, rdi\n        je       G_M13510_IG39\n        and      rdi, -2\n        mov      rdi, gword ptr [rdi]\n        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Monitor:Exit(System.Object)\n        call     [rax]System.Threading.Monitor:Exit(System.Object)\n        lea      r14, [rbx\u002B0xF0]\n        mov      rdi, r14\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [rdi], ymm0\n        xor      eax, eax\n        mov      dword ptr [rdi\u002B0x20], eax\n        mov      rsi, qword ptr [rbx\u002B0x118]\n        test     rsi, rsi\n        je       SHORT G_M13510_IG08\n        mov      edi, dword ptr [rbp-0x30]\n        cmp      dword ptr [rbx\u002B0x74], edi\n        jae      G_M13510_IG17\n \t\t\t\t\t\t;; size=242 bbWeight=0.50 PerfScore 58.00\n G_M13510_IG08:\n        test     rsi, rsi\n        je       G_M13510_IG14\n        cmp      qword ptr [rbp-0xB8], 0\n        jne      SHORT G_M13510_IG13\n        mov      rdi, rsi\n        mov      rcx, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x98], rcx\n        lea      rcx, G_M13510_IG11\n        mov      qword ptr [rbp-0x88], rcx\n        lea      rcx, [rbp-0xA8]\n        mov      rdx, qword ptr [rbp-0x70]\n        mov      qword ptr [rdx\u002B0x08], rcx\n        mov      byte  ptr [rdx\u002B0x04], 0\n \t\t\t\t\t\t;; size=72 bbWeight=0.50 PerfScore 5.12\n G_M13510_IG09:\n        mov      rcx, 0xD1FFAB1E      ; function address\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M13510_IG10:\n        vzeroupper \n        call     rcx ; Interop\u002BSys:Free(ptr)\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG11:\n        mov      rax, qword ptr [rbp-0x70]\n        mov      byte  ptr [rax\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M13510_IG12\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=35 bbWeight=0.50 PerfScore 4.25\n G_M13510_IG12:\n        mov      rdi, qword ptr [rbp-0xA0]\n        mov      qword ptr [rax\u002B0x08], rdi\n        jmp      SHORT G_M13510_IG14\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG13:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rax, qword ptr [rbp-0xB8]\n        call     rax\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 2.50\n G_M13510_IG14:\n        mov      qword ptr [rbp-0x58], r14\n        cmp      qword ptr [rbp-0xB0], 0\n        jne      SHORT G_M13510_IG15\n        mov      rdi, qword ptr [rbp-0x38]\n        mov      rdx, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        call     [rdx]System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        jmp      SHORT G_M13510_IG16\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M13510_IG15:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rsi, qword ptr [rbp-0x38]\n        mov      rcx, qword ptr [rbp-0xB0]\n        call     rcx\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.00\n G_M13510_IG16:\n        mov      rdi, qword ptr [rbp-0x58]\n        mov      qword ptr [rdi\u002B0x28], rax\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.00\n G_M13510_IG17:\n        mov      rsi, qword ptr [rbx\u002B0x128]\n        test     rsi, rsi\n        je       SHORT G_M13510_IG18\n        mov      edi, dword ptr [rbp-0x3C]\n        cmp      dword ptr [rbp-0x40], edi\n        jae      G_M13510_IG27\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 3.12\n G_M13510_IG18:\n        test     rsi, rsi\n        je       G_M13510_IG24\n        mov      rax, qword ptr [rbp-0xB8]\n        test     rax, rax\n        jne      SHORT G_M13510_IG23\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x98], rax\n        lea      rax, G_M13510_IG21\n        mov      qword ptr [rbp-0x88], rax\n        lea      rax, [rbp-0xA8]\n        mov      rcx, qword ptr [rbp-0x70]\n        mov      qword ptr [rcx\u002B0x08], rax\n        mov      byte  ptr [rcx\u002B0x04], 0\n \t\t\t\t\t\t;; size=74 bbWeight=0.50 PerfScore 5.25\n G_M13510_IG19:\n        mov      rax, 0xD1FFAB1E      ; function address\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M13510_IG20:\n        vzeroupper \n        call     rax ; Interop\u002BSys:Free(ptr)\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG21:\n        mov      rax, qword ptr [rbp-0x70]\n        mov      byte  ptr [rax\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M13510_IG22\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=35 bbWeight=0.50 PerfScore 4.25\n G_M13510_IG22:\n        mov      rdi, qword ptr [rbp-0xA0]\n        mov      qword ptr [rax\u002B0x08], rdi\n        jmp      SHORT G_M13510_IG24\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG23:\n        mov      rdi, qword ptr [rbp-0xC0]\n        call     rax\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 2.00\n G_M13510_IG24:\n        mov      qword ptr [rbp-0x60], r14\n        mov      rcx, qword ptr [rbp-0xB0]\n        test     rcx, rcx\n        jne      SHORT G_M13510_IG25\n        mov      rdi, qword ptr [rbp-0x48]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        call     [rcx]System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        jmp      SHORT G_M13510_IG26\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 4.75\n G_M13510_IG25:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rsi, qword ptr [rbp-0x48]\n        call     rcx\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.50\n G_M13510_IG26:\n        mov      rdi, qword ptr [rbp-0x60]\n        mov      qword ptr [rdi\u002B0x38], rax\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.00\n G_M13510_IG27:\n        mov      rdi, qword ptr [rbx\u002B0x118]\n        test     rdi, rdi\n        je       G_M13510_IG34\n        mov      rax, qword ptr [rbx\u002B0x128]\n        mov      qword ptr [rbp-0xC8], rax\n        test     rax, rax\n        je       G_M13510_IG34\n        mov      esi, dword ptr [rbp-0x38]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rcx]CORINFO_HELP_MEMZERO\n        mov      rdi, qword ptr [rbp-0xC8]\n        mov      esi, dword ptr [rbp-0x48]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rax]CORINFO_HELP_MEMZERO\n        xor      edi, edi\n        mov      dword ptr [rbx\u002B0x120], edi\n        test     r12, r12\n        je       G_M13510_IG32\n        cmp      dword ptr [rbp-0x2C], 1\n        jne      G_M13510_IG32\n        add      r12, r15\n        mov      rax, r12\n        mov      qword ptr [rbp-0x50], rax\n        mov      rdi, r14\n        mov      rcx, qword ptr [rdi\u002B0x08]\n        test     rcx, rcx\n        je       G_M13510_IG40\n        cmp      qword ptr [rdi\u002B0x10], 0\n        je       G_M13510_IG41\n        cmp      r15, qword ptr [rdi]\n        je       SHORT G_M13510_IG28\n        mov      rsi, qword ptr [rdi]\n        sub      rsi, rcx\n        mov      ecx, dword ptr [rdi\u002B0x18]\n        mov      dword ptr [rdi\u002B0x1C], ecx\n        mov      ecx, esi\n        cmp      rsi, rcx\n        jne      G_M13510_IG42\n        mov      dword ptr [rdi\u002B0x18], esi\n        mov      rcx, qword ptr [rdi\u002B0x08]\n        mov      qword ptr [rdi\u002B0x10], rcx\n        mov      rcx, r15\n        sub      rcx, rsi\n        mov      qword ptr [rdi\u002B0x08], rcx\n        mov      ecx, dword ptr [rdi\u002B0x18]\n        mov      esi, ecx\n        sub      esi, dword ptr [rdi\u002B0x1C]\n        cmp      esi, 8\n        jae      SHORT G_M13510_IG28\n        mov      dword ptr [rdi\u002B0x1C], ecx\n \t\t\t\t\t\t;; size=205 bbWeight=0.50 PerfScore 25.62\n G_M13510_IG28:\n        mov      qword ptr [rdi], r12\n        mov      rcx, qword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rdi\u002B0x1C]\n        add      rsi, rcx\n        cmp      rsi, r12\n        jae      SHORT G_M13510_IG29\n        mov      esi, dword ptr [rdi\u002B0x18]\n        mov      edx, esi\n        lea      r8, [rcx\u002Brdx]\n        cmp      r8, r15\n        jbe      SHORT G_M13510_IG29\n        sub      r12, rcx\n        cmp      r12, rdx\n        cmovbe   esi, r12d\n        mov      ecx, 0xD1FFAB1E\n        cmp      r12, rcx\n        jae      G_M13510_IG43\n        mov      dword ptr [rdi\u002B0x1C], esi\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 7.00\n G_M13510_IG29:\n        mov      rdi, r14\n        lea      rcx, [rbp\u002B0x70]\n        mov      rsi, r15\n        mov      rdx, rax\n        mov      r8, 0xD1FFAB1E      ; code for SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_ldm_fillHashTable(ptr,ptr,ptr,ptr)\n        call     [r8]SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_ldm_fillHashTable(ptr,ptr,ptr,ptr)\n        mov      rdi, r14\n        cmp      dword ptr [rbp\u002B0x40], 0\n        je       SHORT G_M13510_IG30\n        xor      eax, eax\n        jmp      SHORT G_M13510_IG31\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.50\n G_M13510_IG30:\n        mov      r15, qword ptr [rbp-0x50]\n        mov      eax, r15d\n        sub      eax, dword ptr [rbx\u002B0xF8]\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.62\n G_M13510_IG31:\n        mov      dword ptr [rdi\u002B0x30], eax\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.50\n G_M13510_IG32:\n        vmovdqu  ymm0, ymmword ptr [r14]\n        vmovdqu32 ymmword ptr [rbx\u002B0x09A0], ymm0\n        mov      rdi, qword ptr [r14\u002B0x20]\n        mov      qword ptr [rbx\u002B0x09C0], rdi\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.50\n G_M13510_IG33:\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x10]\n        vmovdqu32 zmmword ptr [rbx\u002B0x10], zmm0\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x50]\n        vmovdqu32 zmmword ptr [rbx\u002B0x50], zmm0\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x90]\n        vmovdqu32 zmmword ptr [rbx\u002B0x90], zmm0\n        vmovdqu  ymm0, ymmword ptr [rbp\u002B0xD0]\n        vmovdqu  ymmword ptr [rbx\u002B0xD0], ymm0\n        mov      edi, r13d\n        mov      qword ptr [rbx\u002B0x60], rdi\n        xor      eax, eax\n        jmp      SHORT G_M13510_IG35\n \t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 10.75\n G_M13510_IG34:\n        mov      eax, 1\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.12\n G_M13510_IG35:\n        vzeroupper \n        add      rsp, 168\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.25\n G_M13510_IG36:\n        lea      rdi, [rbp\u002B0x70]\n        lea      rsi, [rbp\u002B0x14]\n        mov      rcx, 0xD1FFAB1E      ; code for SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_ldm_adjustParameters(ptr,ptr)\n        call     [rcx]SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_ldm_adjustParameters(ptr,ptr)\n        mov      edi, dword ptr [rbp\u002B0x74]\n        cmp      edi, dword ptr [rbp\u002B0x78]\n        jb       SHORT G_M13510_IG37\n        cmp      dword ptr [rbp\u002B0x80], 32\n        jb       G_M13510_IG04\n        jmp      SHORT G_M13510_IG38\n \t\t\t\t\t\t;; size=43 bbWeight=0.50 PerfScore 5.62\n G_M13510_IG37:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M13510_IG38:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M13510_IG39:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        call     [rax]System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M13510_IG40:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M13510_IG41:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M13510_IG42:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M13510_IG43:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027assert failed\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007B8D86454D7Ah, 00007B8D86454D78h, 00007B8D86454D78h, 0000000200000002h\n\u002BRWD00  \tdq\t00007E903F1FBD7Ah, 00007E903F1FBD78h, 00007E903F1FBD78h, 0000000200000002h\n \n \n ; Total bytes of code 1649, prolog size 25, PerfScore 200.54, instruction count 364, allocated bytes for code 1649 (MethodHash=c7f1cb39) for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,SharpCompress.Compressors.ZStandard.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1649,"DiffBytes":1649},{"Assembly":"Silk.NET.Assimp.dasm","Method":"Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)","Category":"same-size","Description":"159 -\u003E 159 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,94 \u002B1,94 @@\n ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] (  7,  6.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V01 arg1         [V01,T01] (  3,  3   )     ref  -\u003E  r15         class-hnd single-def \u003CSilk.NET.Assimp.OpenFileCustomIOCallback\u003E\n ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V03 loc1         [V03    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op \u003CSilk.NET.Assimp.FileIO\u003E\n ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V05 tmp1         [V05,T03] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V07 tmp3         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V08 tmp4         [V08,T02] (  5,  4.50)    long  -\u003E  r14         \u0022Inline stloc first use temp\u0022\n ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileOpenProc\u003E\n ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileCloseProc\u003E\n ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V12 tmp8         [V12    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V13 tmp9         [V13    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V02._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp10        [V14    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.OpenProc (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp11        [V15    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.CloseProc (fldOffset=0x8)\u0022 P-INDEP\n ;* V16 tmp12        [V16    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V03.UserData (fldOffset=0x10)\u0022 P-INDEP\n ;* V17 tmp13        [V17    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V06._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V18 tmp14        [V18    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V09._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp15        [V19    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V10._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V20 tmp16        [V20    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V11._handle (fldOffset=0x0)\u0022 P-INDEP\n ;\n ; Lcl frame size = 8\n \n G_M23716_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n        mov      r15, rsi\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M23716_IG02:\n        mov      rdi, rbx\n        mov      esi, 2\n        call     System.Runtime.InteropServices.GCHandle:_InternalAlloc(System.Object,int):nint\n        mov      r14, rax\n        test     r14, r14\n        jne      SHORT G_M23716_IG04\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 3.00\n G_M23716_IG03:\n        mov      rdi, rbx\n        mov      esi, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint\n        call     [rax]System.Runtime.InteropServices.GCHandle:InternalAllocWithGCTransition(System.Object,int):nint\n        mov      r14, rax\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M23716_IG04:\n        test     r14, r14\n        je       SHORT G_M23716_IG06\n        lea      rdi, bword ptr [rbx\u002B0x08]\n        mov      rsi, r15\n        call     CORINFO_HELP_ASSIGN_REF\n        vmovups  xmm0, xmmword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rbx\u002B0x10], xmm0\n        mov      qword ptr [rbx\u002B0x20], r14\n \t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 6.00\n G_M23716_IG05:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M23716_IG06:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Failed to allocate GCHandle for CustomFileIO\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007E0452740AB0h, 00007E0452740AC8h\n\u002BRWD00  \tdq\t000074ABFA950AB0h, 000074ABFA950AC8h\n \n \n ; Total bytes of code 159, prolog size 12, PerfScore 20.25, instruction count 43, allocated bytes for code 159 (MethodHash=57fda35b) for method Silk.NET.Assimp.CustomFileIO:.ctor(Silk.NET.Assimp.OpenFileCustomIOCallback):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":159,"DiffBytes":159},{"Assembly":"SixLabors.ImageSharp.dasm","Method":"SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncIterator:get_YuvOut():byte[]:this (FullOpts)","Category":"same-size","Description":"5 -\u003E 5 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,25 \u002B1,39 @@\n ; Assembly listing for method SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncIterator:get_YuvOut():byte[]:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T00] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CSixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncIterator\u003E\n-;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n\u002B;  V00 this         [V00,T00] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def; Assembly listing for method SixLabors.ImageSharp.Memory.Internals.UniformUnmanagedMemoryPool\u002B\u003C\u003Ec:\u003CUpdateTimer\u003Eb__26_0(System.Object):this (FullOpts)\n\u002B; Emitting BLENDED_CODE for  \u003CSixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncIterator\u003E\n\u002Bx64 \u002B VEX;#  \u002B EVEX on Unix\n\u002BV01 OutArgs; FullOpts code\n\u002B      ; optimized code\n\u002B; rsp based frame\n\u002B; fully interruptible\n\u002B; No PGO data\n\u002B[V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS]; Final addr-exposed local variable assignments\n\u002B \u0022OutgoingArgSpace\u0022;\n\u002B \u003CEmpty\u003E\n\u002B;\n\u002B; Lcl frame size = 0\n\u002B;* V00 this         [V00    ] (  0,  0   )     ref  -\u003E  zero-ref    this class-hnd single-def \u003CSixLabors.ImageSharp.Memory.Internals.UniformUnmanagedMemoryPool\u002B\u003C\u003Ec\u003E\n\u002B;* V01 arg1         [V01    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd single-def \u003CSystem.Object\u003E\n\u002B;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;\n ; Lcl frame size = 0\n \n G_M20666_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M20666_IG02:\n        mov      rax, gword ptr [rdi\u002B0x18]\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 2.00\n G_M20666_IG03:\n        ret      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n \n ; Total bytes of code 5, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 5 (MethodHash=7cadaf45) for method SixLabors.ImageSharp.Formats.Webp.Lossy.Vp8EncIterator:get_YuvOut():byte[]:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":5,"DiffBytes":5},{"Assembly":"SkiaSharp.dasm","Method":"SkiaSharp.SKAbstractManagedStream:.cctor() (FullOpts)","Category":"same-size","Description":"307 -\u003E 307 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,115 \u002B1,115 @@\n ; Assembly listing for method SkiaSharp.SKAbstractManagedStream:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (104) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSkiaSharp.SKManagedStreamDelegates\u003E\n ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (104) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;  V02 FramesRoot   [V02,T00] (  6,  6   )    long  -\u003E  rbx         \u0022Pinvoke FrameListRoot\u0022\n ;  V03 PInvokeFrame [V03    ] (  8,  8   )  struct (56) [rbp-0x60]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[000..008)\u0022\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[008..016)\u0022\n ;* V06 tmp5         [V06    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[016..024)\u0022\n ;* V07 tmp6         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[024..032)\u0022\n ;* V08 tmp7         [V08    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[032..040)\u0022\n ;* V09 tmp8         [V09    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[040..048)\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[048..056)\u0022\n ;* V11 tmp10        [V11    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[056..064)\u0022\n ;* V12 tmp11        [V12    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[064..072)\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[072..080)\u0022\n ;* V14 tmp13        [V14    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[080..088)\u0022\n ;* V15 tmp14        [V15    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[088..096)\u0022\n ;* V16 tmp15        [V16    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[096..104)\u0022\n ;  V17 cse0         [V17,T01] (  3,  3   )    long  -\u003E  rax         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 168\n \n G_M60289_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 168\n        lea      rbp, [rsp\u002B0xD0]\n \t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 6.75\n G_M60289_IG02:\n        lea      rdi, [rbp-0x60]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      rbx, rax\n        mov      rax, rsp\n        mov      qword ptr [rbp-0x48], rax\n        mov      rax, rbp\n        mov      qword ptr [rbp-0x38], rax\n        mov      rax, 0xD1FFAB1E      ; static handle\n        mov      rcx, 0xD1FFAB1E\n        mov      qword ptr [rax], rcx\n        vmovups  zmm0, zmmword ptr [reloc @RWD00]\n        mov      rcx, 0xD1FFAB1E\n        vmovups  zmmword ptr [rcx], zmm0\n        vmovups  ymm0, ymmword ptr [reloc @RWD64]\n        mov      rcx, 0xD1FFAB1E\n        vmovups  ymmword ptr [rcx], ymm0\n        vmovdqu  xmm0, xmmword ptr [rax]\n        vmovdqu  xmmword ptr [rsp], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x10]\n        vmovdqu  xmmword ptr [rsp\u002B0x10], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x20]\n        vmovdqu  xmmword ptr [rsp\u002B0x20], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x30]\n        vmovdqu  xmmword ptr [rsp\u002B0x30], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x40]\n        vmovdqu  xmmword ptr [rsp\u002B0x40], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x50]\n        vmovdqu  xmmword ptr [rsp\u002B0x50], xmm0\n        mov      rcx, qword ptr [rax\u002B0x60]\n        mov      qword ptr [rsp\u002B0x60], rcx\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x50], rax\n        lea      rax, G_M60289_IG05\n        mov      qword ptr [rbp-0x40], rax\n        lea      rax, [rbp-0x60]\n        mov      qword ptr [rbx\u002B0x08], rax\n        mov      byte  ptr [rbx\u002B0x04], 0\n \t\t\t\t\t\t;; size=207 bbWeight=1 PerfScore 41.00\n G_M60289_IG03:\n        mov      rax, 0xD1FFAB1E      ; code for SkiaSharp.SkiaApi:sk_managedstream_set_procs(SkiaSharp.SKManagedStreamDelegates)\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M60289_IG04:\n        vzeroupper \n        call     [rax]SkiaSharp.SkiaApi:sk_managedstream_set_procs(SkiaSharp.SKManagedStreamDelegates)\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 4.00\n G_M60289_IG05:\n        mov      byte  ptr [rbx\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M60289_IG06\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 7.50\n G_M60289_IG06:\n        mov      rax, qword ptr [rbp-0x58]\n        mov      qword ptr [rbx\u002B0x08], rax\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 2.00\n G_M60289_IG07:\n        vzeroupper \n        add      rsp, 168\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.25\n-RWD00  \tdq\t0000796AE7068060h, 0000796AE7068030h, 0000796AE7068018h, 0000796AE7068000h, 0000796AE7068090h, 0000796AE7063FD8h, 0000796AE70680A8h, 0000796AE7068048h\n-RWD64  \tdq\t0000796AE7063FC0h, 0000796AE7063F90h, 0000796AE7063FA8h, 0000796AE7063F78h\n\u002BRWD00  \tdq\t00007E26DC248060h, 00007E26DC248030h, 00007E26DC248018h, 00007E26DC248000h, 00007E26DC248090h, 00007E26DC243FD8h, 00007E26DC2480A8h, 00007E26DC248048h\n\u002BRWD64  \tdq\t00007E26DC243FC0h, 00007E26DC243F90h, 00007E26DC243FA8h, 00007E26DC243F78h\n \n \n ; Total bytes of code 307, prolog size 25, PerfScore 66.75, instruction count 65, allocated bytes for code 307 (MethodHash=5344147e) for method SkiaSharp.SKAbstractManagedStream:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":307,"DiffBytes":307},{"Assembly":"System.CommandLine.dasm","Method":"System.CommandLine.Argument\u00601[System.Nullable\u00601[int]]:CreateDefaultValue():System.Nullable\u00601[int] (FullOpts)","Category":"same-size","Description":"502 -\u003E 502 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,238 \u002B1,238 @@\n ; Assembly listing for method System.CommandLine.Argument\u00601[System.Nullable\u00601[int]]:CreateDefaultValue():System.Nullable\u00601[int] (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Nullable\u00601[int]\u003E\n ;* V01 loc1         [V01    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u003CSystem.RuntimeType\u003E\n ;  V02 OutArgs      [V02    ] (  1,  1   )  struct (16) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;* V03 tmp1         [V03    ] (  0,  0   )    long  -\u003E  zero-ref    class-hnd exact \u0022obj nullable box\u0022 \u003CSystem.Int32\u003E\n ;* V04 tmp2         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    class-hnd exact \u0022spilling qmarkNullableBox\u0022 \u003CSystem.Int32\u003E\n ;* V05 tmp3         [V05    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op \u0022Nullable\u003CT\u003E tmp\u0022 \u003CSystem.Nullable\u00601[int]\u003E\n ;* V06 tmp4         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022op1 spilled for Nullable unbox\u0022\n ;  V07 tmp5         [V07    ] (  5,  2.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022Nullable\u003CT\u003E tmp\u0022 \u003CSystem.Nullable\u00601[int]\u003E\n ;* V08 tmp6         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022op1 spilled for Nullable unbox\u0022\n ;  V09 tmp7         [V09,T05] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.RuntimeType\u003E\n ;  V10 tmp8         [V10,T10] (  3,  1.50)    long  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n ;  V11 tmp9         [V11,T07] (  2,  2   )     ref  -\u003E  rax         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003CSystem.RuntimeType\u003E\n ;  V12 tmp10        [V12    ] (  3,  3   )     int  -\u003E  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op \u0022Inlining Arg\u0022\n ;* V13 tmp11        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022ISINST eval op1\u0022\n ;  V14 tmp12        [V14,T08] (  2,  2   )     ref  -\u003E  rax         class-hnd \u0022spilling qmarkNull\u0022 \u003CSystem.RuntimeType\u003E\n ;* V15 tmp13        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;  V16 tmp14        [V16,T06] (  3,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V17 tmp15        [V17,T09] (  5,  1.50)     ref  -\u003E  rdx         class-hnd single-def \u0022Inline return value spill temp\u0022 \u003CSystem.Array\u003E\n ;  V18 tmp16        [V18    ] (  4,  2   )     ref  -\u003E  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inline stloc first use temp\u0022 \u003CSystem.Array\u003E\n ;  V19 tmp17        [V19    ] (  3,  3   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.RuntimeType\u003E\n ;* V20 tmp18        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.QCallTypeHandle\u003E\n ;* V21 tmp19        [V21    ] (  0,  0   )  struct (16) zero-ref    \u0022impAppendStmt\u0022 \u003CSystem.Runtime.CompilerServices.QCallTypeHandle\u003E\n ;* V22 tmp20        [V22    ] (  0,  0   )  struct ( 8) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.Runtime.CompilerServices.ObjectHandleOnStack\u003E\n ;  V23 tmp21        [V23,T03] (  3,  3   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022dup spill\u0022 \u003CSystem.RuntimeType\u003E\n ;* V24 tmp22        [V24    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V25 tmp23        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;* V26 tmp24        [V26    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;  V27 tmp25        [V27,T11] (  3,  1.50)    long  -\u003E  rsi        \n ;* V28 tmp26        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.RuntimeType\u003E\n ;* V29 tmp27        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.ObjectHandleOnStack\u003E\n ;* V30 tmp28        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V31 tmp29        [V31    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V32 tmp30        [V32    ] (  2,  1   )    long  -\u003E  [rbp-0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022\n ;* V33 tmp31        [V33    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003CSystem.Runtime.CompilerServices.QCallExceptionStatus\u003E\n ;  V34 tmp32        [V34,T04] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V35 tmp33        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003CSystem.Runtime.CompilerServices.QCallExceptionStatus\u003E\n ;* V36 tmp34        [V36    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.Type[]\u003E\n ;* V37 tmp35        [V37    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003CSystem.Nullable\u00601[int]\u003E\n ;* V38 tmp36        [V38    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[XSF] addr-exposed \u0022stack allocated [boxed] System.Int32\u0022 \u003C[boxed] System.Int32\u003E\n ;  V39 tmp37        [V39,T01] (  3,  4   )  struct ( 8) rax         \u0022Single return block return value\u0022 \u003CSystem.Nullable\u00601[int]\u003E\n ;  V40 FramesRoot   [V40,T00] (  6,  4   )    long  -\u003E  rbx         \u0022Pinvoke FrameListRoot\u0022\n ;  V41 PInvokeFrame [V41    ] (  8,  6   )  struct (56) [rbp-0x88]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;* V42 tmp40        [V42    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022field V00.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V43 tmp41        [V43    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V00.value (fldOffset=0x4)\u0022 P-INDEP\n ;* V44 tmp42        [V44    ] (  0,  0   )   ubyte  -\u003E  zero-ref    do-not-enreg[X] addr-exposed \u0022field V05.hasValue (fldOffset=0x0)\u0022 P-DEP\n ;* V45 tmp43        [V45    ] (  0,  0   )     int  -\u003E  zero-ref    do-not-enreg[X] addr-exposed \u0022field V05.value (fldOffset=0x4)\u0022 P-DEP\n ;  V46 tmp44        [V46    ] (  4,  1.75)   ubyte  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V07.hasValue (fldOffset=0x0)\u0022 P-DEP\n ;  V47 tmp45        [V47    ] (  4,  1.75)     int  -\u003E  [rbp-0x2C]  do-not-enreg[X] addr-exposed \u0022field V07.value (fldOffset=0x4)\u0022 P-DEP\n ;* V48 tmp46        [V48,T12] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V20._ptr (fldOffset=0x0)\u0022 P-INDEP\n ;* V49 tmp47        [V49    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V20._handle (fldOffset=0x8)\u0022 P-INDEP\n ;* V50 tmp48        [V50    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V21._ptr (fldOffset=0x0)\u0022 P-INDEP\n ;* V51 tmp49        [V51    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V21._handle (fldOffset=0x8)\u0022 P-INDEP\n ;* V52 tmp50        [V52    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V22._ptr (fldOffset=0x0)\u0022 P-INDEP\n ;* V53 tmp51        [V53,T13] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V29._ptr (fldOffset=0x0)\u0022 P-INDEP\n ;* V54 tmp52        [V54    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V33._value (fldOffset=0x0)\u0022 P-INDEP\n ;* V55 tmp53        [V55    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V35._value (fldOffset=0x0)\u0022 P-INDEP\n ;* V56 tmp54        [V56    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022field V37.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V57 tmp55        [V57    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V37.value (fldOffset=0x4)\u0022 P-INDEP\n ;  V58 cse0         [V58,T02] (  4,  3   )     ref  -\u003E  r15         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 120\n \n G_M49207_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 120\n        vzeroupper \n        lea      rbp, [rsp\u002B0xA0]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqa  xmmword ptr [rbp-0x50], xmm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x40], rax\n \t\t\t\t\t\t;; size=41 bbWeight=1 PerfScore 10.33\n G_M49207_IG02:\n        lea      rdi, [rbp-0x88]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      rbx, rax\n        mov      rdi, rsp\n        mov      qword ptr [rbp-0x70], rdi\n        mov      rdi, rbp\n        mov      qword ptr [rbp-0x60], rdi\n        mov      r15, 0xD1FFAB1E      ; \u0027System.Nullable\u00601[System.Int32]\u0027\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():byte:this\n        call     [rax]System.RuntimeType:GetCorElementType():byte:this\n        cmp      eax, 29\n        je       SHORT G_M49207_IG04\n \t\t\t\t\t\t;; size=59 bbWeight=1 PerfScore 9.25\n G_M49207_IG03:\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsConstructedGenericType():bool:this\n        call     [rax]System.RuntimeType:get_IsConstructedGenericType():bool:this\n        xor      eax, eax\n        jmp      G_M49207_IG17\n \t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 2.88\n G_M49207_IG04:\n        mov      rdi, 0xD1FFAB1E\n        call     System.RuntimeTypeHandle:GetElementTypeHandle(nint):nint\n        test     rax, rax\n        je       SHORT G_M49207_IG05\n        mov      rdi, rax\n        mov      rax, 0xD1FFAB1E      ; code for System.RuntimeTypeHandle:GetRuntimeTypeFromHandle(nint):System.RuntimeType\n        call     [rax]System.RuntimeTypeHandle:GetRuntimeTypeFromHandle(nint):System.RuntimeType\n        jmp      SHORT G_M49207_IG06\n \t\t\t\t\t\t;; size=37 bbWeight=0.50 PerfScore 4.00\n G_M49207_IG05:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M49207_IG06:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x38], edi\n        test     rax, rax\n        je       G_M49207_IG18\n        mov      edi, dword ptr [rbp-0x38]\n        test     edi, edi\n        jl       G_M49207_IG19\n        mov      gword ptr [rbp-0x48], rax\n        xor      rdi, rdi\n        mov      gword ptr [rbp-0x40], rdi\n        mov      rdi, gword ptr [rbp-0x48]\n        test     rdi, rdi\n        je       SHORT G_M49207_IG07\n        mov      rsi, qword ptr [rdi\u002B0x18]\n        jmp      SHORT G_M49207_IG08\n \t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 6.62\n G_M49207_IG07:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M49207_IG08:\n        lea      rdi, [rbp-0x40]\n        mov      qword ptr [rsp], rdi\n        lea      rdi, [rbp-0x50]\n        mov      qword ptr [rsp\u002B0x08], rdi\n        lea      rdi, [rbp-0x48]\n        lea      rcx, [rbp-0x38]\n        mov      edx, 1\n        xor      r8d, r8d\n        xor      r9d, r9d\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x78], rax\n        lea      rax, G_M49207_IG11\n        mov      qword ptr [rbp-0x68], rax\n        lea      rax, [rbp-0x88]\n        mov      qword ptr [rbx\u002B0x08], rax\n        mov      byte  ptr [rbx\u002B0x04], 0\n \t\t\t\t\t\t;; size=76 bbWeight=0.50 PerfScore 5.25\n G_M49207_IG09:\n-       mov      rax, 0xD1FFAB1E      ; function address\n\u002B       mov      rax, 0xD1FFAB1E      ; code for System.Array:\u003CInternalCreate\u003Eg____PInvoke|0_0(System.Runtime.CompilerServices.QCallTypeHandle,int,ptr,ptr,int,System.Runtime.CompilerServices.ObjectHandleOnStack,ptr)\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M49207_IG10:\n-       call     rax ; System.Array:\u003CInternalCreate\u003Eg____PInvoke|0_0(System.Runtime.CompilerServices.QCallTypeHandle,int,ptr,ptr,int,System.Runtime.CompilerServices.ObjectHandleOnStack,ptr)\n\u002B       call     [rax]System.Array:\u003CInternalCreate\u003Eg____PInvoke|0_0(System.Runtime.CompilerServices.QCallTypeHandle,int,ptr,ptr,int,System.Runtime.CompilerServices.ObjectHandleOnStack,ptr)\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.50\n G_M49207_IG11:\n        mov      byte  ptr [rbx\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M49207_IG12\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=31 bbWeight=0.50 PerfScore 3.75\n G_M49207_IG12:\n        mov      rdi, qword ptr [rbp-0x80]\n        mov      qword ptr [rbx\u002B0x08], rdi\n        mov      rdi, qword ptr [rbp-0x50]\n        test     rdi, rdi\n        je       SHORT G_M49207_IG13\n        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.QCallExceptionStatusMarshaller:HandleException(nint)\n        call     [rax]System.Runtime.CompilerServices.QCallExceptionStatusMarshaller:HandleException(nint)\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 3.75\n G_M49207_IG13:\n        mov      rdx, gword ptr [rbp-0x40]\n        xor      rdi, rdi\n        mov      gword ptr [rbp-0x40], rdi\n        test     rdx, rdx\n        jne      SHORT G_M49207_IG15\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 1.75\n G_M49207_IG14:\n        xor      edx, edx\n        mov      qword ptr [rbp-0x30], rdx\n        jmp      SHORT G_M49207_IG16\n \t\t\t\t\t\t;; size=8 bbWeight=0.25 PerfScore 0.81\n G_M49207_IG15:\n        mov      rdi, 0xD1FFAB1E      ; System.Int32\n        cmp      qword ptr [rdx], rdi\n        jne      SHORT G_M49207_IG20\n        mov      byte  ptr [rbp-0x30], 1\n        mov      edi, dword ptr [rdx\u002B0x08]\n        mov      dword ptr [rbp-0x2C], edi\n \t\t\t\t\t\t;; size=25 bbWeight=0.25 PerfScore 1.81\n G_M49207_IG16:\n        mov      rax, qword ptr [rbp-0x30]\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M49207_IG17:\n        add      rsp, 120\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M49207_IG18:\n        mov      rdi, 0xD1FFAB1E      ; \u0027elementType\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)\n        call     [rax]System.ArgumentNullException:Throw(System.String)\n        int3     \n \t\t\t\t\t\t;; size=23 bbWeight=0 PerfScore 0.00\n G_M49207_IG19:\n        mov      rsi, 0xD1FFAB1E      ; \u0027length\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)\n        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)\n        int3     \n \t\t\t\t\t\t;; size=23 bbWeight=0 PerfScore 0.00\n G_M49207_IG20:\n        lea      rdi, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; System.Nullable\u00601[int]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX_NULLABLE\n        call     [rax]CORINFO_HELP_UNBOX_NULLABLE\n        jmp      SHORT G_M49207_IG16\n \t\t\t\t\t\t;; size=28 bbWeight=0 PerfScore 0.00\n \n ; Total bytes of code 502, prolog size 41, PerfScore 56.83, instruction count 123, allocated bytes for code 502 (MethodHash=f0ea3fc8) for method System.CommandLine.Argument\u00601[System.Nullable\u00601[int]]:CreateDefaultValue():System.Nullable\u00601[int] (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":502,"DiffBytes":502},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)","Category":"same-size","Description":"23 -\u003E 23 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,32 \u002B1,32 @@\n ; Assembly listing for method System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Runtime.CompilerServices.ResumeInfo\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.Resume (fldOffset=0x0)\u0022 P-INDEP\n ;* V03 tmp2         [V03    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.DiagnosticIP (fldOffset=0x8)\u0022 P-INDEP\n ;  V04 cse0         [V04,T00] (  2,  2   )    long  -\u003E  rax         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 0\n \n G_M58358_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M58358_IG02:\n        mov      rax, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:ResumeInfo\n        vmovsd   xmm0, qword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rax], xmm0\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 3.25\n G_M58358_IG03:\n        ret      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 1.00\n-RWD00  \tdq\t00007D8FEE7215C0h\n\u002BRWD00  \tdq\t0000737CE47215C0h\n \n \n ; Total bytes of code 23, prolog size 0, PerfScore 4.25, instruction count 4, allocated bytes for code 23 (MethodHash=bcd21c09) for method System.Runtime.CompilerServices.AsyncHelpers\u002BValueTaskSourceContinuation\u002BValueTaskSourceContinuationResume:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":23,"DiffBytes":23},{"Assembly":"Testcontainers.dasm","Method":"DotNet.Testcontainers.Clients.TestcontainersClient\u002B\u003CRunAsync\u003Ed__41:MoveNext():this (FullOpts)","Category":"same-size","Description":"2,496 -\u003E 2,496 bytes (0)","ExtraInfo":null,"Diff":"@@ -874,7 \u002B874,7 @@ RWD00  \tdd\tG_M43249_IG30 - G_M43249_IG02\n        \tdd\tG_M43249_IG13 - G_M43249_IG02\n        \tdd\tG_M43249_IG10 - G_M43249_IG02\n        \tdd\tG_M43249_IG05 - G_M43249_IG02\n-RWD32  \tdq\t4C3F71B41CDF68A5h, BA8459A29A1E30B9h\n\u002BRWD32  \tdq\t4AF112F67A46A038h, 11ACB336D07C21AAh\n \n \n ; Total bytes of code 2496, prolog size 53, PerfScore 531.33, instruction count 524, allocated bytes for code 2498 (MethodHash=e48b570e) for method DotNet.Testcontainers.Clients.TestcontainersClient\u002B\u003CRunAsync\u003Ed__41:MoveNext():this (FullOpts)","Truncated":true,"BaseBytes":2496,"DiffBytes":2496},{"Assembly":"ZstdSharp.dasm","Method":"ZstdSharp.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,ZstdSharp.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)","Category":"same-size","Description":"1,266 -\u003E 1,266 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,500 \u002B1,500 @@\n ; Assembly listing for method ZstdSharp.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,ZstdSharp.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 38 single block inlinees; 15 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T01] ( 18, 11   )    long  -\u003E  rbx         single-def\n ;  V01 arg1         [V01,T04] (  5,  3.50)    long  -\u003E  r14         single-def\n ;  V02 arg2         [V02    ] ( 16,  9.50)  struct (224) [rbp\u002B0x10]  do-not-enreg[XSF] addr-exposed ld-addr-op single-def \u003CZstdSharp.Unsafe.ZSTD_CCtx_params_s\u003E\n ;  V03 arg3         [V03,T05] (  4,  3   )    long  -\u003E  r13         single-def\n ;  V04 arg4         [V04,T02] (  7,  4.50)    long  -\u003E  r15         single-def\n ;  V05 arg5         [V05,T06] (  4,  3   )    long  -\u003E  r12         single-def\n ;  V06 arg6         [V06,T07] (  3,  2.50)     int  -\u003E  [rbp-0x2C]  single-def\n ;* V07 loc0         [V07    ] (  0,  0   )  struct (24) zero-ref    \u003CZstdSharp.Unsafe.ZSTD_customMem\u003E\n ;  V08 loc1         [V08,T24] (  3,  1.50)     int  -\u003E  [rbp-0x30]  spill-single-def\n ;  V09 loc2         [V09,T19] (  4,  2   )    long  -\u003E  [rbp-0x38]  spill-single-def\n ;  V10 loc3         [V10,T25] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def\n ;  V11 loc4         [V11,T39] (  2,  1   )     int  -\u003E  [rbp-0x40]  spill-single-def\n ;  V12 loc5         [V12,T20] (  4,  2   )    long  -\u003E  [rbp-0x48]  spill-single-def\n ;  V13 loc6         [V13,T26] (  3,  1.50)    long  -\u003E  [rbp-0x50]  spill-single-def\n ;# V14 OutArgs      [V14    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V15 tmp1         [V15,T22] (  2,  2   )    long  -\u003E  [rbp-0x58]  spill-single-def \u0022impAppendStmt\u0022\n ;  V16 tmp2         [V16,T23] (  2,  2   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022impAppendStmt\u0022\n ;* V17 tmp3         [V17    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;  V18 tmp4         [V18,T40] (  2,  1   )    long  -\u003E  rax        \n ;  V19 tmp5         [V19,T27] (  3,  1.50)     int  -\u003E  rcx        \n ;  V20 tmp6         [V20,T41] (  2,  1   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022Inline return value spill temp\u0022\n ;* V21 tmp7         [V21    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CZstdSharp.Unsafe.ldmParams_t\u003E\n ;* V22 tmp8         [V22    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V23 tmp9         [V23    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V24 tmp10        [V24,T12] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V25 tmp11        [V25    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline stloc first use temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V26 tmp12        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V27 tmp13        [V27    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V28 tmp14        [V28    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V29 tmp15        [V29    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V30 tmp16        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V31 tmp17        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V32 tmp18        [V32,T13] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V33 tmp19        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022Inline stloc first use temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V34 tmp20        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V35 tmp21        [V35    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V36 tmp22        [V36    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V37 tmp23        [V37    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V38 tmp24        [V38    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V39 tmp25        [V39,T14] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V40 tmp26        [V40    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003CZstdSharp.Unsafe.ZSTD_window_t\u003E\n ;* V41 tmp27        [V41    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V42 tmp28        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V43 tmp29        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V44 tmp30        [V44    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V45 tmp31        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V46 tmp32        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V47 tmp33        [V47    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V48 tmp34        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V49 tmp35        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V50 tmp36        [V50,T09] (  4,  4   )    long  -\u003E  rsi         \u0022Inlining Arg\u0022\n ;* V51 tmp37        [V51    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V52 tmp38        [V52,T28] (  3,  1.50)    long  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V53 tmp39        [V53    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V54 tmp40        [V54,T10] (  4,  4   )    long  -\u003E  rsi         \u0022Inlining Arg\u0022\n ;* V55 tmp41        [V55    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V56 tmp42        [V56,T29] (  3,  1.50)    long  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V57 tmp43        [V57    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V58 tmp44        [V58    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V59 tmp45        [V59    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V60 tmp46        [V60    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V61 tmp47        [V61    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V62 tmp48        [V62    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V63 tmp49        [V63    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V64 tmp50        [V64    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V65 tmp51        [V65,T00] ( 18, 18   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V66 tmp52        [V66,T30] (  3,  1.50)    long  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;  V67 tmp53        [V67,T31] (  3,  1.50)    long  -\u003E  r12         \u0022Inline stloc first use temp\u0022\n ;  V68 tmp54        [V68,T42] (  2,  1   )     int  -\u003E  rsi        \n ;* V69 tmp55        [V69    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V70 tmp56        [V70,T11] (  3,  4   )     int  -\u003E  rax         \u0022Single return block return value\u0022\n ;  V71 FramesRoot   [V71,T03] ( 10,  6   )    long  -\u003E  [rbp-0x70]  spill-single-def \u0022Pinvoke FrameListRoot\u0022\n ;  V72 PInvokeFrame [V72    ] ( 12,  8   )  struct (56) [rbp-0xA8]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;  V73 tmp59        [V73,T15] (  5,  2.50)    long  -\u003E  [rbp-0xB0]  spill-single-def \u0022field V07.customAlloc (fldOffset=0x0)\u0022 P-INDEP\n ;  V74 tmp60        [V74,T16] (  5,  2.50)    long  -\u003E  [rbp-0xB8]  spill-single-def \u0022field V07.customFree (fldOffset=0x8)\u0022 P-INDEP\n ;  V75 tmp61        [V75,T17] (  5,  2.50)    long  -\u003E  [rbp-0xC0]  spill-single-def \u0022field V07.opaque (fldOffset=0x10)\u0022 P-INDEP\n ;* V76 tmp62        [V76    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V25._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V77 tmp63        [V77    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V26._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V78 tmp64        [V78    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V33._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V79 tmp65        [V79    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V34._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V80 tmp66        [V80    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V41._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V81 tmp67        [V81    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V41._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V82 tmp68        [V82    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V42._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V83 tmp69        [V83    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V42._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V84 tmp70        [V84    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V43._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V85 tmp71        [V85    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V43._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V86 tmp72        [V86    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V44._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V87 tmp73        [V87    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V44._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V88 tmp74        [V88    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V45._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V89 tmp75        [V89    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V45._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V90 tmp76        [V90    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V46._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V91 tmp77        [V91    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V46._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V92 tmp78        [V92    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V47._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V93 tmp79        [V93    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V47._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V94 tmp80        [V94    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V48._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V95 tmp81        [V95    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V48._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V96 tmp82        [V96    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V49._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V97 tmp83        [V97    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V49._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V98 tmp84        [V98,T44] (  0,  0   )     int  -\u003E  zero-ref    \u0022V21.[000..004)\u0022\n ;  V99 tmp85        [V99,T43] (  2,  1   )     int  -\u003E  rax         \u0022V21.[012..016)\u0022\n ;* V100 tmp86       [V100    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V40.[000..008)\u0022\n ;* V101 tmp87       [V101    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V40.[008..016)\u0022\n ;* V102 tmp88       [V102    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V40.[016..024)\u0022\n ;* V103 tmp89       [V103    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V40.[024..028)\u0022\n ;* V104 tmp90       [V104    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V40.[028..032)\u0022\n ;* V105 tmp91       [V105    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V40.[032..036)\u0022\n ;* V106 tmp92       [V106    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V107 tmp93       [V107    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V108 tmp94       [V108    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;  V109 cse0        [V109,T32] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #13: moderate\u0022\n ;  V110 cse1        [V110,T21] (  4,  2   )    long  -\u003E  rcx         \u0022CSE #11: moderate\u0022\n ;  V111 cse2        [V111,T33] (  3,  1.50)     int  -\u003E  rsi         \u0022CSE #12: moderate\u0022\n ;  V112 cse3        [V112,T34] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #03: moderate\u0022\n ;  V113 cse4        [V113,T35] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #05: moderate\u0022\n ;  V114 cse5        [V114,T36] (  3,  1.50)    long  -\u003E  rdi         \u0022CSE #06: moderate\u0022\n ;  V115 cse6        [V115,T37] (  3,  1.50)    long  -\u003E  [rbp-0xC8]  spill-single-def \u0022CSE #07: moderate\u0022\n ;  V116 cse7        [V116,T38] (  3,  1.50)     int  -\u003E  rcx         \u0022CSE #09: moderate\u0022\n ;  V117 cse8        [V117,T08] (  8,  4   )    long  -\u003E  r14         \u0022CSE #04: moderate\u0022\n ;  V118 cse9        [V118,T18] (  5,  2.50)    long  -\u003E  r12         \u0022CSE #10: moderate\u0022\n ;\n ; Lcl frame size = 168\n \n G_M47366_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 168\n        lea      rbp, [rsp\u002B0xD0]\n        mov      dword ptr [rbp-0x2C], r9d\n        mov      rbx, rdi\n        mov      r14, rsi\n        mov      r13, rdx\n        mov      r15, rcx\n        mov      r12, r8\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 9.00\n G_M47366_IG02:\n        lea      rdi, [rbp-0xA8]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      qword ptr [rbp-0x70], rax\n        mov      rdi, rsp\n        mov      qword ptr [rbp-0x90], rdi\n        mov      rdi, rbp\n        mov      qword ptr [rbp-0x80], rdi\n        cmp      dword ptr [rbp\u002B0x70], 1\n        je       SHORT G_M47366_IG04\n \t\t\t\t\t\t;; size=39 bbWeight=1 PerfScore 7.00\n G_M47366_IG03:\n        vxorps   xmm0, xmm0, xmm0\n        vmovdqu  xmmword ptr [rbp\u002B0x70], xmm0\n        vmovdqu  xmmword ptr [rbp\u002B0x78], xmm0\n        jmp      SHORT G_M47366_IG05\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 2.17\n G_M47366_IG04:\n        lea      rdi, [rbp\u002B0x70]\n        lea      rsi, [rbp\u002B0x14]\n        mov      rcx, 0xD1FFAB1E      ; code for ZstdSharp.Unsafe.Methods:ZSTD_ldm_adjustParameters(ptr,ptr)\n        call     [rcx]ZstdSharp.Unsafe.Methods:ZSTD_ldm_adjustParameters(ptr,ptr)\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.12\n G_M47366_IG05:\n        cmp      byte  ptr [rbx], bl\n        xor      edi, edi\n        mov      dword ptr [rbx\u002B0x0988], edi\n        cmp      dword ptr [rbp\u002B0x34], 0\n        je       SHORT G_M47366_IG07\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 5.25\n G_M47366_IG06:\n        lea      rdi, [rbx\u002B0x0930]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for ZstdSharp.Unsafe.Methods:ZSTD_XXH64_reset(ptr,ulong):int\n        call     [rax]ZstdSharp.Unsafe.Methods:ZSTD_XXH64_reset(ptr,ulong):int\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG07:\n        cmp      dword ptr [rbp\u002B0x70], 1\n        jne      G_M47366_IG34\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 2.00\n G_M47366_IG08:\n        mov      rcx, qword ptr [rbp\u002B0xB8]\n        mov      qword ptr [rbp-0xB0], rcx\n        mov      rsi, qword ptr [rbp\u002B0xC0]\n        mov      qword ptr [rbp-0xB8], rsi\n        mov      r8, qword ptr [rbp\u002B0xC8]\n        mov      qword ptr [rbp-0xC0], r8\n        mov      r9d, dword ptr [rbp\u002B0x74]\n        mov      dword ptr [rbp-0x30], r9d\n        mov      eax, 1\n        shlx     r10, rax, r9\n        shl      r10, 3\n        mov      qword ptr [rbp-0x38], r10\n        mov      r11d, dword ptr [rbp\u002B0x74]\n        sub      r11d, dword ptr [rbp\u002B0x78]\n        mov      dword ptr [rbp-0x3C], r11d\n        mov      edi, dword ptr [rbx\u002B0x74]\n        sub      edi, dword ptr [rbx\u002B0x78]\n        mov      dword ptr [rbp-0x40], edi\n        shlx     rdx, rax, r11\n        mov      qword ptr [rbp-0x48], rdx\n        mov      eax, dword ptr [rbp\u002B0x7C]\n        mov      edi, eax\n        mov      rax, r13\n        xor      edx, edx\n        div      rdx:rax, rdi\n        mov      qword ptr [rbp-0x68], rax\n        mov      rdi, qword ptr [r14]\n        test     rdi, rdi\n        je       G_M47366_IG37\n        and      rdi, -2\n        mov      rdi, gword ptr [rdi]\n        mov      rdx, 0xD1FFAB1E      ; code for System.Threading.Monitor:Enter(System.Object)\n        call     [rdx]System.Threading.Monitor:Enter(System.Object)\n        mov      rdi, qword ptr [rbp-0x68]\n        lea      rdi, [rdi\u002B2*rdi]\n        shl      rdi, 2\n        mov      qword ptr [r14\u002B0x08], rdi\n        mov      rdi, qword ptr [r14]\n        test     rdi, rdi\n        je       G_M47366_IG37\n        and      rdi, -2\n        mov      rdi, gword ptr [rdi]\n        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Monitor:Exit(System.Object)\n        call     [rax]System.Threading.Monitor:Exit(System.Object)\n        lea      r14, [rbx\u002B0xF0]\n        mov      rdi, r14\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [rdi], ymm0\n        xor      eax, eax\n        mov      dword ptr [rdi\u002B0x20], eax\n        mov      rsi, qword ptr [rbx\u002B0x118]\n        test     rsi, rsi\n        je       SHORT G_M47366_IG09\n        mov      edi, dword ptr [rbp-0x30]\n        cmp      dword ptr [rbx\u002B0x74], edi\n        jae      G_M47366_IG18\n \t\t\t\t\t\t;; size=244 bbWeight=0.50 PerfScore 58.12\n G_M47366_IG09:\n        test     rsi, rsi\n        je       G_M47366_IG15\n        cmp      qword ptr [rbp-0xB8], 0\n        jne      SHORT G_M47366_IG14\n        mov      rdi, rsi\n        mov      rcx, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x98], rcx\n        lea      rcx, G_M47366_IG12\n        mov      qword ptr [rbp-0x88], rcx\n        lea      rcx, [rbp-0xA8]\n        mov      rdx, qword ptr [rbp-0x70]\n        mov      qword ptr [rdx\u002B0x08], rcx\n        mov      byte  ptr [rdx\u002B0x04], 0\n \t\t\t\t\t\t;; size=72 bbWeight=0.50 PerfScore 5.12\n G_M47366_IG10:\n        mov      rcx, 0xD1FFAB1E      ; function address\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M47366_IG11:\n        vzeroupper \n        call     rcx ; Interop\u002BSys:Free(ptr)\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG12:\n        mov      rax, qword ptr [rbp-0x70]\n        mov      byte  ptr [rax\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M47366_IG13\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=35 bbWeight=0.50 PerfScore 4.25\n G_M47366_IG13:\n        mov      rdi, qword ptr [rbp-0xA0]\n        mov      qword ptr [rax\u002B0x08], rdi\n        jmp      SHORT G_M47366_IG15\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG14:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rax, qword ptr [rbp-0xB8]\n        call     rax\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 2.50\n G_M47366_IG15:\n        mov      qword ptr [rbp-0x58], r14\n        cmp      qword ptr [rbp-0xB0], 0\n        jne      SHORT G_M47366_IG16\n        mov      rdi, qword ptr [rbp-0x38]\n        mov      rdx, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        call     [rdx]System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        jmp      SHORT G_M47366_IG17\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M47366_IG16:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rsi, qword ptr [rbp-0x38]\n        mov      rcx, qword ptr [rbp-0xB0]\n        call     rcx\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.00\n G_M47366_IG17:\n        mov      rdi, qword ptr [rbp-0x58]\n        mov      qword ptr [rdi\u002B0x28], rax\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.00\n G_M47366_IG18:\n        mov      rsi, qword ptr [rbx\u002B0x128]\n        test     rsi, rsi\n        je       SHORT G_M47366_IG19\n        mov      edi, dword ptr [rbp-0x3C]\n        cmp      dword ptr [rbp-0x40], edi\n        jae      G_M47366_IG28\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 3.12\n G_M47366_IG19:\n        test     rsi, rsi\n        je       G_M47366_IG25\n        mov      rax, qword ptr [rbp-0xB8]\n        test     rax, rax\n        jne      SHORT G_M47366_IG24\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x98], rax\n        lea      rax, G_M47366_IG22\n        mov      qword ptr [rbp-0x88], rax\n        lea      rax, [rbp-0xA8]\n        mov      rcx, qword ptr [rbp-0x70]\n        mov      qword ptr [rcx\u002B0x08], rax\n        mov      byte  ptr [rcx\u002B0x04], 0\n \t\t\t\t\t\t;; size=74 bbWeight=0.50 PerfScore 5.25\n G_M47366_IG20:\n        mov      rax, 0xD1FFAB1E      ; function address\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M47366_IG21:\n        vzeroupper \n        call     rax ; Interop\u002BSys:Free(ptr)\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG22:\n        mov      rax, qword ptr [rbp-0x70]\n        mov      byte  ptr [rax\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M47366_IG23\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=35 bbWeight=0.50 PerfScore 4.25\n G_M47366_IG23:\n        mov      rdi, qword ptr [rbp-0xA0]\n        mov      qword ptr [rax\u002B0x08], rdi\n        jmp      SHORT G_M47366_IG25\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG24:\n        mov      rdi, qword ptr [rbp-0xC0]\n        call     rax\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 2.00\n G_M47366_IG25:\n        mov      qword ptr [rbp-0x60], r14\n        mov      rcx, qword ptr [rbp-0xB0]\n        test     rcx, rcx\n        jne      SHORT G_M47366_IG26\n        mov      rdi, qword ptr [rbp-0x48]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        call     [rcx]System.Runtime.InteropServices.NativeMemory:Alloc(nuint):ptr\n        jmp      SHORT G_M47366_IG27\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 4.75\n G_M47366_IG26:\n        mov      rdi, qword ptr [rbp-0xC0]\n        mov      rsi, qword ptr [rbp-0x48]\n        call     rcx\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 2.50\n G_M47366_IG27:\n        mov      rdi, qword ptr [rbp-0x60]\n        mov      qword ptr [rdi\u002B0x38], rax\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.00\n G_M47366_IG28:\n        mov      rdi, qword ptr [rbx\u002B0x118]\n        test     rdi, rdi\n        je       G_M47366_IG35\n        mov      rax, qword ptr [rbx\u002B0x128]\n        mov      qword ptr [rbp-0xC8], rax\n        test     rax, rax\n        je       G_M47366_IG35\n        mov      esi, dword ptr [rbp-0x38]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rcx]CORINFO_HELP_MEMZERO\n        mov      rdi, qword ptr [rbp-0xC8]\n        mov      esi, dword ptr [rbp-0x48]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rax]CORINFO_HELP_MEMZERO\n        xor      edi, edi\n        mov      dword ptr [rbx\u002B0x120], edi\n        test     r12, r12\n        je       G_M47366_IG33\n        cmp      dword ptr [rbp-0x2C], 1\n        jne      G_M47366_IG33\n        add      r12, r15\n        mov      rax, r12\n        mov      qword ptr [rbp-0x50], rax\n        mov      rdi, r14\n        cmp      r15, qword ptr [rdi]\n        je       SHORT G_M47366_IG29\n        mov      rcx, qword ptr [rdi]\n        sub      rcx, qword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [rdi\u002B0x18]\n        mov      dword ptr [rdi\u002B0x1C], esi\n        mov      dword ptr [rdi\u002B0x18], ecx\n        mov      rsi, qword ptr [rdi\u002B0x08]\n        mov      qword ptr [rdi\u002B0x10], rsi\n        mov      rsi, r15\n        sub      rsi, rcx\n        mov      qword ptr [rdi\u002B0x08], rsi\n        mov      ecx, dword ptr [rdi\u002B0x18]\n        mov      esi, ecx\n        sub      esi, dword ptr [rdi\u002B0x1C]\n        cmp      esi, 8\n        jae      SHORT G_M47366_IG29\n        mov      dword ptr [rdi\u002B0x1C], ecx\n \t\t\t\t\t\t;; size=171 bbWeight=0.50 PerfScore 22.62\n G_M47366_IG29:\n        mov      qword ptr [rdi], r12\n        mov      rcx, qword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rdi\u002B0x1C]\n        add      rsi, rcx\n        cmp      rsi, r12\n        jae      SHORT G_M47366_IG30\n        mov      esi, dword ptr [rdi\u002B0x18]\n        mov      edx, esi\n        lea      r8, [rcx\u002Brdx]\n        cmp      r8, r15\n        jbe      SHORT G_M47366_IG30\n        sub      r12, rcx\n        cmp      r12, rdx\n        cmovbe   esi, r12d\n        mov      dword ptr [rdi\u002B0x1C], esi\n \t\t\t\t\t\t;; size=45 bbWeight=0.50 PerfScore 6.25\n G_M47366_IG30:\n        mov      rdi, r14\n        lea      rcx, [rbp\u002B0x70]\n        mov      rsi, r15\n        mov      rdx, rax\n        mov      r8, 0xD1FFAB1E      ; code for ZstdSharp.Unsafe.Methods:ZSTD_ldm_fillHashTable(ptr,ptr,ptr,ptr)\n        call     [r8]ZstdSharp.Unsafe.Methods:ZSTD_ldm_fillHashTable(ptr,ptr,ptr,ptr)\n        mov      rax, r14\n        cmp      dword ptr [rbp\u002B0x40], 0\n        je       SHORT G_M47366_IG31\n        xor      ecx, ecx\n        jmp      SHORT G_M47366_IG32\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.50\n G_M47366_IG31:\n        mov      r15, qword ptr [rbp-0x50]\n        mov      ecx, r15d\n        sub      ecx, dword ptr [rbx\u002B0xF8]\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.62\n G_M47366_IG32:\n        mov      dword ptr [rax\u002B0x30], ecx\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.50\n G_M47366_IG33:\n        vmovdqu  ymm0, ymmword ptr [r14]\n        vmovdqu32 ymmword ptr [rbx\u002B0x09A0], ymm0\n        mov      rax, qword ptr [r14\u002B0x20]\n        mov      qword ptr [rbx\u002B0x09C0], rax\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.50\n G_M47366_IG34:\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x10]\n        vmovdqu32 zmmword ptr [rbx\u002B0x10], zmm0\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x50]\n        vmovdqu32 zmmword ptr [rbx\u002B0x50], zmm0\n        vmovdqu32 zmm0, zmmword ptr [rbp\u002B0x90]\n        vmovdqu32 zmmword ptr [rbx\u002B0x90], zmm0\n        vmovdqu  ymm0, ymmword ptr [rbp\u002B0xD0]\n        vmovdqu  ymmword ptr [rbx\u002B0xD0], ymm0\n        mov      eax, r13d\n        mov      qword ptr [rbx\u002B0x60], rax\n        xor      eax, eax\n        jmp      SHORT G_M47366_IG36\n \t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 10.75\n G_M47366_IG35:\n        mov      eax, 1\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.12\n G_M47366_IG36:\n        vzeroupper \n        add      rsp, 168\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.25\n G_M47366_IG37:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        call     [rax]System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t000074CAD84874CAh, 000074CAD84874C8h, 000074CAD84874C8h, 0000000200000002h\n\u002BRWD00  \tdq\t00007458921A64CAh, 00007458921A64C8h, 00007458921A64C8h, 0000000200000002h\n \n \n ; Total bytes of code 1266, prolog size 25, PerfScore 194.42, instruction count 289, allocated bytes for code 1266 (MethodHash=d59846f9) for method ZstdSharp.Unsafe.Methods:ZSTDMT_serialState_reset(ptr,ptr,ZstdSharp.Unsafe.ZSTD_CCtx_params_s,nuint,ptr,nuint,int):int (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1266,"DiffBytes":1266},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)","Category":"improvement","Description":"1,760 -\u003E 1,598 bytes (-162)","ExtraInfo":null,"Diff":"@@ -1,704 \u002B1,679 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 49 single block inlinees; 21 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 27, 14.50)     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 arg1         [V01,T17] (  4,  4   )     int  -\u003E  rsi         single-def\n\u002B;  V01 arg1         [V01,T18] (  4,  4   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03,T02] ( 26, 13.50)     int  -\u003E  rbx         single-def\n ;  V04 loc1         [V04,T01] ( 27, 14   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMDTokenProvider\u003E\n ;* V05 loc2         [V05    ] (  0,  0   )   ubyte  -\u003E  zero-ref   \n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V07 tmp1         [V07,T47] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V08 tmp2         [V08,T03] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V09 tmp3         [V09,T11] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n-;  V10 tmp4         [V10,T48] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V07 tmp1         [V07,T48] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V08 tmp2         [V08,T05] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp3         [V09,T12] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n\u002B;  V10 tmp4         [V10,T49] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V11 tmp5         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V12 tmp6         [V12,T20] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V13 tmp7         [V13,T60] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp6         [V12,T58] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V13 tmp7         [V13,T67] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V14 tmp8         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V15 tmp9         [V15,T49] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V16 tmp10        [V16,T04] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V17 tmp11        [V17,T12] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V18 tmp12        [V18,T46] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V15 tmp9         [V15,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V16 tmp10        [V16,T06] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V17 tmp11        [V17,T13] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V18 tmp12        [V18,T47] (  5,  2.50)     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V19 tmp13        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V20 tmp14        [V20,T21] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V20 tmp14        [V20,T59] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V21 tmp15        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V22 tmp16        [V22,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V23 tmp17        [V23,T05] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V24 tmp18        [V24,T13] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V25 tmp19        [V25,T51] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V22 tmp16        [V22,T51] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V23 tmp17        [V23,T07] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp18        [V24,T14] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V25 tmp19        [V25,T52] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V26 tmp20        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V27 tmp21        [V27,T22] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V28 tmp22        [V28,T61] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V27 tmp21        [V27,T60] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V28 tmp22        [V28,T68] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V29 tmp23        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V30 tmp24        [V30,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V31 tmp25        [V31,T06] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V32 tmp26        [V32,T14] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V33 tmp27        [V33,T19] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V30 tmp24        [V30,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V31 tmp25        [V31,T08] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V32 tmp26        [V32,T15] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n\u002B;  V33 tmp27        [V33,T20] (  7,  3.50)     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V34 tmp28        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V35 tmp29        [V35,T23] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V36 tmp30        [V36    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V37 tmp31        [V37,T62] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V38 tmp32        [V38,T57] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V35 tmp29        [V35,T61] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V36 tmp30        [V36    ] (  7,  3.50)  struct ( 8) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V37 tmp31        [V37,T69] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V38 tmp32        [V38,T64] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V39 tmp33        [V39    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V40 tmp34        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V41 tmp35        [V41,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V42 tmp36        [V42,T07] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V43 tmp37        [V43,T15] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n-;  V44 tmp38        [V44,T54] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V41 tmp35        [V41,T54] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V42 tmp36        [V42,T04] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V43 tmp37        [V43,T16] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n\u002B;  V44 tmp38        [V44,T55] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V45 tmp39        [V45    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V46 tmp40        [V46,T24] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V46 tmp40        [V46,T62] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V47 tmp41        [V47    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n-;  V48 tmp42        [V48,T44] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n-;  V49 tmp43        [V49,T45] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n-;  V50 tmp44        [V50    ] (  7,  3.50)  struct ( 8) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V51 tmp45        [V51,T59] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V52 tmp46        [V52,T58] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V48 tmp42        [V48,T45] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n\u002B;  V49 tmp43        [V49,T46] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n\u002B;  V50 tmp44        [V50    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V51 tmp45        [V51,T66] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V52 tmp46        [V52,T65] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V53 tmp47        [V53    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V54 tmp48        [V54    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V55 tmp49        [V55,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V56 tmp50        [V56,T08] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n-;  V57 tmp51        [V57,T16] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n-;  V58 tmp52        [V58,T56] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V55 tmp49        [V55,T56] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V56 tmp50        [V56,T09] (  7,  7   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V57 tmp51        [V57,T17] (  6,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n\u002B;  V58 tmp52        [V58,T57] (  4,  2   )     ref  -\u003E  r13         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V59 tmp53        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V60 tmp54        [V60,T25] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V61 tmp55        [V61,T63] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V60 tmp54        [V60,T63] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V61 tmp55        [V61,T70] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V62 tmp56        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V63 tmp57        [V63,T09] (  7,  4   )     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V64 tmp58        [V64,T10] (  7,  4   )     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V65 tmp59        [V65    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V36.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V66 tmp60        [V66    ] (  7,  3.50)     int  -\u003E  [rbp-0x28]  do-not-enreg[X] addr-exposed \u0022field V50.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V67 tmp61        [V67,T26] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V68 tmp62        [V68,T27] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V69 tmp63        [V69,T28] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V70 tmp64        [V70,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V71 tmp65        [V71,T30] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V72 tmp66        [V72,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V73 tmp67        [V73,T32] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V74 tmp68        [V74,T33] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V75 tmp69        [V75,T34] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V76 tmp70        [V76,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp71        [V77,T36] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V78 tmp72        [V78,T37] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V79 rat0         [V79,T18] (  3,  5.96)     int  -\u003E  rsi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V80 rat1         [V80,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V81 rat2         [V81,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V82 rat3         [V82,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V83 rat4         [V83,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V84 rat5         [V84,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V85 rat6         [V85,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V63 tmp57        [V63,T10] (  7,  4   )     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V64 tmp58        [V64,T11] (  7,  4   )     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V65 tmp59        [V65    ] (  7,  3.50)     int  -\u003E  [rbp-0x28]  do-not-enreg[X] addr-exposed \u0022field V36.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V66 tmp60        [V66    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V50.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V67 tmp61        [V67,T21] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V68 tmp62        [V68,T22] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V69 tmp63        [V69,T23] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V70 tmp64        [V70,T24] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp65        [V71,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V72 tmp66        [V72,T26] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V73 tmp67        [V73,T27] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V74 tmp68        [V74,T28] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp69        [V75,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp70        [V76,T30] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp71        [V77,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp72        [V78,T32] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V79 tmp73        [V79,T33] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V80 tmp74        [V80,T34] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V81 tmp75        [V81,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V82 tmp76        [V82,T36] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V83 tmp77        [V83,T37] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V84 tmp78        [V84,T38] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V85 cse0         [V85,T03] ( 25, 12.50)    long  -\u003E  r14         multi-def \u0022CSE #02: aggressive\u0022\n\u002B;  V86 rat0         [V86,T19] (  3,  5.96)     int  -\u003E  rsi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V87 rat1         [V87,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V88 rat2         [V88,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V89 rat3         [V89,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V90 rat4         [V90,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V91 rat5         [V91,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V92 rat6         [V92,T44] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 24\n\u002B; Lcl frame size = 16\n \n G_M52800_IG01:\n        push     rbp\n        push     r15\n        push     r14\n\u002B       push     r13\n        push     rbx\n-       sub      rsp, 24\n\u002B       sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n-       mov      qword ptr [rbp-0x20], rax\n        mov      qword ptr [rbp-0x28], rax\n-\t\t\t\t\t\t;; size=25 bbWeight=1 PerfScore 7.00\n\u002B       mov      qword ptr [rbp-0x30], rax\n\u002B\t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 8.00\n G_M52800_IG02:\n        mov      ebx, esi\n        and      ebx, 0xD1FFAB1E\n        shr      esi, 24\n        movzx    rsi, sil\n        cmp      esi, 44\n        ja       SHORT G_M52800_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 2.50\n G_M52800_IG03:\n        mov      esi, esi\n        lea      rax, [reloc @RWD00]\n        mov      eax, dword ptr [rax\u002B4*rsi]\n        lea      r8, G_M52800_IG02\n        add      rax, r8\n        jmp      rax\n \t\t\t\t\t\t;; size=24 bbWeight=0.98 PerfScore 5.87\n G_M52800_IG04:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG05:\n-       add      rsp, 24\n\u002B       add      rsp, 16\n        pop      rbx\n\u002B       pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n\u002B\t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 3.75\n G_M52800_IG06:\n        mov      r15, gword ptr [rdi\u002B0x210]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG09\n\u002B       jae      SHORT G_M52800_IG09\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG07\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x10]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG08\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG07:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdx\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG10\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG08:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG10\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG10:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG11:\n        mov      r15, gword ptr [rdi\u002B0x208]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n        jae      G_M52800_IG18\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      G_M52800_IG17\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rsi, gword ptr [r14\u002B0x10]\n\u002B       mov      r13, rax\n\u002B       mov      rsi, gword ptr [r13\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M52800_IG14\n-\t\t\t\t\t\t;; size=72 bbWeight=0.50 PerfScore 12.25\n\u002B\t\t\t\t\t\t;; size=73 bbWeight=0.50 PerfScore 12.25\n G_M52800_IG12:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M52800_IG14\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M52800_IG13:\n        jmp      SHORT G_M52800_IG15\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M52800_IG14:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M52800_IG15:\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        test     rsi, rsi\n        je       SHORT G_M52800_IG16\n-       cmp      dword ptr [rbp-0x28], 100\n\u002B       cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M52800_IG16\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n-       lea      rdi, [rbp-0x28]\n\u002B       lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n-       mov      dword ptr [rbp-0x28], edi\n\u002B       mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        je       SHORT G_M52800_IG16\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG19\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M52800_IG16:\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=31 bbWeight=0.50 PerfScore 3.88\n G_M52800_IG17:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG19\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG18:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG19:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG20:\n        mov      rdi, gword ptr [rdi\u002B0x200]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG21:\n        mov      rdi, gword ptr [rdi\u002B0x1F8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG22:\n        mov      rdi, gword ptr [rdi\u002B0x1F0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG23:\n        mov      rdi, gword ptr [rdi\u002B0x1E8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG24:\n        mov      rdi, gword ptr [rdi\u002B0x1E0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG25:\n        mov      rdi, gword ptr [rdi\u002B0x1D8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG26:\n        mov      rdi, gword ptr [rdi\u002B0x1D0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG27:\n        mov      r15, gword ptr [rdi\u002B0x1C8]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n        jae      G_M52800_IG32\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n-       jne      G_M52800_IG30\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n\u002B       jne      SHORT G_M52800_IG30\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       cmp      byte  ptr [r14], r14b\n\u002B       mov      r13, rax\n\u002B       cmp      byte  ptr [r13], r13b\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x20], edi\n-       cmp      dword ptr [rbp-0x20], 100\n\u002B       mov      dword ptr [rbp-0x28], edi\n\u002B       cmp      dword ptr [rbp-0x28], 100\n        jge      SHORT G_M52800_IG29\n-       mov      edi, dword ptr [rbp-0x20]\n\u002B       mov      edi, dword ptr [rbp-0x28]\n        inc      edi\n-       mov      dword ptr [rbp-0x20], edi\n-       cmp      byte  ptr [r14\u002B0x34], 0\n\u002B       mov      dword ptr [rbp-0x28], edi\n\u002B       cmp      byte  ptr [r13\u002B0x34], 0\n        jne      SHORT G_M52800_IG28\n-       mov      rdi, r14\n\u002B       mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n-\t\t\t\t\t\t;; size=107 bbWeight=0.50 PerfScore 17.62\n\u002B\t\t\t\t\t\t;; size=105 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG28:\n-       mov      rsi, gword ptr [r14\u002B0x10]\n-       lea      rdi, [rbp-0x20]\n\u002B       mov      rsi, gword ptr [r13\u002B0x10]\n\u002B       lea      rdi, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n-       mov      edi, dword ptr [rbp-0x20]\n\u002B       mov      edi, dword ptr [rbp-0x28]\n        dec      edi\n-       mov      dword ptr [rbp-0x20], edi\n\u002B       mov      dword ptr [rbp-0x28], edi\n        test     eax, eax\n        jne      SHORT G_M52800_IG31\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M52800_IG29:\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.75\n G_M52800_IG30:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG33\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG31:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG33\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG32:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG33:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG34:\n        mov      rdi, gword ptr [rdi\u002B0x1C0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG35:\n        mov      rdi, gword ptr [rdi\u002B0x1B8]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG36:\n        mov      rdi, gword ptr [rdi\u002B0x1B0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG37:\n        mov      r15, gword ptr [rdi\u002B0x1A8]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG40\n\u002B       jae      SHORT G_M52800_IG40\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG38\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG39\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG38:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      esi, ebx\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG41\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG39:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG41\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG40:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG41:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG42:\n        mov      rdi, gword ptr [rdi\u002B0x1A0]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG43:\n        mov      rdi, gword ptr [rdi\u002B0x198]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG44:\n        mov      rdi, gword ptr [rdi\u002B0x190]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG45:\n        mov      r15, gword ptr [rdi\u002B0x188]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG48\n\u002B       jae      SHORT G_M52800_IG48\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG46\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       cmp      byte  ptr [r14], r14b\n-       mov      rdi, r14\n\u002B       mov      r13, rax\n\u002B       cmp      byte  ptr [r13], r13b\n\u002B       mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG47\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=131 bbWeight=0.50 PerfScore 18.38\n\u002B\t\t\t\t\t\t;; size=107 bbWeight=0.50 PerfScore 17.75\n G_M52800_IG46:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdx\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG49\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG47:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG49\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG48:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG49:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG50:\n        mov      r15, gword ptr [rdi\u002B0x180]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M52800_IG53\n\u002B       jae      SHORT G_M52800_IG53\n        mov      rsi, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      edi, ebx\n-       cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n\u002B       jae      G_M52800_IG61\n\u002B       mov      r14d, ebx\n\u002B       cmp      qword ptr [rsi\u002B8*r14\u002B0x10], 0\n        jne      SHORT G_M52800_IG51\n        mov      rax, gword ptr [r15\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n-       mov      r14, rax\n-       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       mov      r13, rax\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M52800_IG52\n        mov      rdi, gword ptr [r15\u002B0x08]\n-       mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M52800_IG61\n-       mov      rdi, rax\n-       mov      rsi, r14\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r14\u002B0x10]\n\u002B       mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=0.50 PerfScore 18.25\n\u002B\t\t\t\t\t\t;; size=104 bbWeight=0.50 PerfScore 17.62\n G_M52800_IG51:\n-       mov      rax, gword ptr [r15\u002B0x08]\n-       cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      G_M52800_IG62\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r15\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M52800_IG61\n\u002B       mov      rax, gword ptr [rdi\u002B8*r14\u002B0x10]\n        jmp      SHORT G_M52800_IG54\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.50\n G_M52800_IG52:\n-       mov      rax, r14\n\u002B       mov      rax, r13\n        jmp      SHORT G_M52800_IG54\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52800_IG53:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52800_IG54:\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M52800_IG55:\n        mov      rdi, gword ptr [rdi\u002B0x178]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG56:\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG57:\n        mov      rdi, gword ptr [rdi\u002B0x168]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG58:\n        mov      rdi, gword ptr [rdi\u002B0x160]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG59:\n        mov      rdi, gword ptr [rdi\u002B0x158]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG60:\n        mov      rdi, gword ptr [rdi\u002B0x150]\n        lea      esi, [rbx-0x01]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M52800_IG05\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 4.88\n G_M52800_IG61:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M52800_IG62:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M52800_IG60 - G_M52800_IG02\n        \tdd\tG_M52800_IG59 - G_M52800_IG02\n        \tdd\tG_M52800_IG58 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG57 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG56 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG55 - G_M52800_IG02\n        \tdd\tG_M52800_IG50 - G_M52800_IG02\n        \tdd\tG_M52800_IG45 - G_M52800_IG02\n        \tdd\tG_M52800_IG44 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG43 - G_M52800_IG02\n        \tdd\tG_M52800_IG42 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG37 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG36 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG35 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG34 - G_M52800_IG02\n        \tdd\tG_M52800_IG27 - G_M52800_IG02\n        \tdd\tG_M52800_IG26 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG25 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG24 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG23 - G_M52800_IG02\n        \tdd\tG_M52800_IG22 - G_M52800_IG02\n        \tdd\tG_M52800_IG21 - G_M52800_IG02\n        \tdd\tG_M52800_IG04 - G_M52800_IG02\n        \tdd\tG_M52800_IG20 - G_M52800_IG02\n        \tdd\tG_M52800_IG11 - G_M52800_IG02\n        \tdd\tG_M52800_IG06 - G_M52800_IG02\n \n \n-; Total bytes of code 1760, prolog size 25, PerfScore 278.12, instruction count 432, allocated bytes for code 1760 (MethodHash=6ec631bf) for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n\u002B; Total bytes of code 1598, prolog size 27, PerfScore 275.24, instruction count 402, allocated bytes for code 1598 (MethodHash=6ec631bf) for method dnlib.DotNet.ModuleDefMD:ResolveToken(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMDTokenProvider:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1760,"DiffBytes":1598},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M57033_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M57033_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M57033_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M57033_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M57033_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M57033_IG04:\n        cmp      r15d, 1\n        jne      G_M57033_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M57033_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M57033_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M57033_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M57033_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M57033_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M57033_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M57033_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M57033_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M57033_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57033_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M57033_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=5ee62136) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=5ee62136) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"SharpCompress.dasm","Method":"SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_resetCCtx_internal(ptr,ptr,ulong,nuint,int,int):nuint (FullOpts)","Category":"same-size","Description":"14,418 -\u003E 14,418 bytes (0)","ExtraInfo":null,"Diff":"@@ -4534,7 \u002B4534,7 @@ G_M3166_IG261:\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007B8D86454D7Ah, 00007B8D86454D78h, 00007B8D86454D78h, 0000000200000002h\n\u002BRWD00  \tdq\t00007E903F1FBD7Ah, 00007E903F1FBD78h, 00007E903F1FBD78h, 0000000200000002h\n \n \n ; Total bytes of code 14418, prolog size 25, PerfScore 897.54, instruction count 2989, allocated bytes for code 14418 (MethodHash=e940f3a1) for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_resetCCtx_internal(ptr,ptr,ulong,nuint,int,int):nuint (FullOpts)","Truncated":true,"BaseBytes":14418,"DiffBytes":14418},{"Assembly":"Silk.NET.Assimp.dasm","Method":"Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)","Category":"same-size","Description":"1,423 -\u003E 1,423 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,815 \u002B1,815 @@\n ; Assembly listing for method Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 88 single block inlinees; 22 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T13] (  3,  3   )    long  -\u003E  r14         single-def\n ;  V01 arg1         [V01,T01] (  5,  8   )    long  -\u003E  rbx         single-def\n ;  V02 arg2         [V02,T02] (  5,  8   )    long  -\u003E  r15         single-def\n ;  V03 loc0         [V03,T36] (  2,  2   )     ref  -\u003E  [rbp-0xA8]  class-hnd exact spill-single-def ptr \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V04 loc1         [V04,T00] ( 23, 38.50)     int  -\u003E  r13        \n ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Span\u00601[byte]\u003E\n ;* V06 loc3         [V06    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    \u003CSystem.Span\u00601[char]\u003E\n ;* V08 loc5         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Span\u00601[byte]\u003E\n ;  V09 loc6         [V09,T20] (  4,  3   )   ubyte  -\u003E  rbx         single-def\n ;  V10 loc7         [V10,T30] (  3,  2   )   ubyte  -\u003E  r14         single-def\n ;  V11 loc8         [V11,T31] (  3,  2   )   ubyte  -\u003E  r12         single-def\n ;  V12 loc9         [V12,T17] (  5,  3.50)   ubyte  -\u003E  r15         single-def\n ;* V13 loc10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V14 loc11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;  V15 loc12        [V15,T16] (  5,  3.50)     ref  -\u003E  r14         class-hnd single-def \u003CSystem.IO.Stream\u003E\n ;* V16 loc13        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;  V17 loc14        [V17,T25] (  5,  2.50)    long  -\u003E  r15         single-def\n ;* V18 loc15        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V19 loc16        [V19    ] (  0,  0   )  struct (16) zero-ref    \u003CSystem.Span\u00601[char]\u003E\n ;* V20 loc17        [V20    ] (  0,  0   )     int  -\u003E  zero-ref    single-def\n ;* V21 loc18        [V21    ] (  0,  0   )  struct (56) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSilk.NET.Assimp.File\u003E\n ;  V22 OutArgs      [V22    ] (  1,  1   )  struct (16) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;  V23 tmp1         [V23,T03] (  4,  7   )     ref  -\u003E  r14         single-def \u0022ISINST eval op1\u0022\n ;* V24 tmp2         [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022spilling qmarkNull\u0022 \u003CSilk.NET.Assimp.CustomFileIO\u003E\n ;  V25 tmp3         [V25,T23] (  2,  3   )     ref  -\u003E  [rbp-0xB0]  class-hnd exact spill-single-def ptr \u0022impAppendStmt\u0022 \u003CSystem.Text.UTF8Encoding\u002BUTF8EncodingSealed\u003E\n ;* V26 tmp4         [V26    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V27 tmp5         [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V28 tmp6         [V28,T24] (  2,  3   )     ref  -\u003E  r12         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003CSystem.Text.UTF8Encoding\u002BUTF8EncodingSealed\u003E\n ;* V29 tmp7         [V29    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V30 tmp8         [V30,T32] (  3,  2   )     int  -\u003E  r14        \n ;  V31 tmp9         [V31,T33] (  3,  2   )     int  -\u003E  r12        \n ;  V32 tmp10        [V32,T34] (  3,  2   )     int  -\u003E  rax        \n ;  V33 tmp11        [V33,T26] (  4,  2.50)     int  -\u003E  rcx        \n ;  V34 tmp12        [V34,T27] (  4,  2.50)     int  -\u003E   r8        \n ;  V35 tmp13        [V35,T08] (  3,  6   )     ref  -\u003E  rax         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003CSilk.NET.Assimp.OpenFileCustomIOCallback\u003E\n ;* V36 tmp14        [V36    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[char]\u003E\n ;  V37 tmp15        [V37,T43] (  3,  0   )     ref  -\u003E  r15         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;  V38 tmp16        [V38,T44] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V39 tmp17        [V39,T45] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n ;  V40 tmp18        [V40,T21] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;  V41 tmp19        [V41,T46] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.InvalidOperationException\u003E\n ;  V42 tmp20        [V42,T09] (  3,  6   )    long  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;* V43 tmp21        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V44 tmp22        [V44    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022dup spill\u0022\n ;* V45 tmp23        [V45    ] (  0,  0   )    long  -\u003E  zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022\n ;* V46 tmp24        [V46    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V47 tmp25        [V47    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V48 tmp26        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V49 tmp27        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V50 tmp28        [V50    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V51 tmp29        [V51    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V52 tmp30        [V52    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;* V53 tmp31        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V54 tmp32        [V54    ] (  2,  2   )   byref  -\u003E  [rbp-0x38]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V55 tmp33        [V55    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V56 tmp34        [V56    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V57 tmp35        [V57    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V58 tmp36        [V58    ] (  0,  0   )     int  -\u003E  zero-ref    ld-addr-op single-def \u0022Inline ldloca(s) first use temp\u0022\n ;  V59 tmp37        [V59,T11] (  9,  5.50)     int  -\u003E  [rbp-0x3C]  ptr \u0022Inline stloc first use temp\u0022\n ;  V60 tmp38        [V60    ] (  2,  2   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;  V61 tmp39        [V61    ] (  1,  1   )     int  -\u003E  [rbp-0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022\n ;  V62 tmp40        [V62,T18] (  4,  3.50)     int  -\u003E  rcx         single-def \u0022Inline stloc first use temp\u0022\n ;* V63 tmp41        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V64 tmp42        [V64,T37] (  2,  2   )    long  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V65 tmp43        [V65    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V66 tmp44        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V67 tmp45        [V67    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V68 tmp46        [V68    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V69 tmp47        [V69    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;* V70 tmp48        [V70    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V71 tmp49        [V71    ] (  2,  2   )   byref  -\u003E  [rbp-0x58]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V72 tmp50        [V72    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V73 tmp51        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;  V74 tmp52        [V74    ] (  2,  2   )   byref  -\u003E  [rbp-0x60]  do-not-enreg[] must-init pinned ptr \u0022Inline stloc first use temp\u0022\n ;* V75 tmp53        [V75    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022Inline stloc first use temp\u0022\n ;* V76 tmp54        [V76    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V77 tmp55        [V77    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;* V78 tmp56        [V78    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V79 tmp57        [V79    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V80 tmp58        [V80    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V81 tmp59        [V81,T28] (  3,  2.50)     int  -\u003E   r9         ld-addr-op single-def \u0022Inline ldloca(s) first use temp\u0022\n ;  V82 tmp60        [V82,T39] (  2,  1.50)     int  -\u003E  rdi         single-def \u0022Inline stloc first use temp\u0022\n ;  V83 tmp61        [V83    ] (  2,  2   )    long  -\u003E  [rbp-0x68]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;  V84 tmp62        [V84    ] (  2,  2   )    long  -\u003E  [rbp-0x70]  do-not-enreg[X] must-init addr-exposed ld-addr-op ptr \u0022Inline ldloca(s) first use temp\u0022\n ;* V85 tmp63        [V85    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V86 tmp64        [V86    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V87 tmp65        [V87    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V88 tmp66        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V89 tmp67        [V89    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V90 tmp68        [V90    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V91 tmp69        [V91    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V92 tmp70        [V92    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V93 tmp71        [V93    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V94 tmp72        [V94    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V95 tmp73        [V95    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V96 tmp74        [V96    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V97 tmp75        [V97    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V98 tmp76        [V98    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V99 tmp77        [V99    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V100 tmp78       [V100    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V101 tmp79       [V101    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V102 tmp80       [V102    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V103 tmp81       [V103    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V104 tmp82       [V104    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V105 tmp83       [V105    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V106 tmp84       [V106    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V107 tmp85       [V107    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V108 tmp86       [V108    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V109 tmp87       [V109    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V110 tmp88       [V110    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V111 tmp89       [V111    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V112 tmp90       [V112    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V113 tmp91       [V113    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V114 tmp92       [V114    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V115 tmp93       [V115    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V116 tmp94       [V116    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V117 tmp95       [V117    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V118 tmp96       [V118    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V119 tmp97       [V119    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V120 tmp98       [V120    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V121 tmp99       [V121    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V122 tmp100      [V122    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V123 tmp101      [V123    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V124 tmp102      [V124    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V125 tmp103      [V125    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V126 tmp104      [V126    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V127 tmp105      [V127    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V128 tmp106      [V128    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V129 tmp107      [V129    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V130 tmp108      [V130    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V131 tmp109      [V131    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V132 tmp110      [V132    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V133 tmp111      [V133    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V134 tmp112      [V134    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V135 tmp113      [V135    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V136 tmp114      [V136    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V137 tmp115      [V137    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V138 tmp116      [V138    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V139 tmp117      [V139    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V140 tmp118      [V140    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V141 tmp119      [V141    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V142 tmp120      [V142    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V143 tmp121      [V143    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V144 tmp122      [V144    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V145 tmp123      [V145    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V146 tmp124      [V146    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V147 tmp125      [V147    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V148 tmp126      [V148    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V149 tmp127      [V149    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V150 tmp128      [V150    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V151 tmp129      [V151    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V152 tmp130      [V152    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V153 tmp131      [V153    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V154 tmp132      [V154    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V155 tmp133      [V155    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V156 tmp134      [V156    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V157 tmp135      [V157    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V158 tmp136      [V158    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V159 tmp137      [V159    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V160 tmp138      [V160    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V161 tmp139      [V161    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V162 tmp140      [V162    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V163 tmp141      [V163    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V164 tmp142      [V164    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V165 tmp143      [V165    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[byte]\u003E\n ;* V166 tmp144      [V166    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V167 tmp145      [V167    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V168 tmp146      [V168    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V169 tmp147      [V169    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V170 tmp148      [V170    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V171 tmp149      [V171    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V172 tmp150      [V172    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V173 tmp151      [V173    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V174 tmp152      [V174    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V175 tmp153      [V175    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V176 tmp154      [V176    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.Span\u00601[char]\u003E\n ;* V177 tmp155      [V177    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[char]\u003E\n ;* V178 tmp156      [V178    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022Inlining Arg\u0022\n ;* V179 tmp157      [V179    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V180 tmp158      [V180    ] (  3,  3   )  struct ( 8) [rbp-0x78]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V181 tmp159      [V181    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileReadProc\u003E\n ;* V182 tmp160      [V182    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileReadProc\u003E\n ;* V183 tmp161      [V183    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileTellProc\u003E\n ;* V184 tmp162      [V184    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileTellProc\u003E\n ;* V185 tmp163      [V185    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileFlushProc\u003E\n ;* V186 tmp164      [V186    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSilk.NET.Assimp.PfnFileSeek\u003E\n ;* V187 tmp165      [V187    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Runtime.InteropServices.GCHandle\u003E\n ;* V188 tmp166      [V188    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V189 tmp167      [V189,T15] (  3,  4   )    long  -\u003E  r15         \u0022Single return block return value\u0022\n ;  V190 tmp168      [V190    ] (  3,  3   )  struct (16) [rbp-0x88]  do-not-enreg[XS] must-init addr-exposed \u0022Reverse Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;  V191 tmp169      [V191,T12] (  5,  5   )   byref  -\u003E  rbx         single-def \u0022field V05._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V192 tmp170      [V192    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V193 tmp171      [V193,T14] (  4,  4   )   byref  -\u003E  [rbp-0xB8]  spill-single-def ptr \u0022field V07._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V194 tmp172      [V194,T19] (  4,  3.50)     int  -\u003E  [rbp-0x8C]  spill-single-def ptr \u0022field V07._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V195 tmp173      [V195,T07] (  8,  6.50)   byref  -\u003E  r15         single-def \u0022field V08._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V196 tmp174      [V196    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V08._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V197 tmp175      [V197,T38] (  3,  1.50)    long  -\u003E  rbx         single-def \u0022field V16._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V198 tmp176      [V198    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V18._handle (fldOffset=0x0)\u0022 P-INDEP\n ;  V199 tmp177      [V199,T29] (  3,  2   )   byref  -\u003E  rax         \u0022field V19._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V200 tmp178      [V200,T35] (  3,  2   )     int  -\u003E  registers   ptr \u0022field V19._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V201 tmp179      [V201    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V26._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V202 tmp180      [V202    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V26._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V203 tmp181      [V203,T40] (  2,  1   )   byref  -\u003E  rax         single-def \u0022field V27._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V204 tmp182      [V204    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V27._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V205 tmp183      [V205    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V29._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V206 tmp184      [V206    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V29._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V207 tmp185      [V207    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V36._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V208 tmp186      [V208    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V36._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V209 tmp187      [V209    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V43._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V210 tmp188      [V210    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V48._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V211 tmp189      [V211    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V48._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V212 tmp190      [V212    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V49._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V213 tmp191      [V213    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V49._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V214 tmp192      [V214    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V53._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V215 tmp193      [V215    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V53._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V216 tmp194      [V216    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V56._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V217 tmp195      [V217    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V56._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V218 tmp196      [V218,T41] (  2,  1   )   byref  -\u003E   r8         single-def \u0022field V63._reference (fldOffset=0x0)\u0022 P-INDEP\n ;  V219 tmp197      [V219,T42] (  2,  1   )     int  -\u003E  rcx         single-def \u0022field V63._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V220 tmp198      [V220    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V65._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V221 tmp199      [V221    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V65._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V222 tmp200      [V222    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V66._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V223 tmp201      [V223    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V66._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V224 tmp202      [V224    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V70._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V225 tmp203      [V225    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V70._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V226 tmp204      [V226    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V73._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V227 tmp205      [V227    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V73._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V228 tmp206      [V228    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V76._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V229 tmp207      [V229    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V76._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V230 tmp208      [V230    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V77._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V231 tmp209      [V231    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V77._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V232 tmp210      [V232    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V85._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V233 tmp211      [V233    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V85._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V234 tmp212      [V234    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V86._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V235 tmp213      [V235    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V86._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V236 tmp214      [V236    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V87._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V237 tmp215      [V237    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V87._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V238 tmp216      [V238    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V88._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V239 tmp217      [V239    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V88._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V240 tmp218      [V240    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V92._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V241 tmp219      [V241    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V92._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V242 tmp220      [V242    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V93._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V243 tmp221      [V243    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V93._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V244 tmp222      [V244    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V97._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V245 tmp223      [V245    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V97._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V246 tmp224      [V246    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V98._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V247 tmp225      [V247    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V98._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V248 tmp226      [V248    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V99._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V249 tmp227      [V249    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V99._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V250 tmp228      [V250    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V100._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V251 tmp229      [V251    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V100._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V252 tmp230      [V252    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V101._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V253 tmp231      [V253    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V101._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V254 tmp232      [V254    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V105._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V255 tmp233      [V255    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V105._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V256 tmp234      [V256    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V106._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V257 tmp235      [V257    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V106._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V258 tmp236      [V258    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V110._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V259 tmp237      [V259    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V110._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V260 tmp238      [V260    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V111._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V261 tmp239      [V261    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V111._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V262 tmp240      [V262    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V112._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V263 tmp241      [V263    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V112._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V264 tmp242      [V264    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V113._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V265 tmp243      [V265    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V113._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V266 tmp244      [V266    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V114._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V267 tmp245      [V267    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V114._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V268 tmp246      [V268    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V118._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V269 tmp247      [V269    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V118._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V270 tmp248      [V270    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V119._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V271 tmp249      [V271    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V119._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V272 tmp250      [V272    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V123._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V273 tmp251      [V273    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V123._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V274 tmp252      [V274    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V124._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V275 tmp253      [V275    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V124._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V276 tmp254      [V276    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V125._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V277 tmp255      [V277    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V125._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V278 tmp256      [V278    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V126._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V279 tmp257      [V279    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V126._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V280 tmp258      [V280    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V127._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V281 tmp259      [V281    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V127._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V282 tmp260      [V282    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V131._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V283 tmp261      [V283    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V131._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V284 tmp262      [V284    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V132._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V285 tmp263      [V285    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V132._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V286 tmp264      [V286    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V136._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V287 tmp265      [V287    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V136._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V288 tmp266      [V288    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V137._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V289 tmp267      [V289    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V137._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V290 tmp268      [V290    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V138._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V291 tmp269      [V291    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V138._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V292 tmp270      [V292    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V139._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V293 tmp271      [V293    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V139._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V294 tmp272      [V294    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V140._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V295 tmp273      [V295    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V140._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V296 tmp274      [V296    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V144._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V297 tmp275      [V297    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V144._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V298 tmp276      [V298    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V145._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V299 tmp277      [V299    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V145._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V300 tmp278      [V300    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V149._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V301 tmp279      [V301    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V149._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V302 tmp280      [V302    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V150._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V303 tmp281      [V303    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V150._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V304 tmp282      [V304    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V151._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V305 tmp283      [V305    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V151._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V306 tmp284      [V306    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V152._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V307 tmp285      [V307    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V152._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V308 tmp286      [V308    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V153._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V309 tmp287      [V309    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V153._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V310 tmp288      [V310    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V157._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V311 tmp289      [V311    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V157._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V312 tmp290      [V312    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V158._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V313 tmp291      [V313    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V158._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V314 tmp292      [V314    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V162._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V315 tmp293      [V315    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V162._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V316 tmp294      [V316    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V163._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V317 tmp295      [V317    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V163._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V318 tmp296      [V318    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V164._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V319 tmp297      [V319    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V164._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V320 tmp298      [V320    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V165._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V321 tmp299      [V321    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V165._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V322 tmp300      [V322    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V166._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V323 tmp301      [V323    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V166._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V324 tmp302      [V324    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V170._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V325 tmp303      [V325    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V170._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V326 tmp304      [V326    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V171._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V327 tmp305      [V327    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V171._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V328 tmp306      [V328    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V175._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V329 tmp307      [V329    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V175._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V330 tmp308      [V330    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V176._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V331 tmp309      [V331    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V176._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V332 tmp310      [V332    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V177._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V333 tmp311      [V333    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V177._length (fldOffset=0x8)\u0022 P-INDEP\n ;  V334 tmp312      [V334    ] (  3,  2.50)    long  -\u003E  [rbp-0x78]  do-not-enreg[X] addr-exposed \u0022field V180._handle (fldOffset=0x0)\u0022 P-DEP\n ;* V335 tmp313      [V335    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V181._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V336 tmp314      [V336    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V182._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V337 tmp315      [V337    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V183._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V338 tmp316      [V338    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V184._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V339 tmp317      [V339    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V185._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V340 tmp318      [V340    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V186._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V341 tmp319      [V341    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V187._handle (fldOffset=0x0)\u0022 P-INDEP\n ;* V342 tmp320      [V342    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[000..008)\u0022\n ;* V343 tmp321      [V343    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[008..016)\u0022\n ;* V344 tmp322      [V344    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[016..024)\u0022\n ;* V345 tmp323      [V345    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[024..032)\u0022\n ;* V346 tmp324      [V346    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[032..040)\u0022\n ;* V347 tmp325      [V347    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V21.[040..048)\u0022\n ;* V348 tmp326      [V348    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V21.[048..056)\u0022\n ;  V349 tmp327      [V349,T04] (  4,  7   )    long  -\u003E  [rbp-0x98]  spill-single-def ptr \u0022Cast away GC\u0022\n ;  V350 tmp328      [V350,T05] (  4,  7   )    long  -\u003E  rbx         \u0022Cast away GC\u0022\n ;  V351 tmp329      [V351,T06] (  4,  7   )    long  -\u003E  [rbp-0xA0]  spill-single-def ptr \u0022Cast away GC\u0022\n ;  V352 cse0        [V352,T22] (  3,  3   )     ref  -\u003E  r12         \u0022CSE #01: moderate\u0022\n ;  V353 rat0        [V353    ] (  1,  1   )    long  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022GSSecurityCookie\u0022\n ;  V354 rat1        [V354,T10] (  3,  6   )    long  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n ;\n ; Lcl frame size = 168\n \n G_M44419_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 168\n        lea      rbp, [rsp\u002B0xD0]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x88], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu32 zmmword ptr [rbp-0x80], zmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        mov      rax, 0xD1FFAB1E\n        mov      qword ptr [rbp-0x30], rax\n        mov      r14, rdi\n        mov      rbx, rsi\n        mov      r15, rdx\n \t\t\t\t\t\t;; size=74 bbWeight=1 PerfScore 13.33\n G_M44419_IG02:\n        lea      rdi, [rbp-0x88]\n        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER\n        mov      rdx, qword ptr [r14\u002B0x10]\n        test     rdx, rdx\n        je       G_M44419_IG43\n        and      rdx, -2\n        mov      r14, gword ptr [rdx]\n        test     r14, r14\n        je       G_M44419_IG44\n \t\t\t\t\t\t;; size=41 bbWeight=1 PerfScore 8.25\n G_M44419_IG03:\n        mov      rdx, 0xD1FFAB1E      ; Silk.NET.Assimp.CustomFileIO\n        cmp      qword ptr [r14], rdx\n        jne      G_M44419_IG44\n \t\t\t\t\t\t;; size=19 bbWeight=0.50 PerfScore 1.62\n G_M44419_IG04:\n        mov      gword ptr [rbp-0xA8], r14\n        xor      r13d, r13d\n        cmp      byte  ptr [rbx], 0\n        je       SHORT G_M44419_IG06\n        align    [11 bytes for IG05]\n \t\t\t\t\t\t;; size=26 bbWeight=1 PerfScore 4.50\n G_M44419_IG05:\n        inc      r13d\n        movsxd   rdx, r13d\n        cmp      byte  ptr [rbx\u002Brdx], 0\n        jne      SHORT G_M44419_IG05\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 14.00\n G_M44419_IG06:\n        test     r13d, r13d\n        jl       G_M44419_IG45\n        mov      rdx, 0xD1FFAB1E      ; const ptr\n        mov      r12, gword ptr [rdx]\n        mov      gword ptr [rbp-0xB0], r12\n        mov      bword ptr [rbp-0x38], rbx\n        mov      r8, rbx\n        mov      qword ptr [rbp-0x98], r8\n        lea      rdx, [rbp-0x48]\n        lea      rcx, [rbp-0x50]\n        mov      rdi, r8\n        mov      esi, r13d\n        mov      r9, 0xD1FFAB1E      ; code for System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ptr,int,byref,byref):ptr\n        call     [r9]System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ptr,int,byref,byref):ptr\n        mov      rsi, qword ptr [rbp-0x98]\n        mov      ecx, eax\n        sub      ecx, esi\n        mov      eax, ecx\n        add      eax, dword ptr [rbp-0x48]\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      ecx, r13d\n        je       SHORT G_M44419_IG08\n \t\t\t\t\t\t;; size=94 bbWeight=1 PerfScore 16.50\n G_M44419_IG07:\n        mov      rdi, gword ptr [rbp-0xB0]\n        mov      edx, r13d\n        mov      r8, 0xD1FFAB1E      ; code for System.Text.Encoding:GetCharCountWithFallback(ptr,int,int):int:this\n        call     [r8]System.Text.Encoding:GetCharCountWithFallback(ptr,int,int):int:this\n        add      eax, dword ptr [rbp-0x3C]\n        mov      esi, eax\n        test     esi, esi\n        mov      dword ptr [rbp-0x3C], esi\n        jl       G_M44419_IG46\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.00\n G_M44419_IG08:\n        xor      rdx, rdx\n        mov      bword ptr [rbp-0x38], rdx\n        mov      eax, dword ptr [rbp-0x3C]\n        cmp      eax, 256\n        jg       SHORT G_M44419_IG12\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 3.50\n G_M44419_IG09:\n        mov      dword ptr [rbp-0x3C], eax\n        mov      esi, eax\n        mov      edi, 2\n        mov      rax, rsi\n        mul      rdx:rax, rdi\n        jb       G_M44419_IG50\n        test     rax, rax\n        je       SHORT G_M44419_IG11\n        add      rax, 15\n        shr      rax, 4\n        add      rsp, 16\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 4.00\n G_M44419_IG10:\n        push     0\n        push     0\n        dec      rax\n        jne      SHORT G_M44419_IG10\n        sub      rsp, 16\n        lea      rax, [rsp\u002B0x10]\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.00\n G_M44419_IG11:\n        mov      esi, dword ptr [rbp-0x3C]\n        test     esi, esi\n        jl       G_M44419_IG45\n        mov      ecx, esi\n        mov      r10d, ecx\n        jmp      SHORT G_M44419_IG13\n        align    [0 bytes for IG18]\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.38\n G_M44419_IG12:\n        mov      esi, eax\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        call     CORINFO_HELP_NEWARR_1_VC\n        lea      r8, bword ptr [rax\u002B0x10]\n        mov      ecx, dword ptr [rax\u002B0x08]\n        mov      rax, r8\n        mov      r10d, ecx\n \t\t\t\t\t\t;; size=30 bbWeight=0.50 PerfScore 2.25\n G_M44419_IG13:\n        mov      bword ptr [rbp-0xB8], rax\n        mov      dword ptr [rbp-0x8C], r10d\n        mov      bword ptr [rbp-0x58], rbx\n        mov      bword ptr [rbp-0x60], rax\n        mov      r11, rax\n        mov      qword ptr [rbp-0xA0], r11\n        lea      r8, [rbp-0x68]\n        lea      r9, [rbp-0x70]\n        mov      rdi, rbx\n        mov      esi, r13d\n        mov      rdx, r11\n        mov      ecx, r10d\n        mov      r14, 0xD1FFAB1E      ; code for System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ptr,int,ptr,int,byref,byref):int\n        call     [r14]System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ptr,int,ptr,int,byref,byref):int\n        mov      r9d, dword ptr [rbp-0x68]\n        sub      r9d, ebx\n        mov      rdi, qword ptr [rbp-0x70]\n        mov      r14, qword ptr [rbp-0xA0]\n        sub      rdi, r14\n        mov      rsi, rdi\n        shr      rsi, 63\n        add      rdi, rsi\n        sar      rdi, 1\n        cmp      r9d, r13d\n        je       SHORT G_M44419_IG15\n \t\t\t\t\t\t;; size=104 bbWeight=1 PerfScore 16.75\n G_M44419_IG14:\n        mov      dword ptr [rsp], edi\n        mov      dword ptr [rsp\u002B0x08], 1\n        mov      rdi, r12\n        mov      rsi, rbx\n        mov      edx, r13d\n        mov      rcx, r14\n        mov      r8d, dword ptr [rbp-0x8C]\n        mov      rax, 0xD1FFAB1E      ; code for System.Text.Encoding:GetCharsWithFallback(ptr,int,ptr,int,int,int,bool):int:this\n        call     [rax]System.Text.Encoding:GetCharsWithFallback(ptr,int,ptr,int,int,int,bool):int:this\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 3.62\n G_M44419_IG15:\n        xor      rdi, rdi\n        mov      bword ptr [rbp-0x58], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=1 PerfScore 1.25\n G_M44419_IG16:\n        mov      bword ptr [rbp-0x60], rdi\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.00\n G_M44419_IG17:\n        xor      r13d, r13d\n        cmp      byte  ptr [r15], 0\n        je       SHORT G_M44419_IG19\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.25\n G_M44419_IG18:\n        inc      r13d\n        movsxd   rdi, r13d\n        cmp      byte  ptr [r15\u002Brdi], 0\n        jne      SHORT G_M44419_IG18\n \t\t\t\t\t\t;; size=13 bbWeight=4 PerfScore 14.00\n G_M44419_IG19:\n        test     r13d, r13d\n        jl       G_M44419_IG45\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 43\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      ebx, eax\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 119\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG21\n \t\t\t\t\t\t;; size=61 bbWeight=1 PerfScore 10.75\n G_M44419_IG20:\n        mov      r14d, 1\n        jmp      SHORT G_M44419_IG22\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG21:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 87\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      r14d, eax\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.12\n G_M44419_IG22:\n        movzx    r14, r14b\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 114\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG24\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 5.50\n G_M44419_IG23:\n        mov      r12d, 1\n        jmp      SHORT G_M44419_IG25\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG24:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 82\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        mov      r12d, eax\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.12\n G_M44419_IG25:\n        movzx    r12, r12b\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 97\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        test     eax, eax\n        je       SHORT G_M44419_IG27\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 5.50\n G_M44419_IG26:\n        mov      eax, 1\n        jmp      SHORT G_M44419_IG28\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG27:\n        mov      rdi, r15\n        mov      edx, r13d\n        mov      esi, 65\n        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n        call     [rax]System.SpanHelpers:NonPackedContainsValueType[byte](byref,byte,int):bool\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M44419_IG28:\n        movzx    r15, al\n        test     ebx, ebx\n        je       SHORT G_M44419_IG30\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 1.50\n G_M44419_IG29:\n        mov      ecx, 3\n        jmp      SHORT G_M44419_IG32\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 1.12\n G_M44419_IG30:\n        mov      ecx, r14d\n        or       ecx, r15d\n        je       SHORT G_M44419_IG31\n        mov      ecx, 2\n        jmp      SHORT G_M44419_IG32\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 1.88\n G_M44419_IG31:\n        test     r12d, r12d\n        je       G_M44419_IG47\n        mov      ecx, 1\n \t\t\t\t\t\t;; size=14 bbWeight=0.50 PerfScore 0.75\n G_M44419_IG32:\n        test     r15d, r15d\n        je       SHORT G_M44419_IG34\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 1.25\n G_M44419_IG33:\n        test     ebx, ebx\n        jne      SHORT G_M44419_IG34\n        mov      r8d, 6\n        jmp      SHORT G_M44419_IG36\n \t\t\t\t\t\t;; size=12 bbWeight=0.50 PerfScore 1.75\n G_M44419_IG34:\n        or       r12d, r15d\n        je       SHORT G_M44419_IG35\n        mov      r8d, 3\n        jmp      SHORT G_M44419_IG36\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.75\n G_M44419_IG35:\n        test     r14d, r14d\n        je       G_M44419_IG48\n        mov      r8d, 2\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 0.75\n G_M44419_IG36:\n        mov      r14, gword ptr [rbp-0xA8]\n        mov      rax, gword ptr [r14\u002B0x08]\n        mov      rsi, bword ptr [rbp-0xB8]\n        mov      edx, dword ptr [rbp-0x8C]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]Silk.NET.Assimp.OpenFileCustomIOCallback:Invoke(System.ReadOnlySpan\u00601[char],int,int):System.IO.Stream:this\n        mov      r14, rax\n        test     r14, r14\n        je       G_M44419_IG39\n \t\t\t\t\t\t;; size=43 bbWeight=1 PerfScore 11.50\n G_M44419_IG37:\n        test     r15d, ebx\n        je       SHORT G_M44419_IG38\n        mov      rdi, r14\n        xor      esi, esi\n        mov      edx, 2\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x68]\n        call     [rax]System.IO.Stream:Seek(long,int):long:this\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.50\n G_M44419_IG38:\n        xor      edi, edi\n        mov      qword ptr [rbp-0x78], rdi\n        lea      rdi, [rbp-0x78]\n        mov      rsi, r14\n        mov      edx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this\n        call     [rax]System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this\n        mov      rbx, qword ptr [rbp-0x78]\n        test     rbx, rbx\n        je       G_M44419_IG49\n        mov      edi, 56\n        mov      rax, 0xD1FFAB1E      ; code for Silk.NET.Core.Native.GlobalMemory:Allocate(int):Silk.NET.Core.Native.GlobalMemory\n        call     [rax]Silk.NET.Core.Native.GlobalMemory:Allocate(int):Silk.NET.Core.Native.GlobalMemory\n        mov      rdi, rax\n        mov      rax, 0xD1FFAB1E      ; code for Silk.NET.Core.Native.SilkMarshal:RegisterMemory(Silk.NET.Core.Native.GlobalMemory):nint\n        call     [rax]Silk.NET.Core.Native.SilkMarshal:RegisterMemory(Silk.NET.Core.Native.GlobalMemory):nint\n        mov      r15, rax\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [r15], ymm0\n        vmovups  xmm0, xmmword ptr [reloc @RWD32]\n        vmovups  xmmword ptr [r15\u002B0x20], xmm0\n        mov      qword ptr [r15\u002B0x30], rbx\n        jmp      SHORT G_M44419_IG40\n \t\t\t\t\t\t;; size=111 bbWeight=0.50 PerfScore 11.50\n G_M44419_IG39:\n        xor      r15d, r15d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M44419_IG40:\n        lea      rdi, [rbp-0x88]\n        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT\n        mov      rax, r15\n        mov      r9, 0xD1FFAB1E\n        cmp      qword ptr [rbp-0x30], r9\n        je       SHORT G_M44419_IG41\n        call     CORINFO_HELP_FAIL_FAST\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 5.00\n G_M44419_IG41:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M44419_IG42:\n        vzeroupper \n        lea      rsp, [rbp-0x28]\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 5.50\n G_M44419_IG43:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        call     [rax]System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG44:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid UserData for FileIO.\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M44419_IG45:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG46:\n        mov      rax, 0xD1FFAB1E      ; code for System.Text.Encoding:ThrowConversionOverflow()\n        call     [rax]System.Text.Encoding:ThrowConversionOverflow()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M44419_IG47:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid mode, must have \u0027r\u0027, \u0027w\u0027, \u0027a\u0027, or \u0027\u002B\u0027 set.\u0027\n        mov      rdx, 0xD1FFAB1E      ; \u0027pMode\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=62 bbWeight=0 PerfScore 0.00\n G_M44419_IG48:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Invalid mode\u0027\n        mov      rdx, 0xD1FFAB1E      ; \u0027pMode\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=62 bbWeight=0 PerfScore 0.00\n G_M44419_IG49:\n        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException\n        call     CORINFO_HELP_NEWSFAST\n        mov      r15, rax\n        mov      rdi, r15\n        mov      rsi, 0xD1FFAB1E      ; \u0027Failed to allocate GCHandle.\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this\n        call     [rax]System.InvalidOperationException:.ctor(System.String):this\n        mov      rdi, r15\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M44419_IG50:\n        call     CORINFO_HELP_OVERFLOW\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007E0452740A20h, 00007E0452740A38h, 00007E0452740A68h, 00007E0452740A50h\n-RWD32  \tdq\t00007E0452740A98h, 00007E0452740A80h\n\u002BRWD00  \tdq\t000074ABFA950A20h, 000074ABFA950A38h, 000074ABFA950A68h, 000074ABFA950A50h\n\u002BRWD32  \tdq\t000074ABFA950A98h, 000074ABFA950A80h\n \n \n ; Total bytes of code 1423, prolog size 74, PerfScore 196.71, instruction count 341, allocated bytes for code 1423 (MethodHash=5738527c) for method Silk.NET.Assimp.CustomFileIO:OpenFile(ptr,ptr,ptr):ptr (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1423,"DiffBytes":1423},{"Assembly":"SkiaSharp.dasm","Method":"SkiaSharp.SKAbstractManagedWStream:.cctor() (FullOpts)","Category":"same-size","Description":"199 -\u003E 199 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,89 \u002B1,89 @@\n ; Assembly listing for method SkiaSharp.SKAbstractManagedWStream:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op \u003CSkiaSharp.SKManagedWStreamDelegates\u003E\n ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;  V02 FramesRoot   [V02,T00] (  6,  6   )    long  -\u003E  rbx         \u0022Pinvoke FrameListRoot\u0022\n ;  V03 PInvokeFrame [V03    ] (  8,  8   )  struct (56) [rbp-0x60]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fWrite (fldOffset=0x0)\u0022 P-INDEP\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fFlush (fldOffset=0x8)\u0022 P-INDEP\n ;* V06 tmp5         [V06    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fBytesWritten (fldOffset=0x10)\u0022 P-INDEP\n ;* V07 tmp6         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fDestroy (fldOffset=0x18)\u0022 P-INDEP\n ;  V08 cse0         [V08,T01] (  3,  3   )    long  -\u003E  rax         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 88\n \n G_M15798_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 88\n        lea      rbp, [rsp\u002B0x80]\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 6.75\n G_M15798_IG02:\n        lea      rdi, [rbp-0x60]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      rbx, rax\n        mov      rax, rsp\n        mov      qword ptr [rbp-0x48], rax\n        mov      rax, rbp\n        mov      qword ptr [rbp-0x38], rax\n        mov      rax, 0xD1FFAB1E      ; data for SkiaSharp.SKAbstractManagedWStream:delegates\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [rax], ymm0\n        vmovdqu  xmm0, xmmword ptr [rax]\n        vmovdqu  xmmword ptr [rsp], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x10]\n        vmovdqu  xmmword ptr [rsp\u002B0x10], xmm0\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x50], rax\n        lea      rax, G_M15798_IG05\n        mov      qword ptr [rbp-0x40], rax\n        lea      rax, [rbp-0x60]\n        mov      qword ptr [rbx\u002B0x08], rax\n        mov      byte  ptr [rbx\u002B0x04], 0\n \t\t\t\t\t\t;; size=105 bbWeight=1 PerfScore 19.25\n G_M15798_IG03:\n        mov      rax, 0xD1FFAB1E      ; code for SkiaSharp.SkiaApi:sk_managedwstream_set_procs(SkiaSharp.SKManagedWStreamDelegates)\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M15798_IG04:\n        vzeroupper \n        call     [rax]SkiaSharp.SkiaApi:sk_managedwstream_set_procs(SkiaSharp.SKManagedWStreamDelegates)\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 4.00\n G_M15798_IG05:\n        mov      byte  ptr [rbx\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M15798_IG06\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 7.50\n G_M15798_IG06:\n        mov      rax, qword ptr [rbp-0x58]\n        mov      qword ptr [rbx\u002B0x08], rax\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 2.00\n G_M15798_IG07:\n        vzeroupper \n        add      rsp, 88\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 5.25\n-RWD00  \tdq\t0000796AE7068138h, 0000796AE7068120h, 0000796AE70680F0h, 0000796AE7068108h\n\u002BRWD00  \tdq\t00007E26DC248138h, 00007E26DC248120h, 00007E26DC2480F0h, 00007E26DC248108h\n \n \n ; Total bytes of code 199, prolog size 22, PerfScore 45.00, instruction count 49, allocated bytes for code 199 (MethodHash=46bdc249) for method SkiaSharp.SKAbstractManagedWStream:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":199,"DiffBytes":199},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)","Category":"same-size","Description":"79 -\u003E 79 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,76 \u002B1,76 @@\n ; Assembly listing for method System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 32 single block inlinees; 0 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 RetBuf       [V00,T00] (  7,  7   )    long  -\u003E  rdi         single-def\n ;* V01 loc0         [V01    ] (  0,  0   )  struct (256) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSystem.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable\u003E\n ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V03 tmp1         [V03    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[000..008)\u0022\n ;* V04 tmp2         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[008..016)\u0022\n ;* V05 tmp3         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[016..024)\u0022\n ;* V06 tmp4         [V06    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[024..032)\u0022\n ;* V07 tmp5         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[032..040)\u0022\n ;* V08 tmp6         [V08    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[040..048)\u0022\n ;* V09 tmp7         [V09    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[048..056)\u0022\n ;* V10 tmp8         [V10    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[056..064)\u0022\n ;* V11 tmp9         [V11    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[064..072)\u0022\n ;* V12 tmp10        [V12    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[072..080)\u0022\n ;* V13 tmp11        [V13    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[080..088)\u0022\n ;* V14 tmp12        [V14    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[088..096)\u0022\n ;* V15 tmp13        [V15    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[096..104)\u0022\n ;* V16 tmp14        [V16    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[104..112)\u0022\n ;* V17 tmp15        [V17    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[112..120)\u0022\n ;* V18 tmp16        [V18    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[120..128)\u0022\n ;* V19 tmp17        [V19    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[128..136)\u0022\n ;* V20 tmp18        [V20    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[136..144)\u0022\n ;* V21 tmp19        [V21    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[144..152)\u0022\n ;* V22 tmp20        [V22    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[152..160)\u0022\n ;* V23 tmp21        [V23    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[160..168)\u0022\n ;* V24 tmp22        [V24    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[168..176)\u0022\n ;* V25 tmp23        [V25    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[176..184)\u0022\n ;* V26 tmp24        [V26    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[184..192)\u0022\n ;* V27 tmp25        [V27    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[192..200)\u0022\n ;* V28 tmp26        [V28    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[200..208)\u0022\n ;* V29 tmp27        [V29    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[208..216)\u0022\n ;* V30 tmp28        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[216..224)\u0022\n ;* V31 tmp29        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[224..232)\u0022\n ;* V32 tmp30        [V32    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[232..240)\u0022\n ;* V33 tmp31        [V33    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[240..248)\u0022\n ;* V34 tmp32        [V34    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[248..256)\u0022\n ;\n ; Lcl frame size = 0\n \n G_M36615_IG01:\n        push     rbp\n        mov      rbp, rsp\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.25\n G_M36615_IG02:\n        vmovups  zmm0, zmmword ptr [reloc @RWD00]\n        vmovups  zmmword ptr [rdi], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD64]\n        vmovups  zmmword ptr [rdi\u002B0x40], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD128]\n        vmovups  zmmword ptr [rdi\u002B0x80], zmm0\n        vmovups  zmm0, zmmword ptr [reloc @RWD192]\n        vmovups  zmmword ptr [rdi\u002B0xC0], zmm0\n        mov      rax, rdi\n \t\t\t\t\t\t;; size=70 bbWeight=1 PerfScore 20.25\n G_M36615_IG03:\n        vzeroupper \n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 2.50\n-RWD00  \tdq\t00007D8FEE7216B0h, 00007D8FEE7216C8h, 00007D8FEE7216E0h, 00007D8FEE7216F8h, 00007D8FEE721710h, 00007D8FEE721728h, 00007D8FEE721740h, 00007D8FEE721758h\n-RWD64  \tdq\t00007D8FEE721770h, 00007D8FEE721788h, 00007D8FEE7217A0h, 00007D8FEE7217B8h, 00007D8FEE7217D0h, 00007D8FEE7217E8h, 00007D8FEE721800h, 00007D8FEE721818h\n-RWD128 \tdq\t00007D8FEE721830h, 00007D8FEE721848h, 00007D8FEE721860h, 00007D8FEE721878h, 00007D8FEE721890h, 00007D8FEE7218A8h, 00007D8FEE7218C0h, 00007D8FEE7218D8h\n-RWD192 \tdq\t00007D8FEE7218F0h, 00007D8FEE721908h, 00007D8FEE721920h, 00007D8FEE721938h, 00007D8FEE721950h, 00007D8FEE721968h, 00007D8FEE721980h, 00007D8FEE721998h\n\u002BRWD00  \tdq\t0000737CE47216B0h, 0000737CE47216C8h, 0000737CE47216E0h, 0000737CE47216F8h, 0000737CE4721710h, 0000737CE4721728h, 0000737CE4721740h, 0000737CE4721758h\n\u002BRWD64  \tdq\t0000737CE4721770h, 0000737CE4721788h, 0000737CE47217A0h, 0000737CE47217B8h, 0000737CE47217D0h, 0000737CE47217E8h, 0000737CE4721800h, 0000737CE4721818h\n\u002BRWD128 \tdq\t0000737CE4721830h, 0000737CE4721848h, 0000737CE4721860h, 0000737CE4721878h, 0000737CE4721890h, 0000737CE47218A8h, 0000737CE47218C0h, 0000737CE47218D8h\n\u002BRWD192 \tdq\t0000737CE47218F0h, 0000737CE4721908h, 0000737CE4721920h, 0000737CE4721938h, 0000737CE4721950h, 0000737CE4721968h, 0000737CE4721980h, 0000737CE4721998h\n \n \n ; Total bytes of code 79, prolog size 4, PerfScore 24.00, instruction count 14, allocated bytes for code 79 (MethodHash=14f070f8) for method System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper:InitContinuationWrappers():System.Runtime.CompilerServices.AsyncProfiler\u002BContinuationWrapper\u002BContinuationWrapperTable (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":79,"DiffBytes":79},{"Assembly":"ZstdSharp.dasm","Method":"ZstdSharp.Unsafe.Methods:ZSTD_resetCCtx_internal(ptr,ptr,ulong,nuint,int,int):nuint (FullOpts)","Category":"same-size","Description":"3,633 -\u003E 3,633 bytes (0)","ExtraInfo":null,"Diff":"@@ -1545,7 \u002B1545,7 @@ G_M60040_IG144:\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.25\n-RWD00  \tdq\t000074CAD84874CAh, 000074CAD84874C8h, 000074CAD84874C8h, 0000000200000002h\n\u002BRWD00  \tdq\t00007458921A64CAh, 00007458921A64C8h, 00007458921A64C8h, 0000000200000002h\n \n \n ; Total bytes of code 3633, prolog size 25, PerfScore 618.17, instruction count 940, allocated bytes for code 3633 (MethodHash=b0cb1577) for method ZstdSharp.Unsafe.Methods:ZSTD_resetCCtx_internal(ptr,ptr,ulong,nuint,int,int):nuint (FullOpts)","Truncated":true,"BaseBytes":3633,"DiffBytes":3633},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)","Category":"improvement","Description":"1,891 -\u003E 1,737 bytes (-154)","ExtraInfo":null,"Diff":"@@ -1,744 \u002B1,720 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 46 single block inlinees; 21 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 24, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 arg1         [V01,T17] (  3,  3   )     int  -\u003E  rsi         single-def\n\u002B;  V01 arg1         [V01,T18] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T02] ( 23, 11.50)     int  -\u003E  rsi         single-def\n-;  V05 loc2         [V05,T01] ( 24, 12   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IHasCustomAttribute\u003E\n-;  V06 loc3         [V06,T48] (  5,  2.48)   ubyte  -\u003E  r13         single-def\n\u002B;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n\u002B;  V04 loc1         [V04,T03] ( 23, 11.50)     int  -\u003E  rsi         single-def\n\u002B;  V05 loc2         [V05,T02] ( 24, 12   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IHasCustomAttribute\u003E\n\u002B;  V06 loc3         [V06,T49] (  5,  2.48)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T59] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T60] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V10 tmp3         [V10,T49] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V11 tmp4         [V11,T03] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V12 tmp5         [V12,T11] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n-;  V13 tmp6         [V13,T50] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V08 tmp1         [V08,T66] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T67] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V10 tmp3         [V10,T50] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n\u002B;  V11 tmp4         [V11,T05] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V12 tmp5         [V12,T12] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n\u002B;  V13 tmp6         [V13,T51] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V15 tmp8         [V15,T19] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V16 tmp9         [V16,T64] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp8         [V15,T60] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V16 tmp9         [V16,T71] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V17 tmp10        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V18 tmp11        [V18,T51] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V19 tmp12        [V19,T04] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V20 tmp13        [V20,T12] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V21 tmp14        [V21,T47] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V18 tmp11        [V18,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V19 tmp12        [V19,T06] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp13        [V20,T13] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V21 tmp14        [V21,T48] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V22 tmp15        [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V23 tmp16        [V23,T20] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V23 tmp16        [V23,T61] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V24 tmp17        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V25 tmp18        [V25,T52] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V26 tmp19        [V26,T05] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V27 tmp20        [V27,T13] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V28 tmp21        [V28,T53] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V25 tmp18        [V25,T53] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V26 tmp19        [V26,T07] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V27 tmp20        [V27,T14] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V28 tmp21        [V28,T54] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V29 tmp22        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V30 tmp23        [V30,T21] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V31 tmp24        [V31,T65] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V30 tmp23        [V30,T62] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V31 tmp24        [V31,T72] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V32 tmp25        [V32    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V33 tmp26        [V33,T54] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V34 tmp27        [V34,T06] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V35 tmp28        [V35,T14] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V36 tmp29        [V36,T18] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V33 tmp26        [V33,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V34 tmp27        [V34,T08] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V35 tmp28        [V35,T15] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n\u002B;  V36 tmp29        [V36,T19] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V37 tmp30        [V37    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V38 tmp31        [V38,T22] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V39 tmp32        [V39    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V40 tmp33        [V40,T66] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V41 tmp34        [V41,T61] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V38 tmp31        [V38,T63] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V39 tmp32        [V39    ] (  7,  3.50)  struct ( 8) [rbp-0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V40 tmp33        [V40,T73] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V41 tmp34        [V41,T68] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V42 tmp35        [V42    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V43 tmp36        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V44 tmp37        [V44,T55] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V45 tmp38        [V45,T07] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V46 tmp39        [V46,T15] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n-;  V47 tmp40        [V47,T56] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V44 tmp37        [V44,T56] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n\u002B;  V45 tmp38        [V45,T04] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp39        [V46,T16] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n\u002B;  V47 tmp40        [V47,T57] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V48 tmp41        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V49 tmp42        [V49,T23] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V49 tmp42        [V49,T64] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V50 tmp43        [V50    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n-;  V51 tmp44        [V51,T45] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n-;  V52 tmp45        [V52,T46] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n-;  V53 tmp46        [V53    ] (  7,  3.50)  struct ( 8) [rbp-0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V54 tmp47        [V54,T63] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V55 tmp48        [V55,T62] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V51 tmp44        [V51,T46] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n\u002B;  V52 tmp45        [V52,T47] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n\u002B;  V53 tmp46        [V53    ] (  7,  3.50)  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n\u002B;  V54 tmp47        [V54,T70] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V55 tmp48        [V55,T69] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V56 tmp49        [V56    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V57 tmp50        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V58 tmp51        [V58,T57] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V59 tmp52        [V59,T08] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n-;  V60 tmp53        [V60,T16] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n-;  V61 tmp54        [V61,T58] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V58 tmp51        [V58,T58] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n\u002B;  V59 tmp52        [V59,T09] (  7,  7   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V60 tmp53        [V60,T17] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n\u002B;  V61 tmp54        [V61,T59] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V62 tmp55        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V63 tmp56        [V63,T24] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V64 tmp57        [V64,T67] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V63 tmp56        [V63,T65] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V64 tmp57        [V64,T74] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V65 tmp58        [V65    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V66 tmp59        [V66,T09] (  7,  4   )     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V67 tmp60        [V67,T10] (  7,  4   )     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V68 tmp61        [V68    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V39.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V69 tmp62        [V69    ] (  7,  3.50)     int  -\u003E  [rbp-0x38]  do-not-enreg[X] addr-exposed \u0022field V53.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V70 tmp63        [V70,T25] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V71 tmp64        [V71,T26] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V72 tmp65        [V72,T27] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V73 tmp66        [V73,T28] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V74 tmp67        [V74,T29] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V75 tmp68        [V75,T30] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V76 tmp69        [V76,T31] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp70        [V77,T32] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V78 tmp71        [V78,T33] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V79 tmp72        [V79,T34] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V80 tmp73        [V80,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V81 tmp74        [V81,T36] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n-;  V82 rat0         [V82,T44] (  3,  2.83)     int  -\u003E  rdx         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V83 rat1         [V83,T43] (  3,  2.93)     int  -\u003E  r13         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n-;  V84 rat2         [V84,T37] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V85 rat3         [V85,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V86 rat4         [V86,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V87 rat5         [V87,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V88 rat6         [V88,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n-;  V89 rat7         [V89,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V66 tmp59        [V66,T10] (  7,  4   )     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V67 tmp60        [V67,T11] (  7,  4   )     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V68 tmp61        [V68    ] (  7,  3.50)     int  -\u003E  [rbp-0x38]  do-not-enreg[X] addr-exposed \u0022field V39.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V69 tmp62        [V69    ] (  7,  3.50)     int  -\u003E  [rbp-0x40]  do-not-enreg[X] addr-exposed \u0022field V53.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V70 tmp63        [V70,T20] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp64        [V71,T21] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V72 tmp65        [V72,T22] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V73 tmp66        [V73,T23] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V74 tmp67        [V74,T24] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp68        [V75,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp69        [V76,T26] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp70        [V77,T27] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp71        [V78,T28] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V79 tmp72        [V79,T29] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V80 tmp73        [V80,T30] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V81 tmp74        [V81,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V82 tmp75        [V82,T32] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V83 tmp76        [V83,T33] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V84 tmp77        [V84,T34] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V85 tmp78        [V85,T35] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V86 tmp79        [V86,T36] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V87 tmp80        [V87,T37] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V88 cse0         [V88,T01] ( 25, 12.50)    long  -\u003E  r12         multi-def \u0022CSE #02: aggressive\u0022\n\u002B;  V89 rat0         [V89,T45] (  3,  2.83)     int  -\u003E  rdx         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V90 rat1         [V90,T44] (  3,  2.93)     int  -\u003E  r13         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V91 rat2         [V91,T38] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V92 rat3         [V92,T39] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V93 rat4         [V93,T40] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V94 rat5         [V94,T41] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V95 rat6         [V95,T42] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V96 rat7         [V96,T43] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 32\n\u002B; Lcl frame size = 24\n \n G_M58568_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n\u002B       push     r12\n        push     rbx\n-       sub      rsp, 32\n\u002B       sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        vxorps   xmm8, xmm8, xmm8\n-       vmovdqu  xmmword ptr [rbp-0x38], xmm8\n\u002B       vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        xor      eax, eax\n-       mov      qword ptr [rbp-0x28], rax\n\u002B       mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n-\t\t\t\t\t\t;; size=42 bbWeight=1 PerfScore 9.08\n\u002B\t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M58568_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n-       lea      rdx, [rbp-0x28]\n\u002B       lea      rdx, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       SHORT G_M58568_IG07\n \t\t\t\t\t\t;; size=33 bbWeight=1 PerfScore 7.25\n G_M58568_IG03:\n-       mov      esi, dword ptr [rbp-0x28]\n\u002B       mov      esi, dword ptr [rbp-0x30]\n        and      esi, 0xD1FFAB1E\n-       mov      edi, dword ptr [rbp-0x28]\n\u002B       mov      edi, dword ptr [rbp-0x30]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 20\n        ja       G_M58568_IG32\n \t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG04:\n        mov      edi, r13d\n        lea      rax, [reloc @RWD00]\n        mov      eax, dword ptr [rax\u002B4*rdi]\n        lea      rcx, G_M58568_IG02\n        add      rax, rcx\n        jmp      rax\n \t\t\t\t\t\t;; size=25 bbWeight=0.48 PerfScore 2.86\n G_M58568_IG05:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG06:\n-       add      rsp, 32\n\u002B       add      rsp, 24\n        pop      rbx\n\u002B       pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG08:\n-       add      rsp, 32\n\u002B       add      rsp, 24\n        pop      rbx\n\u002B       pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n-\t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M58568_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x1B0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      SHORT G_M58568_IG06\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG10:\n        mov      rbx, gword ptr [rbx\u002B0x1A8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG13\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG11\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG12\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG14\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG12:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG14\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG13:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG14:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG15:\n        mov      rdi, gword ptr [rbx\u002B0x198]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG16:\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG19\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG17\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG18\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=143 bbWeight=0.50 PerfScore 18.75\n\u002B\t\t\t\t\t\t;; size=121 bbWeight=0.50 PerfScore 18.12\n G_M58568_IG17:\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdx\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG20\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG18:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG20\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG19:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG20:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG21:\n        mov      rbx, gword ptr [rbx\u002B0x180]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG24\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG22\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG23\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG22:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG25\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG23:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG25\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG24:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG25:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG26:\n        mov      rdi, gword ptr [rbx\u002B0x178]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG27:\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG28:\n        mov      rdi, gword ptr [rbx\u002B0x168]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG29:\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG30:\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG31:\n        mov      rdi, gword ptr [rbx\u002B0x150]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG32:\n        lea      edx, [r13-0x17]\n        cmp      edx, 4\n        ja       G_M58568_IG43\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 0.88\n G_M58568_IG33:\n        mov      edx, edx\n        lea      rcx, [reloc @RWD84]\n        mov      ecx, dword ptr [rcx\u002B4*rdx]\n        lea      rdi, G_M58568_IG02\n        add      rcx, rdi\n        jmp      rcx\n \t\t\t\t\t\t;; size=24 bbWeight=0.42 PerfScore 2.50\n G_M58568_IG34:\n        mov      rbx, gword ptr [rbx\u002B0x1C8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG39\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      G_M58568_IG37\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x30], edi\n-       cmp      dword ptr [rbp-0x30], 100\n\u002B       mov      dword ptr [rbp-0x38], edi\n\u002B       cmp      dword ptr [rbp-0x38], 100\n        jge      SHORT G_M58568_IG36\n-       mov      edi, dword ptr [rbp-0x30]\n\u002B       mov      edi, dword ptr [rbp-0x38]\n        inc      edi\n-       mov      dword ptr [rbp-0x30], edi\n\u002B       mov      dword ptr [rbp-0x38], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M58568_IG35\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=118 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG35:\n        mov      rsi, gword ptr [r15\u002B0x10]\n-       lea      rdi, [rbp-0x30]\n\u002B       lea      rdi, [rbp-0x38]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n-       mov      edi, dword ptr [rbp-0x30]\n\u002B       mov      edi, dword ptr [rbp-0x38]\n        dec      edi\n-       mov      dword ptr [rbp-0x30], edi\n\u002B       mov      dword ptr [rbp-0x38], edi\n        test     eax, eax\n        jne      SHORT G_M58568_IG38\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M58568_IG36:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=29 bbWeight=0.50 PerfScore 3.75\n G_M58568_IG37:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdi\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      esi, r13d\n-       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG40\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG38:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG40\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG39:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG40:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG41:\n        mov      rdi, gword ptr [rbx\u002B0x1C0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG42:\n        mov      rdi, gword ptr [rbx\u002B0x1B8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG43:\n        add      r13d, -32\n        cmp      r13d, 12\n        ja       G_M58568_IG05\n \t\t\t\t\t\t;; size=14 bbWeight=0.50 PerfScore 0.75\n G_M58568_IG44:\n        mov      edx, r13d\n        lea      rcx, [reloc @RWD104]\n        mov      ecx, dword ptr [rcx\u002B4*rdx]\n        lea      rdi, G_M58568_IG02\n        add      rcx, rdi\n        jmp      rcx\n \t\t\t\t\t\t;; size=25 bbWeight=0.46 PerfScore 2.79\n G_M58568_IG45:\n        mov      rbx, gword ptr [rbx\u002B0x210]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG48\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      SHORT G_M58568_IG46\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M58568_IG47\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=141 bbWeight=0.50 PerfScore 18.62\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=0.50 PerfScore 18.00\n G_M58568_IG46:\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rdx\u002B8*rcx\u002B0x10]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdx\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG49\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG47:\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG49\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M58568_IG48:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG49:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG50:\n        mov      rbx, gword ptr [rbx\u002B0x208]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M58568_IG57\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       cmp      qword ptr [rdx\u002B8*r12\u002B0x10], 0\n        jne      G_M58568_IG56\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rsi, gword ptr [r15\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M58568_IG53\n \t\t\t\t\t\t;; size=83 bbWeight=0.50 PerfScore 12.62\n G_M58568_IG51:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M58568_IG53\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M58568_IG52:\n        jmp      SHORT G_M58568_IG54\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M58568_IG53:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M58568_IG54:\n        xor      edi, edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        test     rsi, rsi\n        je       SHORT G_M58568_IG55\n-       cmp      dword ptr [rbp-0x38], 100\n\u002B       cmp      dword ptr [rbp-0x40], 100\n        jge      SHORT G_M58568_IG55\n-       mov      edi, dword ptr [rbp-0x38]\n\u002B       mov      edi, dword ptr [rbp-0x40]\n        inc      edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n-       lea      rdi, [rbp-0x38]\n\u002B       lea      rdi, [rbp-0x40]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n-       mov      edi, dword ptr [rbp-0x38]\n\u002B       mov      edi, dword ptr [rbp-0x40]\n        dec      edi\n-       mov      dword ptr [rbp-0x38], edi\n\u002B       mov      dword ptr [rbp-0x40], edi\n        test     eax, eax\n        je       SHORT G_M58568_IG55\n        mov      rax, r15\n        jmp      SHORT G_M58568_IG58\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M58568_IG55:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M58568_IG65\n-       mov      rdi, rax\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      r12d, r13d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r12\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M58568_IG56:\n-       mov      rax, gword ptr [rbx\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M58568_IG66\n-       mov      ecx, r13d\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M58568_IG65\n\u002B       mov      rax, gword ptr [rdi\u002B8*r12\u002B0x10]\n        jmp      SHORT G_M58568_IG58\n-\t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 4.50\n G_M58568_IG57:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M58568_IG58:\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.00\n G_M58568_IG59:\n        mov      rdi, gword ptr [rbx\u002B0x200]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG60:\n        mov      rdi, gword ptr [rbx\u002B0x1F8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG61:\n        mov      rdi, gword ptr [rbx\u002B0x1F0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG62:\n        mov      rdi, gword ptr [rbx\u002B0x1E8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG63:\n        mov      rdi, gword ptr [rbx\u002B0x1E0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG64:\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M58568_IG06\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 4.75\n G_M58568_IG65:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M58568_IG66:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M58568_IG31 - G_M58568_IG02\n        \tdd\tG_M58568_IG30 - G_M58568_IG02\n        \tdd\tG_M58568_IG29 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG28 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG27 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG26 - G_M58568_IG02\n        \tdd\tG_M58568_IG21 - G_M58568_IG02\n        \tdd\tG_M58568_IG16 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG15 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG10 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG09 - G_M58568_IG02\n RWD84  \tdd\tG_M58568_IG42 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG41 - G_M58568_IG02\n        \tdd\tG_M58568_IG34 - G_M58568_IG02\n RWD104 \tdd\tG_M58568_IG64 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG63 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG62 - G_M58568_IG02\n        \tdd\tG_M58568_IG61 - G_M58568_IG02\n        \tdd\tG_M58568_IG60 - G_M58568_IG02\n        \tdd\tG_M58568_IG05 - G_M58568_IG02\n        \tdd\tG_M58568_IG59 - G_M58568_IG02\n        \tdd\tG_M58568_IG50 - G_M58568_IG02\n        \tdd\tG_M58568_IG45 - G_M58568_IG02\n \n \n-; Total bytes of code 1891, prolog size 33, PerfScore 277.23, instruction count 466, allocated bytes for code 1891 (MethodHash=d1671b37) for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n\u002B; Total bytes of code 1737, prolog size 35, PerfScore 274.36, instruction count 437, allocated bytes for code 1737 (MethodHash=d1671b37) for method dnlib.DotNet.ModuleDefMD:ResolveHasCustomAttribute(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IHasCustomAttribute:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1891,"DiffBytes":1737},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M41556_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M41556_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M41556_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M41556_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M41556_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M41556_IG04:\n        cmp      r15d, 1\n        jne      G_M41556_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M41556_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M41556_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M41556_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M41556_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M41556_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M41556_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M41556_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M41556_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41556_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M41556_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41556_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=35005dab) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=35005dab) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"SharpCompress.dasm","Method":"SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_reset_matchState(ptr,ptr,ptr,int,int,int,int):nuint (FullOpts)","Category":"same-size","Description":"13,312 -\u003E 13,312 bytes (0)","ExtraInfo":null,"Diff":"@@ -4296,7 \u002B4296,7 @@ G_M41884_IG245:\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007B8D86454D7Ah, 00007B8D86454D78h, 00007B8D86454D78h, 0000000200000002h\n\u002BRWD00  \tdq\t00007E903F1FBD7Ah, 00007E903F1FBD78h, 00007E903F1FBD78h, 0000000200000002h\n \n \n ; Total bytes of code 13312, prolog size 19, PerfScore 658.88, instruction count 2790, allocated bytes for code 13312 (MethodHash=8fa35c63) for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_reset_matchState(ptr,ptr,ptr,int,int,int,int):nuint (FullOpts)","Truncated":true,"BaseBytes":13312,"DiffBytes":13312},{"Assembly":"SkiaSharp.dasm","Method":"SkiaSharp.SKDrawable:.cctor() (FullOpts)","Category":"same-size","Description":"231 -\u003E 231 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method SkiaSharp.SKDrawable:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSkiaSharp.SKManagedDrawableDelegates\u003E\n ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (40) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n ;  V02 FramesRoot   [V02,T00] (  6,  6   )    long  -\u003E  rbx         \u0022Pinvoke FrameListRoot\u0022\n ;  V03 PInvokeFrame [V03    ] (  8,  8   )  struct (56) [rbp-0x60]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[000..008)\u0022\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[008..016)\u0022\n ;* V06 tmp5         [V06    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[016..024)\u0022\n ;* V07 tmp6         [V07    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[024..032)\u0022\n ;* V08 tmp7         [V08    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V00.[032..040)\u0022\n ;  V09 cse0         [V09,T01] (  3,  3   )    long  -\u003E  rax         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 104\n \n G_M54578_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 6.75\n G_M54578_IG02:\n        lea      rdi, [rbp-0x60]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      rbx, rax\n        mov      rax, rsp\n        mov      qword ptr [rbp-0x48], rax\n        mov      rax, rbp\n        mov      qword ptr [rbp-0x38], rax\n        mov      rax, 0xD1FFAB1E      ; static handle\n        mov      rcx, 0xD1FFAB1E\n        mov      qword ptr [rax], rcx\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        mov      rcx, 0xD1FFAB1E\n        vmovups  ymmword ptr [rcx], ymm0\n        vmovdqu  xmm0, xmmword ptr [rax]\n        vmovdqu  xmmword ptr [rsp], xmm0\n        vmovdqu  xmm0, xmmword ptr [rax\u002B0x10]\n        vmovdqu  xmmword ptr [rsp\u002B0x10], xmm0\n        mov      rcx, qword ptr [rax\u002B0x20]\n        mov      qword ptr [rsp\u002B0x20], rcx\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x50], rax\n        lea      rax, G_M54578_IG05\n        mov      qword ptr [rbp-0x40], rax\n        lea      rax, [rbp-0x60]\n        mov      qword ptr [rbx\u002B0x08], rax\n        mov      byte  ptr [rbx\u002B0x04], 0\n \t\t\t\t\t\t;; size=137 bbWeight=1 PerfScore 23.75\n G_M54578_IG03:\n        mov      rax, 0xD1FFAB1E      ; code for SkiaSharp.SkiaApi:sk_manageddrawable_set_procs(SkiaSharp.SKManagedDrawableDelegates)\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M54578_IG04:\n        vzeroupper \n        call     [rax]SkiaSharp.SkiaApi:sk_manageddrawable_set_procs(SkiaSharp.SKManagedDrawableDelegates)\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 4.00\n G_M54578_IG05:\n        mov      byte  ptr [rbx\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M54578_IG06\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 7.50\n G_M54578_IG06:\n        mov      rax, qword ptr [rbp-0x58]\n        mov      qword ptr [rbx\u002B0x08], rax\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 2.00\n G_M54578_IG07:\n        vzeroupper \n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 5.25\n-RWD00  \tdq\t0000796AE7063F48h, 0000796AE7063F00h, 0000796AE7063F60h, 0000796AE7063F18h\n\u002BRWD00  \tdq\t00007E26DC243F48h, 00007E26DC243F00h, 00007E26DC243F60h, 00007E26DC243F18h\n \n \n ; Total bytes of code 231, prolog size 22, PerfScore 49.50, instruction count 54, allocated bytes for code 231 (MethodHash=68ea2acd) for method SkiaSharp.SKDrawable:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":231,"DiffBytes":231},{"Assembly":"System.Private.CoreLib.dasm","Method":"System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)","Category":"same-size","Description":"167 -\u003E 167 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,73 \u002B1,73 @@\n ; Assembly listing for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSystem.Runtime.CompilerServices.ResumeInfo\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V02 tmp1         [V02,T00] (  4,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Threading.SendOrPostCallback\u003E\n ;  V03 tmp2         [V03,T01] (  3,  6   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CSystem.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.Resume (fldOffset=0x0)\u0022 P-INDEP\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022field V00.DiagnosticIP (fldOffset=0x8)\u0022 P-INDEP\n ;  V06 cse0         [V06,T02] (  2,  2   )    long  -\u003E  rdi         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 8\n \n G_M63124_IG01:\n        push     rbp\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x10]\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 3.50\n G_M63124_IG02:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:ResumeInfo\n        vmovsd   xmm0, qword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rdi], xmm0\n        mov      rdi, 0xD1FFAB1E      ; System.Threading.SendOrPostCallback\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       SHORT G_M63124_IG05\n \t\t\t\t\t\t;; size=55 bbWeight=1 PerfScore 8.00\n G_M63124_IG03:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec:\u003C\u003E9\n        mov      rsi, gword ptr [rdi]\n        test     rsi, rsi\n        je       SHORT G_M63124_IG06\n        lea      rdi, bword ptr [rbx\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec:\u003C.cctor\u003Eb__3_0(System.Object):this\n        mov      qword ptr [rbx\u002B0x18], rdi\n        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:s_postCallback\n        mov      rsi, rbx\n        call     CORINFO_HELP_ASSIGN_REF\n        nop      \n \t\t\t\t\t\t;; size=60 bbWeight=1 PerfScore 8.00\n G_M63124_IG04:\n        add      rsp, 8\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M63124_IG05:\n        mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume\u002B\u003C\u003Ec\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      SHORT G_M63124_IG03\n \t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n G_M63124_IG06:\n        mov      rax, 0xD1FFAB1E      ; code for System.Delegate:ThrowNullThisInDelegateToInstance()\n        call     [rax]System.Delegate:ThrowNullThisInDelegateToInstance()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-RWD00  \tdq\t00007D8FEE721A88h\n\u002BRWD00  \tdq\t0000737CE4721A88h\n \n \n ; Total bytes of code 167, prolog size 8, PerfScore 21.75, instruction count 36, allocated bytes for code 167 (MethodHash=4e05096b) for method System.Runtime.CompilerServices.RuntimeAsyncTaskContinuation\u002BTaskContinuationResume:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":167,"DiffBytes":167},{"Assembly":"ZstdSharp.dasm","Method":"ZstdSharp.Unsafe.Methods:ZSTD_reset_matchState(ptr,ptr,ptr,int,int,int,int):nuint (FullOpts)","Category":"same-size","Description":"2,171 -\u003E 2,171 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,1095 \u002B1,1095 @@\n ; Assembly listing for method ZstdSharp.Unsafe.Methods:ZSTD_reset_matchState(ptr,ptr,ptr,int,int,int,int):nuint (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 65 single block inlinees; 41 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T01] ( 20, 14.50)    long  -\u003E  r15         single-def\n ;  V01 arg1         [V01,T00] (219,113.50)    long  -\u003E  rbx         single-def\n ;  V02 arg2         [V02,T02] ( 13,  8.50)    long  -\u003E  r14         single-def\n ;  V03 arg3         [V03,T03] (  4,  3   )     int  -\u003E  r13         single-def\n ;  V04 arg4         [V04,T05] (  3,  2.50)     int  -\u003E  r12         single-def\n ;  V05 arg5         [V05,T04] (  3,  3   )     int  -\u003E   r9         single-def\n ;  V06 arg6         [V06,T31] (  4,  2.50)     int  -\u003E  [rbp\u002B0x10]  single-def\n ;* V07 loc0         [V07    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;  V08 loc1         [V08,T17] (  5,  3   )    long  -\u003E  [rbp-0x30]  spill-single-def\n ;* V09 loc2         [V09    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V10 loc3         [V10    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;* V11 loc4         [V11    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;* V12 loc5         [V12    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V14 tmp1         [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022impAppendStmt\u0022\n ;  V15 tmp2         [V15,T44] (  3,  2   )     int  -\u003E  rdi        \n ;* V16 tmp3         [V16    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V17 tmp4         [V17    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V18 tmp5         [V18    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V19 tmp6         [V19    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;  V20 tmp7         [V20,T55] (  3,  1.50)    long  -\u003E  [rbp-0x38] \n ;  V21 tmp8         [V21,T07] (  6,  4   )     int  -\u003E  rdi        \n ;  V22 tmp9         [V22,T56] (  3,  1.50)    long  -\u003E  [rbp-0x40] \n ;  V23 tmp10        [V23,T48] (  2,  2   )    long  -\u003E  rcx         \u0022impAppendStmt\u0022\n ;  V24 tmp11        [V24,T49] (  2,  2   )    long  -\u003E  rcx         \u0022impAppendStmt\u0022\n ;  V25 tmp12        [V25,T50] (  2,  2   )    long  -\u003E  rcx         \u0022impAppendStmt\u0022\n ;  V26 tmp13        [V26,T51] (  2,  2   )    long  -\u003E  rcx         \u0022impAppendStmt\u0022\n ;  V27 tmp14        [V27,T52] (  2,  2   )    long  -\u003E  rcx         \u0022impAppendStmt\u0022\n ;  V28 tmp15        [V28,T53] (  2,  2   )    long  -\u003E  rax         \u0022impAppendStmt\u0022\n ;  V29 tmp16        [V29,T57] (  3,  1.50)     int  -\u003E  rcx        \n ;* V30 tmp17        [V30    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V31 tmp18        [V31    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V32 tmp19        [V32    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V33 tmp20        [V33    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V34 tmp21        [V34    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003CZstdSharp.Unsafe.ZSTD_window_t\u003E\n ;* V35 tmp22        [V35    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V36 tmp23        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V37 tmp24        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V38 tmp25        [V38    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V39 tmp26        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V40 tmp27        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V41 tmp28        [V41    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V42 tmp29        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V43 tmp30        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;  V44 tmp31        [V44,T45] (  3,  2   )    long  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;* V45 tmp32        [V45    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V46 tmp33        [V46,T58] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V47 tmp34        [V47    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V48 tmp35        [V48,T59] (  3,  1.50)    long  -\u003E  rdi         \u0022Inline stloc first use temp\u0022\n ;* V49 tmp36        [V49    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V50 tmp37        [V50    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V51 tmp38        [V51,T18] (  3,  3   )    long  -\u003E  rsi         \u0022dup spill\u0022\n ;* V52 tmp39        [V52    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V53 tmp40        [V53,T32] (  4,  2   )    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;  V54 tmp41        [V54,T60] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V55 tmp42        [V55    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V56 tmp43        [V56,T46] (  3,  2   )    long  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;* V57 tmp44        [V57    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V58 tmp45        [V58,T61] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V59 tmp46        [V59    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V60 tmp47        [V60,T62] (  3,  1.50)    long  -\u003E  rdi         \u0022Inline stloc first use temp\u0022\n ;* V61 tmp48        [V61    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V62 tmp49        [V62    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V63 tmp50        [V63,T19] (  3,  3   )    long  -\u003E  rsi         \u0022dup spill\u0022\n ;* V64 tmp51        [V64    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V65 tmp52        [V65,T33] (  4,  2   )    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;  V66 tmp53        [V66,T63] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V67 tmp54        [V67    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V68 tmp55        [V68,T47] (  3,  2   )    long  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;* V69 tmp56        [V69    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V70 tmp57        [V70,T64] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V71 tmp58        [V71    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V72 tmp59        [V72,T65] (  3,  1.50)    long  -\u003E  rdi         \u0022Inline stloc first use temp\u0022\n ;* V73 tmp60        [V73    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V74 tmp61        [V74    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V75 tmp62        [V75,T20] (  3,  3   )    long  -\u003E  rsi         \u0022dup spill\u0022\n ;* V76 tmp63        [V76    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V77 tmp64        [V77,T34] (  4,  2   )    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;  V78 tmp65        [V78,T66] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V79 tmp66        [V79    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V80 tmp67        [V80    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V81 tmp68        [V81    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V82 tmp69        [V82    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V83 tmp70        [V83,T54] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V84 tmp71        [V84    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V85 tmp72        [V85,T30] (  5,  2.50)    long  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V86 tmp73        [V86    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V87 tmp74        [V87    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;* V88 tmp75        [V88    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;* V89 tmp76        [V89    ] (  0,  0   )    long  -\u003E  zero-ref   \n ;* V90 tmp77        [V90    ] (  0,  0   )     int  -\u003E  zero-ref   \n ;  V91 tmp78        [V91,T111] (  2,  1   )    long  -\u003E  rdx        \n ;* V92 tmp79        [V92    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V93 tmp80        [V93,T06] (  8,  4   )    long  -\u003E  r12         \u0022Inline return value spill temp\u0022\n ;* V94 tmp81        [V94    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V95 tmp82        [V95,T21] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V96 tmp83        [V96    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V97 tmp84        [V97,T35] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V98 tmp85        [V98,T67] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V99 tmp86        [V99    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V100 tmp87       [V100,T68] (  3,  1.50)    long  -\u003E  r12         \u0022Inline return value spill temp\u0022\n ;  V101 tmp88       [V101,T09] (  6,  3   )    long  -\u003E  r12         \u0022Inline stloc first use temp\u0022\n ;* V102 tmp89       [V102    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V103 tmp90       [V103    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V104 tmp91       [V104    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V105 tmp92       [V105    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V106 tmp93       [V106,T69] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V107 tmp94       [V107,T22] (  3,  3   )    long  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V108 tmp95       [V108    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V109 tmp96       [V109,T23] (  3,  3   )    long  -\u003E  rsi         \u0022dup spill\u0022\n ;* V110 tmp97       [V110    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V111 tmp98       [V111,T36] (  4,  2   )    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;  V112 tmp99       [V112,T70] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V113 tmp100      [V113    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V114 tmp101      [V114,T71] (  3,  1.50)    long  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V115 tmp102      [V115,T10] (  6,  3   )    long  -\u003E  rsi         \u0022Inline stloc first use temp\u0022\n ;* V116 tmp103      [V116    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V117 tmp104      [V117    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V118 tmp105      [V118    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V119 tmp106      [V119    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V120 tmp107      [V120,T72] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V121 tmp108      [V121    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V122 tmp109      [V122    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V123 tmp110      [V123,T24] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V124 tmp111      [V124    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V125 tmp112      [V125,T37] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V126 tmp113      [V126,T73] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V127 tmp114      [V127    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V128 tmp115      [V128,T74] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;  V129 tmp116      [V129,T11] (  6,  3   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V130 tmp117      [V130    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V131 tmp118      [V131    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V132 tmp119      [V132,T75] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V133 tmp120      [V133    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V134 tmp121      [V134    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V135 tmp122      [V135,T25] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V136 tmp123      [V136    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V137 tmp124      [V137,T38] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V138 tmp125      [V138,T76] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V139 tmp126      [V139    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V140 tmp127      [V140,T77] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;  V141 tmp128      [V141,T12] (  6,  3   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V142 tmp129      [V142    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V143 tmp130      [V143    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V144 tmp131      [V144,T78] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V145 tmp132      [V145    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V146 tmp133      [V146    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V147 tmp134      [V147,T26] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V148 tmp135      [V148    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V149 tmp136      [V149,T39] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V150 tmp137      [V150,T79] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V151 tmp138      [V151    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V152 tmp139      [V152,T80] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;  V153 tmp140      [V153,T13] (  6,  3   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V154 tmp141      [V154    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V155 tmp142      [V155    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V156 tmp143      [V156,T81] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V157 tmp144      [V157    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V158 tmp145      [V158    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V159 tmp146      [V159,T27] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V160 tmp147      [V160    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V161 tmp148      [V161,T40] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V162 tmp149      [V162,T82] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V163 tmp150      [V163    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V164 tmp151      [V164,T83] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;  V165 tmp152      [V165,T14] (  6,  3   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V166 tmp153      [V166    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V167 tmp154      [V167    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V168 tmp155      [V168,T84] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V169 tmp156      [V169    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V170 tmp157      [V170    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V171 tmp158      [V171,T28] (  3,  3   )    long  -\u003E  rdx         \u0022dup spill\u0022\n ;* V172 tmp159      [V172    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V173 tmp160      [V173,T41] (  4,  2   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;  V174 tmp161      [V174,T85] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V175 tmp162      [V175    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V176 tmp163      [V176,T86] (  3,  1.50)    long  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;  V177 tmp164      [V177,T15] (  6,  3   )    long  -\u003E  rdx         \u0022Inline stloc first use temp\u0022\n ;* V178 tmp165      [V178    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V179 tmp166      [V179    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V180 tmp167      [V180,T87] (  3,  1.50)    long  -\u003E  rcx         \u0022Inline return value spill temp\u0022\n ;* V181 tmp168      [V181    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V182 tmp169      [V182    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V183 tmp170      [V183,T29] (  3,  3   )    long  -\u003E  rcx         \u0022dup spill\u0022\n ;* V184 tmp171      [V184    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V185 tmp172      [V185,T42] (  4,  2   )    long  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;  V186 tmp173      [V186,T88] (  3,  1.50)    long  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;* V187 tmp174      [V187    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;  V188 tmp175      [V188,T89] (  3,  1.50)    long  -\u003E  rcx         \u0022Inline return value spill temp\u0022\n ;  V189 tmp176      [V189,T16] (  6,  3   )    long  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;* V190 tmp177      [V190    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Inline stloc first use temp\u0022\n ;* V191 tmp178      [V191    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V35._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V192 tmp179      [V192    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V35._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V193 tmp180      [V193    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V36._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V194 tmp181      [V194    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V36._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V195 tmp182      [V195    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V37._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V196 tmp183      [V196    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V37._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V197 tmp184      [V197    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V38._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V198 tmp185      [V198    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V38._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V199 tmp186      [V199    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V39._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V200 tmp187      [V200    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V39._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V201 tmp188      [V201    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V40._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V202 tmp189      [V202    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V40._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V203 tmp190      [V203    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V41._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V204 tmp191      [V204    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V41._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V205 tmp192      [V205    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V42._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V206 tmp193      [V206    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V42._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V207 tmp194      [V207    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V43._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V208 tmp195      [V208    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V43._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V209 tmp196      [V209    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V34.[000..008)\u0022\n ;* V210 tmp197      [V210    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V34.[008..016)\u0022\n ;* V211 tmp198      [V211    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V34.[016..024)\u0022\n ;* V212 tmp199      [V212    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V34.[024..028)\u0022\n ;* V213 tmp200      [V213    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V34.[028..032)\u0022\n ;* V214 tmp201      [V214    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V34.[032..036)\u0022\n ;* V215 tmp202      [V215    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V216 tmp203      [V216    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V217 tmp204      [V217    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;  V218 cse0        [V218,T90] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #09: conservative\u0022\n ;  V219 cse1        [V219,T91] (  3,  1.50)    long  -\u003E  rdi         \u0022CSE #05: conservative\u0022\n ;  V220 cse2        [V220,T92] (  3,  1.50)    long  -\u003E  r12         \u0022CSE #06: conservative\u0022\n ;  V221 cse3        [V221,T93] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #08: conservative\u0022\n ;  V222 cse4        [V222,T43] (  4,  2   )     int  -\u003E  rax         \u0022CSE #15: conservative\u0022\n ;  V223 cse5        [V223,T94] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #02: conservative\u0022\n ;  V224 cse6        [V224,T95] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #03: conservative\u0022\n ;  V225 cse7        [V225,T96] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #04: conservative\u0022\n ;  V226 cse8        [V226,T97] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #07: conservative\u0022\n ;  V227 cse9        [V227,T98] (  3,  1.50)    long  -\u003E  rsi         \u0022CSE #14: conservative\u0022\n ;  V228 cse10       [V228,T99] (  3,  1.50)     int  -\u003E  rdx         \u0022CSE #16: conservative\u0022\n ;  V229 cse11       [V229,T100] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #17: conservative\u0022\n ;  V230 cse12       [V230,T101] (  3,  1.50)     int  -\u003E  rdx         \u0022CSE #19: conservative\u0022\n ;  V231 cse13       [V231,T102] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #20: conservative\u0022\n ;  V232 cse14       [V232,T103] (  3,  1.50)     int  -\u003E  rdx         \u0022CSE #21: conservative\u0022\n ;  V233 cse15       [V233,T104] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #22: conservative\u0022\n ;  V234 cse16       [V234,T105] (  3,  1.50)     int  -\u003E  rdx         \u0022CSE #23: conservative\u0022\n ;  V235 cse17       [V235,T106] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #24: conservative\u0022\n ;  V236 cse18       [V236,T107] (  3,  1.50)     int  -\u003E  rdx         \u0022CSE #25: conservative\u0022\n ;  V237 cse19       [V237,T108] (  3,  1.50)    long  -\u003E  rdx         \u0022CSE #26: conservative\u0022\n ;  V238 cse20       [V238,T109] (  3,  1.50)     int  -\u003E  rcx         \u0022CSE #27: conservative\u0022\n ;  V239 cse21       [V239,T110] (  3,  1.50)    long  -\u003E  rcx         \u0022CSE #28: conservative\u0022\n ;  V240 cse22       [V240,T08] (  7,  3.50)    long  -\u003E  rax         \u0022CSE #18: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M6090_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        mov      r15, rdi\n        mov      rbx, rsi\n        mov      r14, rdx\n        mov      r13d, ecx\n        mov      r12d, r8d\n        mov      eax, dword ptr [rbp\u002B0x10]\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 9.00\n G_M6090_IG02:\n        mov      edi, dword ptr [r14\u002B0x18]\n        cmp      dword ptr [r15\u002B0x8C], 0\n        je       SHORT G_M6090_IG04\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M6090_IG03:\n        test     eax, eax\n        je       SHORT G_M6090_IG05\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG04:\n        cmp      edi, 1\n        je       SHORT G_M6090_IG07\n        sub      edi, 3\n        cmp      edi, 2\n        jbe      SHORT G_M6090_IG06\n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.38\n G_M6090_IG05:\n        mov      edi, dword ptr [r14\u002B0x04]\n        mov      ecx, 1\n        shlx     rcx, rcx, rdi\n        jmp      SHORT G_M6090_IG08\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 2.38\n G_M6090_IG06:\n        cmp      r13d, 1\n        jne      SHORT G_M6090_IG05\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG07:\n        xor      ecx, ecx\n        mov      qword ptr [rbp-0x38], rcx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG08:\n        mov      edi, dword ptr [r14\u002B0x08]\n        mov      edx, 1\n        shlx     rdx, rdx, rdi\n        mov      qword ptr [rbp-0x30], rdx\n        mov      dword ptr [rbp\u002B0x10], eax\n        cmp      eax, 1\n        jne      SHORT G_M6090_IG11\n \t\t\t\t\t\t;; size=26 bbWeight=1 PerfScore 6.00\n G_M6090_IG09:\n        cmp      dword ptr [r14\u002B0x10], 3\n        jne      SHORT G_M6090_IG11\n        cmp      dword ptr [r14], 17\n        jbe      SHORT G_M6090_IG10\n        mov      edi, 17\n        jmp      SHORT G_M6090_IG12\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.12\n G_M6090_IG10:\n        mov      edi, dword ptr [r14]\n        jmp      SHORT G_M6090_IG12\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 2.00\n G_M6090_IG11:\n        xor      edi, edi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG12:\n        test     edi, edi\n        je       SHORT G_M6090_IG14\n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 1.25\n G_M6090_IG13:\n        mov      esi, 1\n        shlx     rsi, rsi, rdi\n        mov      qword ptr [rbp-0x40], rsi\n        jmp      SHORT G_M6090_IG15\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 1.88\n G_M6090_IG14:\n        xor      esi, esi\n        mov      qword ptr [rbp-0x40], rsi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG15:\n        cmp      r9d, 1\n        je       SHORT G_M6090_IG17\n \t\t\t\t\t\t;; size=6 bbWeight=1 PerfScore 1.25\n G_M6090_IG16:\n        mov      qword ptr [rbp-0x38], rcx\n        jmp      SHORT G_M6090_IG18\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG17:\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [r15], ymm0\n        xor      r8d, r8d\n        mov      dword ptr [r15\u002B0x20], r8d\n        mov      r8, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], r8\n        mov      qword ptr [rbp-0x38], rcx\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.12\n G_M6090_IG18:\n        mov      dword ptr [r15\u002B0x30], edi\n        xor      edi, edi\n        mov      dword ptr [r15\u002B0x12C], edi\n        mov      rdi, r15\n        mov      r8, 0xD1FFAB1E      ; code for ZstdSharp.Unsafe.Methods:ZSTD_invalidateMatchState(ptr)\n        call     [r8]ZstdSharp.Unsafe.Methods:ZSTD_invalidateMatchState(ptr)\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x18], rsi\n        cmp      dword ptr [rbx\u002B0x40], 0\n        jg       SHORT G_M6090_IG21\n \t\t\t\t\t\t;; size=43 bbWeight=1 PerfScore 11.75\n G_M6090_IG19:\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rsi\n        mov      rsi, qword ptr [rbx\u002B0x08]\n        mov      rdi, rsi\n        and      rdi, 63\n        sub      rsi, rdi\n        mov      qword ptr [rbx\u002B0x30], rsi\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      rdi, rsi\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rsi, rdi\n        cmp      rsi, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG23\n        mov      qword ptr [rbx\u002B0x10], rsi\n        mov      qword ptr [rbx\u002B0x18], rsi\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rsi\n        jae      SHORT G_M6090_IG20\n        mov      qword ptr [rbx\u002B0x20], rsi\n \t\t\t\t\t\t;; size=79 bbWeight=0.50 PerfScore 10.62\n G_M6090_IG20:\n        mov      dword ptr [rbx\u002B0x40], 1\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG21:\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        mov      rax, qword ptr [rbp-0x30]\n        lea      rdi, [rsi\u002B4*rax]\n        cmp      rdi, qword ptr [rbx\u002B0x28]\n        ja       SHORT G_M6090_IG22\n        mov      qword ptr [rbx\u002B0x18], rdi\n        jmp      SHORT G_M6090_IG24\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.75\n G_M6090_IG22:\n        mov      byte  ptr [rbx\u002B0x38], 1\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG23:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG24:\n        mov      qword ptr [r15\u002B0x70], rsi\n        cmp      dword ptr [rbx\u002B0x40], 0\n        jg       SHORT G_M6090_IG27\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 4.00\n G_M6090_IG25:\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rsi\n        mov      rsi, qword ptr [rbx\u002B0x08]\n        mov      rdi, rsi\n        and      rdi, 63\n        sub      rsi, rdi\n        mov      qword ptr [rbx\u002B0x30], rsi\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      rdi, rsi\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rsi, rdi\n        cmp      rsi, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG29\n        mov      qword ptr [rbx\u002B0x10], rsi\n        mov      qword ptr [rbx\u002B0x18], rsi\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rsi\n        jae      SHORT G_M6090_IG26\n        mov      qword ptr [rbx\u002B0x20], rsi\n \t\t\t\t\t\t;; size=79 bbWeight=0.50 PerfScore 10.62\n G_M6090_IG26:\n        mov      dword ptr [rbx\u002B0x40], 1\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG27:\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        mov      rdi, qword ptr [rbp-0x38]\n        lea      rdi, [rsi\u002B4*rdi]\n        cmp      rdi, qword ptr [rbx\u002B0x28]\n        ja       SHORT G_M6090_IG28\n        mov      qword ptr [rbx\u002B0x18], rdi\n        jmp      SHORT G_M6090_IG30\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.75\n G_M6090_IG28:\n        mov      byte  ptr [rbx\u002B0x38], 1\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG29:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG30:\n        mov      qword ptr [r15\u002B0x80], rsi\n        cmp      dword ptr [rbx\u002B0x40], 0\n        jg       SHORT G_M6090_IG33\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 4.00\n G_M6090_IG31:\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rsi\n        mov      rsi, qword ptr [rbx\u002B0x08]\n        mov      rdi, rsi\n        and      rdi, 63\n        sub      rsi, rdi\n        mov      qword ptr [rbx\u002B0x30], rsi\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      rdi, rsi\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rsi, rdi\n        cmp      rsi, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG35\n        mov      qword ptr [rbx\u002B0x10], rsi\n        mov      qword ptr [rbx\u002B0x18], rsi\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rsi\n        jae      SHORT G_M6090_IG32\n        mov      qword ptr [rbx\u002B0x20], rsi\n \t\t\t\t\t\t;; size=79 bbWeight=0.50 PerfScore 10.62\n G_M6090_IG32:\n        mov      dword ptr [rbx\u002B0x40], 1\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG33:\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        mov      rdi, qword ptr [rbp-0x40]\n        lea      rdi, [rsi\u002B4*rdi]\n        cmp      rdi, qword ptr [rbx\u002B0x28]\n        ja       SHORT G_M6090_IG34\n        mov      qword ptr [rbx\u002B0x18], rdi\n        jmp      SHORT G_M6090_IG36\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.75\n G_M6090_IG34:\n        mov      byte  ptr [rbx\u002B0x38], 1\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG35:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG36:\n        mov      qword ptr [r15\u002B0x78], rsi\n        cmp      byte  ptr [rbx\u002B0x38], 0\n        jne      G_M6090_IG107\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 4.00\n G_M6090_IG37:\n        cmp      r12d, 1\n        je       SHORT G_M6090_IG38\n        mov      rdi, qword ptr [rbx\u002B0x20]\n        mov      r12, qword ptr [rbx\u002B0x18]\n        cmp      rdi, r12\n        jae      SHORT G_M6090_IG38\n        mov      esi, dword ptr [rbx\u002B0x18]\n        sub      esi, dword ptr [rbx\u002B0x20]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rcx]CORINFO_HELP_MEMZERO\n        mov      qword ptr [rbx\u002B0x20], r12\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 7.38\n G_M6090_IG38:\n        mov      edi, dword ptr [r14\u002B0x18]\n        sub      edi, 3\n        cmp      edi, 2\n        jbe      SHORT G_M6090_IG40\n \t\t\t\t\t\t;; size=12 bbWeight=0.50 PerfScore 1.75\n G_M6090_IG39:\n        mov      r13d, dword ptr [rbp\u002B0x10]\n        jmp      G_M6090_IG62\n \t\t\t\t\t\t;; size=9 bbWeight=0.38 PerfScore 1.12\n G_M6090_IG40:\n        cmp      r13d, 1\n        je       SHORT G_M6090_IG42\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG41:\n        mov      r13d, dword ptr [rbp\u002B0x10]\n        jmp      G_M6090_IG62\n \t\t\t\t\t\t;; size=9 bbWeight=0.25 PerfScore 0.75\n G_M6090_IG42:\n        mov      r13d, dword ptr [rbp\u002B0x10]\n        cmp      r13d, 1\n        je       G_M6090_IG50\n        mov      rax, qword ptr [rbp-0x30]\n        lea      rdi, [rax\u002B0x3F]\n        and      rdi, -64\n        cmp      dword ptr [rbx\u002B0x40], 2\n        jge      SHORT G_M6090_IG44\n        cmp      dword ptr [rbx\u002B0x40], 0\n        jg       SHORT G_M6090_IG43\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rsi\n        mov      rsi, qword ptr [rbx\u002B0x08]\n        mov      rcx, rsi\n        and      rcx, 63\n        sub      rsi, rcx\n        mov      qword ptr [rbx\u002B0x30], rsi\n        mov      rsi, qword ptr [rbx\u002B0x10]\n        mov      rcx, rsi\n        and      rcx, 63\n        neg      rcx\n        add      rcx, 64\n        and      rcx, 63\n        add      rsi, rcx\n        cmp      rsi, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG48\n        mov      qword ptr [rbx\u002B0x10], rsi\n        mov      qword ptr [rbx\u002B0x18], rsi\n        mov      rsi, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rsi\n        jae      SHORT G_M6090_IG43\n        mov      qword ptr [rbx\u002B0x20], rsi\n \t\t\t\t\t\t;; size=117 bbWeight=0.50 PerfScore 15.62\n G_M6090_IG43:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG44:\n        test     rdi, rdi\n        je       SHORT G_M6090_IG48\n        mov      rsi, qword ptr [rbx\u002B0x28]\n        sub      rsi, rdi\n        cmp      rsi, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG46\n        cmp      rsi, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG45\n        mov      qword ptr [rbx\u002B0x20], rsi\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 5.25\n G_M6090_IG45:\n        mov      qword ptr [rbx\u002B0x28], rsi\n        jmp      SHORT G_M6090_IG47\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG46:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      esi, esi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG47:\n        jmp      SHORT G_M6090_IG49\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG48:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG49:\n        mov      qword ptr [r15\u002B0x38], rsi\n        mov      rdi, qword ptr [r15\u002B0x38]\n        mov      esi, eax\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMZERO\n        call     [rax]CORINFO_HELP_MEMZERO\n        xor      edx, edx\n        mov      qword ptr [r15\u002B0x60], rdx\n        jmp      G_M6090_IG59\n \t\t\t\t\t\t;; size=33 bbWeight=0.50 PerfScore 4.88\n G_M6090_IG50:\n        mov      rax, qword ptr [rbp-0x30]\n        add      rax, 63\n        and      rax, -64\n        cmp      dword ptr [rbx\u002B0x40], 0\n        jg       SHORT G_M6090_IG52\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG56\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG51\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=97 bbWeight=0.50 PerfScore 12.88\n G_M6090_IG51:\n        mov      dword ptr [rbx\u002B0x40], 1\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG52:\n        test     rax, rax\n        je       SHORT G_M6090_IG56\n        mov      r12, qword ptr [rbx\u002B0x28]\n        sub      r12, rax\n        cmp      r12, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG54\n        cmp      r12, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG53\n        mov      qword ptr [rbx\u002B0x20], r12\n \t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 5.25\n G_M6090_IG53:\n        mov      qword ptr [rbx\u002B0x28], r12\n        jmp      SHORT G_M6090_IG55\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG54:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      r12d, r12d\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG55:\n        jmp      SHORT G_M6090_IG57\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG56:\n        xor      r12d, r12d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG57:\n        test     r12, r12\n        je       SHORT G_M6090_IG58\n        mov      rdx, qword ptr [rbx\u002B0x30]\n        cmp      r12, rdx\n        jae      SHORT G_M6090_IG58\n        sub      rdx, r12\n        cmp      rdx, rax\n        cmovae   rdx, rax\n        mov      edx, edx\n        mov      rdi, r12\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_MEMSET\n        call     [rax]CORINFO_HELP_MEMSET\n        mov      qword ptr [rbx\u002B0x30], r12\n \t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 5.25\n G_M6090_IG58:\n        mov      qword ptr [r15\u002B0x38], r12\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ZstdSharp.Unsafe.Methods:ZSTD_advanceHashSalt(ptr)\n        call     [rax]ZstdSharp.Unsafe.Methods:ZSTD_advanceHashSalt(ptr)\n \t\t\t\t\t\t;; size=19 bbWeight=0.50 PerfScore 2.25\n G_M6090_IG59:\n        mov      eax, dword ptr [r14\u002B0x0C]\n        cmp      eax, 4\n        ja       SHORT G_M6090_IG60\n        mov      ecx, 4\n        jmp      SHORT G_M6090_IG61\n \t\t\t\t\t\t;; size=16 bbWeight=0.50 PerfScore 2.75\n G_M6090_IG60:\n        mov      ecx, 6\n        cmp      eax, 6\n        cmovbe   ecx, eax\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG61:\n        mov      eax, dword ptr [r14\u002B0x08]\n        sub      eax, ecx\n        mov      dword ptr [r15\u002B0x34], eax\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 1.62\n G_M6090_IG62:\n        cmp      r13d, 1\n        jne      G_M6090_IG105\n        cmp      dword ptr [r14\u002B0x18], 7\n        jl       G_M6090_IG105\n        cmp      byte  ptr [r15], r15b\n        lea      rax, [r15\u002B0x90]\n        mov      rcx, rax\n        mov      edx, dword ptr [rbx\u002B0x40]\n        cmp      edx, 2\n        jge      SHORT G_M6090_IG64\n        test     edx, edx\n        jg       SHORT G_M6090_IG63\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG68\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG63\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=125 bbWeight=0.50 PerfScore 16.38\n G_M6090_IG63:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG64:\n        mov      rdx, qword ptr [rbx\u002B0x28]\n        add      rdx, -0x400\n        cmp      rdx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG66\n        cmp      rdx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG65\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=27 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG65:\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M6090_IG67\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG66:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      edx, edx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG67:\n        jmp      SHORT G_M6090_IG69\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG68:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG69:\n        mov      qword ptr [rcx], rdx\n        mov      rcx, rax\n        mov      edx, dword ptr [rbx\u002B0x40]\n        cmp      edx, 2\n        jge      SHORT G_M6090_IG71\n        test     edx, edx\n        jg       SHORT G_M6090_IG70\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG75\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG70\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=97 bbWeight=0.50 PerfScore 13.50\n G_M6090_IG70:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG71:\n        mov      rdx, qword ptr [rbx\u002B0x28]\n        add      rdx, -192\n        cmp      rdx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG73\n        cmp      rdx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG72\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=27 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG72:\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M6090_IG74\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG73:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      edx, edx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG74:\n        jmp      SHORT G_M6090_IG76\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG75:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG76:\n        mov      qword ptr [rcx\u002B0x08], rdx\n        mov      rcx, rax\n        mov      edx, dword ptr [rbx\u002B0x40]\n        cmp      edx, 2\n        jge      SHORT G_M6090_IG78\n        test     edx, edx\n        jg       SHORT G_M6090_IG77\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG82\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG77\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=98 bbWeight=0.50 PerfScore 13.50\n G_M6090_IG77:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG78:\n        mov      rdx, qword ptr [rbx\u002B0x28]\n        add      rdx, -256\n        cmp      rdx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG80\n        cmp      rdx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG79\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=27 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG79:\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M6090_IG81\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG80:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      edx, edx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG81:\n        jmp      SHORT G_M6090_IG83\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG82:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG83:\n        mov      qword ptr [rcx\u002B0x10], rdx\n        mov      rcx, rax\n        mov      edx, dword ptr [rbx\u002B0x40]\n        cmp      edx, 2\n        jge      SHORT G_M6090_IG85\n        test     edx, edx\n        jg       SHORT G_M6090_IG84\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG89\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG84\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=98 bbWeight=0.50 PerfScore 13.50\n G_M6090_IG84:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG85:\n        mov      rdx, qword ptr [rbx\u002B0x28]\n        add      rdx, -128\n        cmp      rdx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG87\n        cmp      rdx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG86\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG86:\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M6090_IG88\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG87:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      edx, edx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG88:\n        jmp      SHORT G_M6090_IG90\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG89:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG90:\n        mov      qword ptr [rcx\u002B0x18], rdx\n        mov      rcx, rax\n        mov      edx, dword ptr [rbx\u002B0x40]\n        cmp      edx, 2\n        jge      SHORT G_M6090_IG92\n        test     edx, edx\n        jg       SHORT G_M6090_IG91\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rdx\n        mov      rdx, qword ptr [rbx\u002B0x08]\n        mov      rdi, rdx\n        and      rdi, 63\n        sub      rdx, rdi\n        mov      qword ptr [rbx\u002B0x30], rdx\n        mov      rdx, qword ptr [rbx\u002B0x10]\n        mov      rdi, rdx\n        and      rdi, 63\n        neg      rdi\n        add      rdi, 64\n        and      rdi, 63\n        add      rdx, rdi\n        cmp      rdx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG96\n        mov      qword ptr [rbx\u002B0x10], rdx\n        mov      qword ptr [rbx\u002B0x18], rdx\n        mov      rdx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rdx\n        jae      SHORT G_M6090_IG91\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=98 bbWeight=0.50 PerfScore 13.50\n G_M6090_IG91:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG92:\n        mov      rdx, qword ptr [rbx\u002B0x28]\n        add      rdx, -0x8040\n        cmp      rdx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG94\n        cmp      rdx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG93\n        mov      qword ptr [rbx\u002B0x20], rdx\n \t\t\t\t\t\t;; size=27 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG93:\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M6090_IG95\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG94:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      edx, edx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG95:\n        jmp      SHORT G_M6090_IG97\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG96:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG97:\n        mov      qword ptr [rcx\u002B0x20], rdx\n        mov      ecx, dword ptr [rbx\u002B0x40]\n        cmp      ecx, 2\n        jge      SHORT G_M6090_IG99\n        test     ecx, ecx\n        jg       SHORT G_M6090_IG98\n        mov      rcx, qword ptr [rbx\u002B0x10]\n        mov      qword ptr [rbx\u002B0x20], rcx\n        mov      rcx, qword ptr [rbx\u002B0x08]\n        mov      rdx, rcx\n        and      rdx, 63\n        sub      rcx, rdx\n        mov      qword ptr [rbx\u002B0x30], rcx\n        mov      rcx, qword ptr [rbx\u002B0x10]\n        mov      rdx, rcx\n        and      rdx, 63\n        neg      rdx\n        add      rdx, 64\n        and      rdx, 63\n        add      rcx, rdx\n        cmp      rcx, qword ptr [rbx\u002B0x08]\n        ja       SHORT G_M6090_IG103\n        mov      qword ptr [rbx\u002B0x10], rcx\n        mov      qword ptr [rbx\u002B0x18], rcx\n        mov      rcx, qword ptr [rbx\u002B0x18]\n        cmp      qword ptr [rbx\u002B0x20], rcx\n        jae      SHORT G_M6090_IG98\n        mov      qword ptr [rbx\u002B0x20], rcx\n \t\t\t\t\t\t;; size=95 bbWeight=0.50 PerfScore 13.38\n G_M6090_IG98:\n        mov      dword ptr [rbx\u002B0x40], 2\n \t\t\t\t\t\t;; size=7 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG99:\n        mov      rcx, qword ptr [rbx\u002B0x28]\n        add      rcx, -0x1C080\n        cmp      rcx, qword ptr [rbx\u002B0x18]\n        jb       SHORT G_M6090_IG101\n        cmp      rcx, qword ptr [rbx\u002B0x20]\n        jae      SHORT G_M6090_IG100\n        mov      qword ptr [rbx\u002B0x20], rcx\n \t\t\t\t\t\t;; size=27 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG100:\n        mov      qword ptr [rbx\u002B0x28], rcx\n        jmp      SHORT G_M6090_IG102\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M6090_IG101:\n        mov      byte  ptr [rbx\u002B0x38], 1\n        xor      ecx, ecx\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M6090_IG102:\n        jmp      SHORT G_M6090_IG104\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M6090_IG103:\n        xor      ecx, ecx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG104:\n        mov      qword ptr [rax\u002B0x28], rcx\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 0.50\n G_M6090_IG105:\n        vmovdqu  xmm0, xmmword ptr [r14]\n        vmovdqu32 xmmword ptr [r15\u002B0x100], xmm0\n        vmovdqu  xmm0, xmmword ptr [r14\u002B0x0C]\n        vmovdqu  xmmword ptr [r15\u002B0x10C], xmm0\n        cmp      byte  ptr [rbx\u002B0x38], 0\n        jne      SHORT G_M6090_IG107\n        xor      eax, eax\n \t\t\t\t\t\t;; size=35 bbWeight=0.50 PerfScore 4.62\n G_M6090_IG106:\n        vzeroupper \n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.62\n G_M6090_IG107:\n        mov      rax, -64\n \t\t\t\t\t\t;; size=10 bbWeight=0.50 PerfScore 0.12\n G_M6090_IG108:\n        vzeroupper \n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.62\n-RWD00  \tdq\t000074CAD84874CAh, 000074CAD84874C8h, 000074CAD84874C8h, 0000000200000002h\n\u002BRWD00  \tdq\t00007458921A64CAh, 00007458921A64C8h, 00007458921A64C8h, 0000000200000002h\n \n \n ; Total bytes of code 2171, prolog size 19, PerfScore 335.62, instruction count 620, allocated bytes for code 2171 (MethodHash=af31e835) for method ZstdSharp.Unsafe.Methods:ZSTD_reset_matchState(ptr,ptr,ptr,int,int,int,int):nuint (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":2171,"DiffBytes":2171},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)","Category":"improvement","Description":"1,276 -\u003E 1,187 bytes (-89)","ExtraInfo":null,"Diff":"@@ -1,469 \u002B1,455 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 22 single block inlinees; 12 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T17] (  9, 25   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 loc0         [V01,T18] (  5, 26   )     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T12] (  8, 32.50)     ref  -\u003E  r14         class-hnd \u003Cdnlib.DotNet.AssemblyRef\u003E\n-;  V03 loc2         [V03,T43] (  3,  5   )     int  -\u003E  r13        \n-;  V04 loc3         [V04,T46] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.AssemblyDef\u003E\n-;  V05 loc4         [V05,T23] (  5, 17   )     int  -\u003E  r12        \n\u002B;  V00 this         [V00,T18] (  9, 25   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V01 loc0         [V01,T19] (  5, 26   )     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T11] (  8, 32.50)     ref  -\u003E  r14         class-hnd \u003Cdnlib.DotNet.AssemblyRef\u003E\n\u002B;  V03 loc2         [V03,T46] (  3,  5   )     int  -\u003E  r13        \n\u002B;  V04 loc3         [V04,T49] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.AssemblyDef\u003E\n\u002B;  V05 loc4         [V05,T24] (  5, 17   )     int  -\u003E  r12        \n ;* V06 loc5         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V07 loc6         [V07,T42] (  3,  6   )     int  -\u003E  rdi         ld-addr-op\n-;  V08 loc7         [V08,T44] (  2,  4.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String[]\u003E\n-;* V09 loc8         [V09,T48] (  0,  0   )     int  -\u003E  zero-ref   \n-;  V10 loc9         [V10,T22] (  2, 20   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u003CSystem.String\u003E\n\u002B;  V07 loc6         [V07,T45] (  3,  6   )     int  -\u003E  rsi         ld-addr-op\n\u002B;  V08 loc7         [V08,T47] (  2,  4.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String[]\u003E\n\u002B;* V09 loc8         [V09,T51] (  0,  0   )     int  -\u003E  zero-ref   \n\u002B;  V10 loc9         [V10,T23] (  2, 20   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u003CSystem.String\u003E\n ;  V11 loc10        [V11,T03] (  5, 68   )     int  -\u003E  [rbp-0x2C] \n ;* V12 loc11        [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V14 tmp1         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.Nullable\u00601[bool]\u003E\n-;  V15 tmp2         [V15,T45] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.AssemblyRefUser\u003E\n\u002B;  V15 tmp2         [V15,T48] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.AssemblyRefUser\u003E\n ;* V16 tmp3         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V17 tmp4         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n-;  V18 tmp5         [V18,T30] (  5, 14   )     ref  -\u003E  [rbp-0x68]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V19 tmp6         [V19,T10] (  8, 40   )     int  -\u003E  [rbp-0x30]  spill-single-def \u0022Inlining Arg\u0022\n-;  V20 tmp7         [V20,T16] (  5, 28   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n-;  V21 tmp8         [V21,T34] (  3, 12   )   byref  -\u003E  [rbp-0x78]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V18 tmp5         [V18,T32] (  5, 14   )     ref  -\u003E  [rbp-0x68]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n\u002B;  V19 tmp6         [V19,T09] (  9, 44   )     int  -\u003E  [rbp-0x30]  spill-single-def \u0022Inlining Arg\u0022\n\u002B;  V20 tmp7         [V20,T17] (  5, 28   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n\u002B;  V21 tmp8         [V21,T41] (  2,  8   )   byref  -\u003E  [rbp-0x78]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V22 tmp9         [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n-;  V23 tmp10        [V23,T39] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V23 tmp10        [V23,T42] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V24 tmp11        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V25 tmp12        [V25    ] (  8, 32   )  struct (32) [rbp-0x50]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.FullNameFactory\u003E\n-;  V26 tmp13        [V26,T25] (  2, 16   )     ref  -\u003E  rdi         class-hnd exact \u0022dup spill\u0022 \u003CSystem.Text.StringBuilder\u003E\n-;  V27 tmp14        [V27,T31] (  4, 14   )     ref  -\u003E  rdi        \n-;  V28 tmp15        [V28,T24] (  4, 16   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V26 tmp13        [V26,T26] (  2, 16   )     ref  -\u003E  rdi         class-hnd exact \u0022dup spill\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V27 tmp14        [V27,T33] (  4, 14   )     ref  -\u003E  rdi        \n\u002B;  V28 tmp15        [V28,T25] (  4, 16   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n ;* V29 tmp16        [V29    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V30 tmp17        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref   \n-;  V31 tmp18        [V31,T13] (  4, 32   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n\u002B;  V31 tmp18        [V31,T12] (  4, 32   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Text.StringBuilder\u003E\n ;* V32 tmp19        [V32    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V33 tmp20        [V33    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V34 tmp21        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;* V35 tmp22        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewArr temp\u0022 \u003Cchar[]\u003E\n ;* V36 tmp23        [V36    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V37 tmp24        [V37,T26] (  2, 16   )     ref  -\u003E  [rbp-0x90]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,int]\u003E\n-;  V38 tmp25        [V38,T27] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n-;  V39 tmp26        [V39,T38] (  3, 10   )   byref  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V37 tmp24        [V37,T27] (  2, 16   )     ref  -\u003E  [rbp-0x90]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,int]\u003E\n\u002B;  V38 tmp25        [V38,T28] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n\u002B;  V39 tmp26        [V39,T40] (  3, 10   )   byref  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V40 tmp27        [V40,T05] (  5, 48   )     ref  -\u003E  [rbp-0x98]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V41 tmp28        [V41,T00] (  8,160   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V42 tmp29        [V42,T02] (  5,112   )     ref  -\u003E  [rbp-0xA0]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.AssemblyRefMD]\u003E\n-;  V43 tmp30        [V43,T06] (  3, 48   )   byref  -\u003E  [rbp-0xA8]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V43 tmp30        [V43,T14] (  2, 32   )   byref  -\u003E  [rbp-0xA8]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V44 tmp31        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V45 tmp32        [V45,T15] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V46 tmp33        [V46    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.AssemblyRefMD\u003E\n ;  V47 tmp34        [V47,T01] (  6,128   )     ref  -\u003E  [rbp-0xB0]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.UTF8String\u003E\n ;* V48 tmp35        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022dup spill\u0022 \u003CSystem.String\u003E\n-;  V49 tmp36        [V49,T04] (  4, 56   )     ref  -\u003E  rsi        \n-;  V50 tmp37        [V50,T11] (  4, 40   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n-;  V51 tmp38        [V51,T28] (  2, 16   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V52 tmp39        [V52,T19] (  3, 24   )     ref  -\u003E  rdi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n-;  V53 tmp40        [V53,T20] (  3, 24   )     ref  -\u003E  rsi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n-;  V54 tmp41        [V54,T29] (  2, 16   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V49 tmp36        [V49,T04] (  4, 56   )     ref  -\u003E  rdi        \n\u002B;  V50 tmp37        [V50,T10] (  4, 40   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n\u002B;  V51 tmp38        [V51,T29] (  2, 16   )   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n\u002B;  V52 tmp39        [V52,T20] (  3, 24   )     ref  -\u003E  rdi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n\u002B;  V53 tmp40        [V53,T21] (  3, 24   )     ref  -\u003E  rsi         class-hnd exact \u0022Inline stloc first use temp\u0022 \u003CSystem.Version\u003E\n\u002B;  V54 tmp41        [V54,T30] (  2, 16   )   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n ;* V55 tmp42        [V55    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CSystem.Nullable\u00601[bool]\u003E\n ;* V56 tmp43        [V56    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022field V14.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V57 tmp44        [V57    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022field V14.value (fldOffset=0x1)\u0022 P-INDEP\n ;* V58 tmp45        [V58    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022field V55.hasValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp46        [V59    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022field V55.value (fldOffset=0x1)\u0022 P-INDEP\n-;  V60 tmp47        [V60,T40] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V61 tmp48        [V61,T35] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V62 tmp49        [V62,T36] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V63 tmp50        [V63,T07] (  3, 48   )     ref  -\u003E  rdx         \u0022arr expr\u0022\n-;  V64 tmp51        [V64,T08] (  3, 48   )     ref  -\u003E  rdx         \u0022arr expr\u0022\n-;  V65 tmp52        [V65,T47] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V66 cse0         [V66,T14] (  4, 32   )     ref  -\u003E   r8         \u0022CSE #08: moderate\u0022\n-;  V67 cse1         [V67,T21] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #05: moderate\u0022\n-;  V68 cse2         [V68,T41] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: conservative\u0022\n-;  V69 rat0         [V69,T32] (  4, 12.50)    long  -\u003E  r12         \u0022Strength reduced derived IV\u0022\n-;  V70 rat1         [V70,T33] (  4, 12.50)     int  -\u003E  [rbp-0x58]  \u0022Trip count IV\u0022\n-;  V71 rat2         [V71,T37] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n-;  V72 rat3         [V72,T09] (  3, 48   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V60 tmp47        [V60,T43] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V61 tmp48        [V61,T36] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V62 tmp49        [V62,T37] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V63 tmp50        [V63,T38] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V64 tmp51        [V64,T06] (  3, 48   )     ref  -\u003E   r9         \u0022arr expr\u0022\n\u002B;  V65 tmp52        [V65,T16] (  2, 32   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V66 tmp53        [V66,T07] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V67 tmp54        [V67,T50] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V68 cse0         [V68,T13] (  4, 32   )     ref  -\u003E  rdi         \u0022CSE #09: moderate\u0022\n\u002B;  V69 cse1         [V69,T22] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #06: moderate\u0022\n\u002B;  V70 cse2         [V70,T44] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: conservative\u0022\n\u002B;  V71 cse3         [V71,T31] (  2, 16   )     int  -\u003E  r10         \u0022CSE #07: moderate\u0022\n\u002B;  V72 rat0         [V72,T34] (  4, 12.50)    long  -\u003E  r12         \u0022Strength reduced derived IV\u0022\n\u002B;  V73 rat1         [V73,T35] (  4, 12.50)     int  -\u003E  [rbp-0x58]  \u0022Trip count IV\u0022\n\u002B;  V74 rat2         [V74,T39] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V75 rat3         [V75,T08] (  3, 48   )     ref  -\u003E  r10         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 136\n \n G_M27023_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 136\n        lea      rbp, [rsp\u002B0xB0]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 8.33\n G_M27023_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n-       mov      rdi, gword ptr [rax\u002B0x168]\n-       mov      r15d, dword ptr [rdi\u002B0x58]\n\u002B       mov      rsi, gword ptr [rax\u002B0x168]\n\u002B       mov      r15d, dword ptr [rsi\u002B0x58]\n        xor      r14, r14\n        mov      r13d, 0xD1FFAB1E\n        mov      r12d, 1\n        test     r15d, r15d\n        je       G_M27023_IG14\n \t\t\t\t\t\t;; size=52 bbWeight=1 PerfScore 15.00\n G_M27023_IG03:\n        mov      rax, gword ptr [rbx\u002B0x1E0]\n        mov      gword ptr [rbp-0x70], rax\n        lea      ecx, [r12-0x01]\n        mov      dword ptr [rbp-0x30], ecx\n        cmp      ecx, dword ptr [rax\u002B0x18]\n-       jae      G_M27023_IG06\n-\t\t\t\t\t\t;; size=28 bbWeight=4 PerfScore 30.00\n\u002B       jae      SHORT G_M27023_IG06\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M27023_IG04:\n-       mov      rdi, gword ptr [rax\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      ecx, dword ptr [rsi\u002B0x08]\n-       jae      G_M27023_IG40\n\u002B       mov      rsi, gword ptr [rax\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      ecx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n        mov      edx, ecx\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M27023_IG05\n-       mov      esi, ecx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x78], rax\n-       mov      rcx, gword ptr [rbp-0x70]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x30]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       cmp      ecx, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n\u002B       mov      edi, ecx\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x78], rdx\n\u002B       mov      r8, gword ptr [rax\u002B0x10]\n\u002B       lea      esi, [rcx\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x78]\n-       test     rdi, rdi\n-       je       G_M27023_IG39\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-       mov      ecx, dword ptr [rbp-0x30]\n-\t\t\t\t\t\t;; size=104 bbWeight=2 PerfScore 55.00\n-G_M27023_IG05:\n        mov      rax, gword ptr [rbp-0x70]\n\u002B       mov      ecx, dword ptr [rbp-0x30]\n\u002B\t\t\t\t\t\t;; size=82 bbWeight=2 PerfScore 51.50\n\u002BG_M27023_IG05:\n        mov      rdi, gword ptr [rax\u002B0x08]\n        cmp      ecx, dword ptr [rdi\u002B0x08]\n-       jae      G_M27023_IG40\n\u002B       jae      G_M27023_IG39\n        mov      eax, ecx\n        mov      rax, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M27023_IG07\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M27023_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M27023_IG07:\n        mov      gword ptr [rbp-0x68], rax\n        cmp      byte  ptr [rax], al\n        vxorps   xmm0, xmm0, xmm0\n        vmovdqu  ymmword ptr [rbp-0x50], ymm0\n        mov      rdi, 0xD1FFAB1E      ; System.Text.StringBuilder\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x88], rax\n        mov      dword ptr [rax\u002B0x20], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        mov      esi, 16\n        call     CORINFO_HELP_NEWARR_1_VC\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0x88]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbp-0x88]\n        mov      gword ptr [rbp-0x50], rdi\n        mov      byte  ptr [rbp-0x38], 0\n        xor      rdi, rdi\n        mov      gword ptr [rbp-0x48], rdi\n \t\t\t\t\t\t;; size=104 bbWeight=4 PerfScore 64.33\n G_M27023_IG08:\n        mov      gword ptr [rbp-0x40], rdi\n \t\t\t\t\t\t;; size=4 bbWeight=4 PerfScore 4.00\n G_M27023_IG09:\n        mov      dword ptr [rbp-0x34], edi\n        lea      rdi, [rbp-0x50]\n        mov      rsi, gword ptr [rbp-0x68]\n        mov      edx, 1\n        xor      ecx, ecx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.FullNameFactory:CreateAssemblyFullName(dnlib.DotNet.IAssembly,bool,bool):this\n        call     [rax]dnlib.DotNet.FullNameFactory:CreateAssemblyFullName(dnlib.DotNet.IAssembly,bool,bool):this\n        mov      rdi, gword ptr [rbp-0x50]\n        test     rdi, rdi\n        jne      SHORT G_M27023_IG11\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 34.00\n G_M27023_IG10:\n        mov      rdi, 0xD1FFAB1E      ; System.Text.StringBuilder\n        call     CORINFO_HELP_NEWSFAST\n        mov      rdi, rax\n        mov      gword ptr [rbp-0x80], rdi\n        mov      dword ptr [rdi\u002B0x20], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; char[]\n        mov      esi, 16\n        call     CORINFO_HELP_NEWARR_1_VC\n        mov      rsi, rax\n        mov      rdi, gword ptr [rbp-0x80]\n        lea      rdi, bword ptr [rdi\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbp-0x80]\n \t\t\t\t\t\t;; size=69 bbWeight=2 PerfScore 17.50\n G_M27023_IG11:\n        mov      rax, 0xD1FFAB1E      ; const ptr\n        mov      rax, gword ptr [rax]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rcx, 0xD1FFAB1E      ; code for System.Text.StringBuilder:ToString():System.String:this\n        call     [rcx]System.Text.StringBuilder:ToString():System.String:this\n        mov      rsi, rax\n        mov      rdi, gword ptr [rbp-0x90]\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,int]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,int]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        je       SHORT G_M27023_IG13\n \t\t\t\t\t\t;; size=59 bbWeight=4 PerfScore 49.00\n G_M27023_IG12:\n-       mov      edi, dword ptr [rax]\n-       cmp      edi, r13d\n\u002B       mov      esi, dword ptr [rax]\n\u002B       cmp      esi, r13d\n        jle      SHORT G_M27023_IG13\n-       mov      r13d, edi\n\u002B       mov      r13d, esi\n        mov      r14, gword ptr [rbp-0x68]\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 9.00\n G_M27023_IG13:\n        inc      r12d\n        cmp      r12d, r15d\n        jbe      G_M27023_IG03\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M27023_IG14:\n        test     r14, r14\n        jne      G_M27023_IG34\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M27023_IG15:\n-       mov      rdi, 0xD1FFAB1E      ; const ptr\n-       mov      r13, gword ptr [rdi]\n\u002B       mov      rsi, 0xD1FFAB1E      ; const ptr\n\u002B       mov      r13, gword ptr [rsi]\n        mov      r12d, 16\n-       mov      edi, 5\n\u002B       mov      esi, 5\n        jmp      SHORT G_M27023_IG17\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 2.38\n G_M27023_IG16:\n        add      r12, 8\n-       mov      edi, dword ptr [rbp-0x58]\n\u002B       mov      esi, dword ptr [rbp-0x58]\n \t\t\t\t\t\t;; size=7 bbWeight=4 PerfScore 5.00\n G_M27023_IG17:\n-       dec      edi\n-       mov      dword ptr [rbp-0x58], edi\n-       test     edi, edi\n\u002B       dec      esi\n\u002B       mov      dword ptr [rbp-0x58], esi\n\u002B       test     esi, esi\n        je       G_M27023_IG36\n        mov      rax, gword ptr [r12\u002Br13]\n        mov      gword ptr [rbp-0x60], rax\n        mov      ecx, 1\n        test     r15d, r15d\n        mov      rax, gword ptr [rbp-0x60]\n        je       G_M27023_IG33\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 32.00\n G_M27023_IG18:\n-       mov      r8, gword ptr [rbx\u002B0x1E0]\n-       mov      gword ptr [rbp-0xA0], r8\n\u002B       mov      rdx, gword ptr [rbx\u002B0x1E0]\n\u002B       mov      gword ptr [rbp-0xA0], rdx\n        mov      dword ptr [rbp-0x2C], ecx\n-       lea      r9d, [rcx-0x01]\n-       mov      dword ptr [rbp-0x54], r9d\n-       cmp      r9d, dword ptr [r8\u002B0x18]\n-       jae      G_M27023_IG21\n-\t\t\t\t\t\t;; size=35 bbWeight=16 PerfScore 136.00\n\u002B       lea      r8d, [rcx-0x01]\n\u002B       mov      dword ptr [rbp-0x54], r8d\n\u002B       cmp      r8d, dword ptr [rdx\u002B0x18]\n\u002B       jae      SHORT G_M27023_IG21\n\u002B\t\t\t\t\t\t;; size=31 bbWeight=16 PerfScore 136.00\n G_M27023_IG19:\n-       mov      rsi, gword ptr [r8\u002B0x08]\n-       mov      rdx, rsi\n-       cmp      r9d, dword ptr [rdx\u002B0x08]\n-       jae      G_M27023_IG40\n-       mov      r10d, r9d\n-       cmp      qword ptr [rdx\u002B8*r10\u002B0x10], 0\n\u002B       mov      rdi, gword ptr [rdx\u002B0x08]\n\u002B       mov      r9, rdi\n\u002B       mov      r10d, dword ptr [r9\u002B0x08]\n\u002B       cmp      r8d, r10d\n\u002B       jae      G_M27023_IG39\n\u002B       mov      r10d, r8d\n\u002B       cmp      qword ptr [r9\u002B8*r10\u002B0x10], 0\n        jne      SHORT G_M27023_IG20\n-       mov      rdi, rsi\n-       mov      esi, r9d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefMD\n-       mov      r10, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r10]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0xA8], rax\n-       mov      rcx, gword ptr [rbp-0xA0]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n\u002B       mov      r9d, r8d\n\u002B       lea      r9, bword ptr [rdi\u002B8*r9\u002B0x10]\n\u002B       mov      bword ptr [rbp-0xA8], r9\n\u002B       mov      r10, gword ptr [rdx\u002B0x10]\n        lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r10\u002B0x10]\n\u002B       call     [r10\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0xA8]\n-       test     rdi, rdi\n-       je       G_M27023_IG39\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      rax, gword ptr [rbp-0x60]\n-       mov      r9d, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=124 bbWeight=8 PerfScore 230.00\n\u002B       mov      rdx, gword ptr [rbp-0xA0]\n\u002B       mov      r8d, dword ptr [rbp-0x54]\n\u002B\t\t\t\t\t\t;; size=94 bbWeight=8 PerfScore 192.00\n G_M27023_IG20:\n-       mov      r8, gword ptr [rbp-0xA0]\n-       mov      rdx, gword ptr [r8\u002B0x08]\n-       cmp      r9d, dword ptr [rdx\u002B0x08]\n-       jae      G_M27023_IG40\n-       mov      esi, r9d\n-       mov      rdx, gword ptr [rdx\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [rdx\u002B0x08]\n\u002B       cmp      r8d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M27023_IG39\n\u002B       mov      edx, r8d\n\u002B       mov      rdx, gword ptr [rdi\u002B8*rdx\u002B0x10]\n        jmp      SHORT G_M27023_IG22\n-\t\t\t\t\t\t;; size=31 bbWeight=8 PerfScore 82.00\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=8 PerfScore 74.00\n G_M27023_IG21:\n        xor      rdx, rdx\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M27023_IG22:\n        mov      gword ptr [rbp-0x98], rdx\n-       mov      rsi, gword ptr [rdx\u002B0x18]\n-       mov      gword ptr [rbp-0xB0], rsi\n-       test     rsi, rsi\n\u002B       mov      r8, gword ptr [rdx\u002B0x18]\n\u002B       mov      gword ptr [rbp-0xB0], r8\n\u002B       test     r8, r8\n        je       SHORT G_M27023_IG26\n \t\t\t\t\t\t;; size=23 bbWeight=16 PerfScore 84.00\n G_M27023_IG23:\n-       mov      r8, gword ptr [rsi\u002B0x08]\n-       test     r8, r8\n\u002B       mov      rdi, gword ptr [r8\u002B0x08]\n\u002B       test     rdi, rdi\n        je       SHORT G_M27023_IG26\n-       cmp      dword ptr [r8\u002B0x08], 0\n\u002B       cmp      dword ptr [rdi\u002B0x08], 0\n        je       SHORT G_M27023_IG25\n-       cmp      qword ptr [rsi\u002B0x10], 0\n\u002B       cmp      qword ptr [r8\u002B0x10], 0\n        jne      SHORT G_M27023_IG24\n-       mov      rdi, r8\n-       mov      r8, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n-       call     [r8]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n\u002B       mov      r9, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n\u002B       call     [r9]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0xB0]\n        lea      rdi, bword ptr [rax\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rax, gword ptr [rbp-0x60]\n-\t\t\t\t\t\t;; size=62 bbWeight=8 PerfScore 132.00\n\u002B\t\t\t\t\t\t;; size=58 bbWeight=8 PerfScore 130.00\n G_M27023_IG24:\n-       mov      rsi, gword ptr [rbp-0xB0]\n-       mov      rsi, gword ptr [rsi\u002B0x10]\n\u002B       mov      r8, gword ptr [rbp-0xB0]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n        jmp      SHORT G_M27023_IG27\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 40.00\n G_M27023_IG25:\n-       mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n\u002B       mov      rdi, 0xD1FFAB1E      ; \u0027\u0027\n        jmp      SHORT G_M27023_IG27\n \t\t\t\t\t\t;; size=12 bbWeight=8 PerfScore 18.00\n G_M27023_IG26:\n-       xor      rsi, rsi\n\u002B       xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M27023_IG27:\n-       test     rsi, rsi\n\u002B       test     rdi, rdi\n        jne      SHORT G_M27023_IG29\n \t\t\t\t\t\t;; size=5 bbWeight=16 PerfScore 20.00\n G_M27023_IG28:\n-       mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n\u002B       mov      rdi, 0xD1FFAB1E      ; \u0027\u0027\n \t\t\t\t\t\t;; size=10 bbWeight=8 PerfScore 2.00\n G_M27023_IG29:\n-       mov      rdi, rsi\n        mov      rsi, rax\n        mov      edx, 5\n        mov      r8, 0xD1FFAB1E      ; code for System.String:Equals(System.String,int):bool:this\n        call     [r8]System.String:Equals(System.String,int):bool:this\n        test     eax, eax\n        je       SHORT G_M27023_IG32\n-\t\t\t\t\t\t;; size=28 bbWeight=16 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=25 bbWeight=16 PerfScore 80.00\n G_M27023_IG30:\n        test     r14, r14\n        je       SHORT G_M27023_IG31\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, gword ptr [rbp-0x98]\n        mov      rsi, gword ptr [rax\u002B0x08]\n        test     rdi, rdi\n        je       SHORT G_M27023_IG31\n        test     rsi, rsi\n        je       SHORT G_M27023_IG32\n        mov      rcx, 0xD1FFAB1E      ; code for System.Version:CompareTo(System.Version):int:this\n        call     [rcx]System.Version:CompareTo(System.Version):int:this\n        test     eax, eax\n-       setle    al\n-       movzx    rax, al\n-       test     eax, eax\n\u002B       setle    dil\n\u002B       movzx    rdi, dil\n\u002B       test     edi, edi\n        je       SHORT G_M27023_IG32\n-\t\t\t\t\t\t;; size=54 bbWeight=8 PerfScore 114.00\n\u002B\t\t\t\t\t\t;; size=56 bbWeight=8 PerfScore 114.00\n G_M27023_IG31:\n        mov      r14, gword ptr [rbp-0x98]\n \t\t\t\t\t\t;; size=7 bbWeight=8 PerfScore 8.00\n G_M27023_IG32:\n        mov      ecx, dword ptr [rbp-0x2C]\n        inc      ecx\n        cmp      ecx, r15d\n        mov      rax, gword ptr [rbp-0x60]\n        jbe      G_M27023_IG18\n \t\t\t\t\t\t;; size=18 bbWeight=16 PerfScore 56.00\n G_M27023_IG33:\n        test     r14, r14\n        je       G_M27023_IG16\n \t\t\t\t\t\t;; size=9 bbWeight=4 PerfScore 5.00\n G_M27023_IG34:\n        mov      rax, r14\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M27023_IG35:\n        add      rsp, 136\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.12\n G_M27023_IG36:\n        mov      r15, gword ptr [rbx\u002B0x58]\n        test     r15, r15\n        je       SHORT G_M27023_IG34\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Extensions:IsCorLib(dnlib.DotNet.IAssembly):bool\n        call     [rax]dnlib.DotNet.Extensions:IsCorLib(dnlib.DotNet.IAssembly):bool\n        test     eax, eax\n        jne      SHORT G_M27023_IG37\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDef:get_TypeDefFinder():dnlib.DotNet.TypeDefFinder:this\n        call     [rax]dnlib.DotNet.ModuleDef:get_TypeDefFinder():dnlib.DotNet.TypeDefFinder:this\n        mov      rdi, rax\n        mov      rsi, 0xD1FFAB1E      ; \u0027System.Object\u0027\n        xor      edx, edx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeDefFinder:Find(System.String,bool):dnlib.DotNet.TypeDef:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.TypeDefFinder:Find(System.String,bool):dnlib.DotNet.TypeDef:this\n        test     rax, rax\n        je       SHORT G_M27023_IG34\n \t\t\t\t\t\t;; size=77 bbWeight=0.50 PerfScore 9.38\n G_M27023_IG37:\n        mov      word  ptr [rbx\u002B0x108], 257\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.AssemblyRefUser\n        call     CORINFO_HELP_NEWSFAST\n        mov      r14, rax\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.AssemblyRefUser:.ctor(dnlib.DotNet.IAssembly):this\n        call     [rax]dnlib.DotNet.AssemblyRefUser:.ctor(dnlib.DotNet.IAssembly):this\n        mov      rdi, rbx\n        mov      rdx, r14\n        mov      rsi, 0xD1FFAB1E      ; dnlib.DotNet.ModuleDef:UpdateRowId[dnlib.DotNet.AssemblyRefUser](dnlib.DotNet.AssemblyRefUser):dnlib.DotNet.AssemblyRefUser:this\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDef:UpdateRowId[System.__Canon](System.__Canon):System.__Canon:this\n        call     [rax]dnlib.DotNet.ModuleDef:UpdateRowId[System.__Canon](System.__Canon):System.__Canon:this\n        nop      \n \t\t\t\t\t\t;; size=74 bbWeight=0.50 PerfScore 5.25\n G_M27023_IG38:\n        add      rsp, 136\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 2.12\n G_M27023_IG39:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M27023_IG40:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1276, prolog size 38, PerfScore 1387.79, instruction count 300, allocated bytes for code 1276 (MethodHash=24989670) for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n\u002B; Total bytes of code 1187, prolog size 38, PerfScore 1330.29, instruction count 285, allocated bytes for code 1187 (MethodHash=24989670) for method dnlib.DotNet.ModuleDefMD:FindCorLibAssemblyRef():dnlib.DotNet.AssemblyRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1276,"DiffBytes":1187},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[byte]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[byte]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M41277_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M41277_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M41277_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M41277_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M41277_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M41277_IG04:\n        cmp      r15d, 1\n        jne      G_M41277_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M41277_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M41277_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M41277_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M41277_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M41277_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M41277_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M41277_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M41277_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41277_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M41277_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41277_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=12235ec2) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=12235ec2) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[byte]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"SharpCompress.dasm","Method":"SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)","Category":"same-size","Description":"21 -\u003E 21 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,69 \u002B1,69 @@\n ; Assembly listing for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T00] (  4,  4   )    long  -\u003E  rdi         single-def\n ;* V01 loc0         [V01    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u003CSharpCompress.Compressors.ZStandard.Unsafe.ZSTD_window_t\u003E\n ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V06 tmp4         [V06    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V07 tmp5         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V09 tmp7         [V09    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V10 tmp8         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V11 tmp9         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V12 tmp10        [V12    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V03._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp11        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V03._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp12        [V14    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V04._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp13        [V15    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V16 tmp14        [V16    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V05._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp15        [V17    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V05._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp16        [V18    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V06._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp17        [V19    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V06._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V20 tmp18        [V20    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V07._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V21 tmp19        [V21    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V07._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V22 tmp20        [V22    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V08._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V23 tmp21        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V08._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V24 tmp22        [V24    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V09._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V25 tmp23        [V25    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V09._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V26 tmp24        [V26    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V10._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp25        [V27    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V10._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V28 tmp26        [V28    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V11._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp27        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V11._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V30 tmp28        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[000..008)\u0022\n ;* V31 tmp29        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V01.[008..016)\u0022\n ;* V32 tmp30        [V32    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022V01.[016..024)\u0022\n ;* V33 tmp31        [V33    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V01.[024..028)\u0022\n ;* V34 tmp32        [V34    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V01.[028..032)\u0022\n ;* V35 tmp33        [V35    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[032..036)\u0022\n ;* V36 tmp34        [V36    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V37 tmp35        [V37    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V38 tmp36        [V38    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;\n ; Lcl frame size = 0\n \n G_M47049_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M47049_IG02:\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [rdi], ymm0\n        xor      eax, eax\n        mov      dword ptr [rdi\u002B0x20], eax\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 4.25\n G_M47049_IG03:\n        vzeroupper \n        ret      \n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 2.00\n-RWD00  \tdq\t00007B8D86454D7Ah, 00007B8D86454D78h, 00007B8D86454D78h, 0000000200000002h\n\u002BRWD00  \tdq\t00007E903F1FBD7Ah, 00007E903F1FBD78h, 00007E903F1FBD78h, 0000000200000002h\n \n \n ; Total bytes of code 21, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 21 (MethodHash=a7054836) for method SharpCompress.Compressors.ZStandard.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":21,"DiffBytes":21},{"Assembly":"SkiaSharp.dasm","Method":"SkiaSharp.SKTraceMemoryDump:.cctor() (FullOpts)","Category":"same-size","Description":"189 -\u003E 189 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,85 \u002B1,85 @@\n ; Assembly listing for method SkiaSharp.SKTraceMemoryDump:.cctor() (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; Final local variable assignments\n ;\n ;* V00 loc0         [V00    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003CSkiaSharp.SKManagedTraceMemoryDumpDelegates\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V02 FramesRoot   [V02,T00] (  6,  6   )    long  -\u003E  rbx         \u0022Pinvoke FrameListRoot\u0022\n ;  V03 PInvokeFrame [V03    ] (  8,  8   )  struct (56) [rbp-0x60]  do-not-enreg[XS] addr-exposed \u0022Pinvoke FrameVar\u0022 \u003CUNNAMED\u003E\n ;* V04 tmp3         [V04    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fDumpNumericValue (fldOffset=0x0)\u0022 P-INDEP\n ;* V05 tmp4         [V05    ] (  0,  0   )    long  -\u003E  zero-ref    single-def \u0022field V00.fDumpStringValue (fldOffset=0x8)\u0022 P-INDEP\n ;  V06 cse0         [V06,T01] (  3,  3   )    long  -\u003E  rdi         \u0022CSE #01: aggressive\u0022\n ;\n ; Lcl frame size = 56\n \n G_M50740_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 56\n        vzeroupper \n        lea      rbp, [rsp\u002B0x60]\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.75\n G_M50740_IG02:\n        lea      rdi, [rbp-0x60]\n        call     CORINFO_HELP_INIT_PINVOKE_FRAME\n        mov      rbx, rax\n        mov      rdi, rsp\n        mov      qword ptr [rbp-0x48], rdi\n        mov      rdi, rbp\n        mov      qword ptr [rbp-0x38], rdi\n        mov      rdi, 0xD1FFAB1E      ; data for SkiaSharp.SKTraceMemoryDump:delegates\n        vmovups  xmm0, xmmword ptr [reloc @RWD00]\n        vmovups  xmmword ptr [rdi], xmm0\n        mov      rdi, qword ptr [rdi]\n        mov      rsi, 0xD1FFAB1E\n        mov      rsi, qword ptr [rsi]\n        mov      rax, 0xD1FFAB1E      ; function address\n        mov      qword ptr [rbp-0x50], rax\n        lea      rax, G_M50740_IG05\n        mov      qword ptr [rbp-0x40], rax\n        lea      rax, [rbp-0x60]\n        mov      qword ptr [rbx\u002B0x08], rax\n        mov      byte  ptr [rbx\u002B0x04], 0\n \t\t\t\t\t\t;; size=101 bbWeight=1 PerfScore 16.50\n G_M50740_IG03:\n        mov      rax, 0xD1FFAB1E      ; code for SkiaSharp.SkiaApi:sk_managedtracememorydump_set_procs(SkiaSharp.SKManagedTraceMemoryDumpDelegates)\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M50740_IG04:\n        call     [rax]SkiaSharp.SkiaApi:sk_managedtracememorydump_set_procs(SkiaSharp.SKManagedTraceMemoryDumpDelegates)\n \t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 3.00\n G_M50740_IG05:\n        mov      byte  ptr [rbx\u002B0x04], 1\n        mov      rcx, 0xD1FFAB1E      ; function address\n        cmp      dword ptr [rcx], 0\n        je       SHORT G_M50740_IG06\n        mov      rdi, 0xD1FFAB1E\n        call     [rdi]CORINFO_HELP_STOP_FOR_GC\n \t\t\t\t\t\t;; size=31 bbWeight=1 PerfScore 7.50\n G_M50740_IG06:\n        mov      rax, qword ptr [rbp-0x58]\n        mov      qword ptr [rbx\u002B0x08], rax\n \t\t\t\t\t\t;; size=8 bbWeight=1 PerfScore 2.00\n G_M50740_IG07:\n        add      rsp, 56\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n-RWD00  \tdq\t0000796AE70680C0h, 0000796AE70680D8h\n\u002BRWD00  \tdq\t00007E26DC2480C0h, 00007E26DC2480D8h\n \n \n ; Total bytes of code 189, prolog size 22, PerfScore 41.25, instruction count 47, allocated bytes for code 189 (MethodHash=dc2a39cb) for method SkiaSharp.SKTraceMemoryDump:.cctor() (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":189,"DiffBytes":189},{"Assembly":"ZstdSharp.dasm","Method":"ZstdSharp.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)","Category":"same-size","Description":"21 -\u003E 21 bytes (0)","ExtraInfo":null,"Diff":"@@ -1,69 \u002B1,69 @@\n ; Assembly listing for method ZstdSharp.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rsp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 arg0         [V00,T00] (  4,  4   )    long  -\u003E  rdi         single-def\n ;* V01 loc0         [V01    ] (  0,  0   )  struct (40) zero-ref    do-not-enreg[SF] ld-addr-op \u003CZstdSharp.Unsafe.ZSTD_window_t\u003E\n ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V06 tmp4         [V06    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V07 tmp5         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V09 tmp7         [V09    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V10 tmp8         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V11 tmp9         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inlining Arg\u0022 \u003CSystem.ReadOnlySpan\u00601[byte]\u003E\n ;* V12 tmp10        [V12    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V03._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp11        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V03._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp12        [V14    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V04._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp13        [V15    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V16 tmp14        [V16    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V05._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp15        [V17    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V05._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp16        [V18    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V06._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp17        [V19    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V06._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V20 tmp18        [V20    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V07._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V21 tmp19        [V21    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V07._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V22 tmp20        [V22    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V08._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V23 tmp21        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V08._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V24 tmp22        [V24    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022field V09._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V25 tmp23        [V25    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V09._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V26 tmp24        [V26    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V10._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp25        [V27    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V10._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V28 tmp26        [V28    ] (  0,  0   )   byref  -\u003E  zero-ref    single-def \u0022field V11._reference (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp27        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V11._length (fldOffset=0x8)\u0022 P-INDEP\n ;* V30 tmp28        [V30    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[000..008)\u0022\n ;* V31 tmp29        [V31    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[008..016)\u0022\n ;* V32 tmp30        [V32    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022V01.[016..024)\u0022\n ;* V33 tmp31        [V33    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[024..028)\u0022\n ;* V34 tmp32        [V34    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[028..032)\u0022\n ;* V35 tmp33        [V35    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[032..036)\u0022\n ;* V36 tmp34        [V36    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V37 tmp35        [V37    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;* V38 tmp36        [V38    ] (  0,  0   )    long  -\u003E  zero-ref    \u0022Cast away GC\u0022\n ;\n ; Lcl frame size = 0\n \n G_M7775_IG01:\n \t\t\t\t\t\t;; size=0 bbWeight=1 PerfScore 0.00\n G_M7775_IG02:\n        vmovups  ymm0, ymmword ptr [reloc @RWD00]\n        vmovups  ymmword ptr [rdi], ymm0\n        xor      eax, eax\n        mov      dword ptr [rdi\u002B0x20], eax\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 4.25\n G_M7775_IG03:\n        vzeroupper \n        ret      \n \t\t\t\t\t\t;; size=4 bbWeight=1 PerfScore 2.00\n-RWD00  \tdq\t000074CAD84874CAh, 000074CAD84874C8h, 000074CAD84874C8h, 0000000200000002h\n\u002BRWD00  \tdq\t00007458921A64CAh, 00007458921A64C8h, 00007458921A64C8h, 0000000200000002h\n \n \n ; Total bytes of code 21, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 21 (MethodHash=9b56e1a0) for method ZstdSharp.Unsafe.Methods:ZSTD_window_init(ptr) (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":21,"DiffBytes":21},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)","Category":"improvement","Description":"918 -\u003E 865 bytes (-53)","ExtraInfo":null,"Diff":"@@ -1,330 \u002B1,322 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 14 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T11] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 arg1         [V01,T20] (  5,  5.50)     ref  -\u003E  r12         class-hnd single-def \u003Cdnlib.DotNet.PropertyDefMD\u003E\n-;  V02 arg2         [V02,T13] (  5,  7   )   byref  -\u003E  r15         single-def\n-;  V03 arg3         [V03,T14] (  5,  7   )   byref  -\u003E  r14         single-def\n-;  V04 arg4         [V04,T15] (  5,  7   )   byref  -\u003E  r13         single-def\n\u002B;  V00 this         [V00,T10] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n\u002B;  V01 arg1         [V01,T21] (  5,  5.50)     ref  -\u003E  r12         class-hnd single-def \u003Cdnlib.DotNet.PropertyDefMD\u003E\n\u002B;  V02 arg2         [V02,T12] (  5,  7   )   byref  -\u003E  r15         single-def\n\u002B;  V03 arg3         [V03,T13] (  5,  7   )   byref  -\u003E  r14         single-def\n\u002B;  V04 arg4         [V04,T14] (  5,  7   )   byref  -\u003E  r13         single-def\n ;  V05 loc0         [V05    ] (  8, 17   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V06 loc1         [V06,T02] (  8, 20.50)     int  -\u003E  [rbp-0x3C] \n ;  V07 loc2         [V07    ] (  3,  8   )  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V08 loc3         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V09 loc4         [V09,T28] (  2,  4   )  ushort  -\u003E  rdi        \n\u002B;  V09 loc4         [V09,T29] (  2,  4   )  ushort  -\u003E  rdi        \n ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V11 tmp1         [V11,T22] (  3,  6   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n-;  V12 tmp2         [V12,T23] (  3,  6   )     ref  -\u003E  [rbp-0x78]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n-;  V13 tmp3         [V13,T24] (  3,  6   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V11 tmp1         [V11,T23] (  3,  6   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V12 tmp2         [V12,T24] (  3,  6   )     ref  -\u003E  [rbp-0x78]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V13 tmp3         [V13,T25] (  3,  6   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n ;* V14 tmp4         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V15 tmp5         [V15    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V16 tmp6         [V16,T05] (  2, 16   )     ref  -\u003E  [rbp-0x88]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V17 tmp7         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeDef\u003E\n ;* V18 tmp8         [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V19 tmp9         [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V20 tmp10        [V20,T12] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V21 tmp11        [V21,T17] (  2,  8   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V22 tmp12        [V22,T19] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp10        [V20,T11] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V21 tmp11        [V21,T16] (  2,  8   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V22 tmp12        [V22,T20] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;  V23 tmp13        [V23,T03] ( 10, 20   )     ref  -\u003E  [rbp-0x90]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V24 tmp14        [V24,T00] (  8, 32   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V25 tmp15        [V25,T04] (  5, 20   )     ref  -\u003E  [rbp-0x98]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V26 tmp16        [V26,T06] (  3, 12   )   byref  -\u003E  [rbp-0xA0]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V26 tmp16        [V26,T17] (  2,  8   )   byref  -\u003E  [rbp-0xA0]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V27 tmp17        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V28 tmp18        [V28,T18] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V29 tmp19        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V30 tmp20        [V30,T16] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V05.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V31 tmp21        [V31,T30] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V05.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V32 tmp22        [V32,T21] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V05.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V30 tmp20        [V30,T15] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V05.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V31 tmp21        [V31,T32] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V05.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V32 tmp22        [V32,T22] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V05.length (fldOffset=0xc)\u0022 P-DEP\n ;  V33 tmp23        [V33    ] (  2,  6   )  ushort  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V07.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V34 tmp24        [V34    ] (  2,  6   )     int  -\u003E  [rbp-0x4C]  do-not-enreg[X] addr-exposed \u0022field V07.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V35 tmp25        [V35    ] (  1,  4   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] addr-exposed \u0022field V07.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V36 tmp26        [V36,T29] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V36 tmp26        [V36,T31] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V37 tmp27        [V37,T01] (  3, 24   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V38 tmp28        [V38,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V39 tmp29        [V39,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;* V40 cse0         [V40,T31] (  0,  0   )   byref  -\u003E  zero-ref    \u0022CSE #02: moderate\u0022\n-;  V41 cse1         [V41,T25] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n-;  V42 cse2         [V42,T26] (  5,  4   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022CSE #01: moderate\u0022\n-;  V43 cse3         [V43,T27] (  4,  4   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022CSE #03: moderate\u0022\n-;  V44 rat0         [V44,T09] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n-;  V45 rat1         [V45,T10] (  3, 11.20)     int  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n\u002B;  V38 tmp28        [V38,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V39 tmp29        [V39,T19] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V40 tmp30        [V40,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;* V41 cse0         [V41,T33] (  0,  0   )   byref  -\u003E  zero-ref    \u0022CSE #02: moderate\u0022\n\u002B;  V42 cse1         [V42,T26] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #04: moderate\u0022\n\u002B;  V43 cse2         [V43,T27] (  5,  4   )    long  -\u003E  [rbp-0x60]  spill-single-def \u0022CSE #01: moderate\u0022\n\u002B;  V44 cse3         [V44,T28] (  4,  4   )    long  -\u003E  [rbp-0x68]  spill-single-def \u0022CSE #03: moderate\u0022\n\u002B;  V45 cse4         [V45,T30] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #05: moderate\u0022\n\u002B;  V46 rat0         [V46,T08] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V47 rat1         [V47,T09] (  3, 11.20)     int  -\u003E  rdi         \u0022ReplaceWithLclVar is creating a new local variable\u0022\n ;\n ; Lcl frame size = 120\n \n G_M22475_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 120\n        lea      rbp, [rsp\u002B0xA0]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r12, rsi\n        mov      r15, rdx\n        mov      r14, rcx\n        mov      r13, r8\n \t\t\t\t\t\t;; size=53 bbWeight=1 PerfScore 10.58\n G_M22475_IG02:\n        mov      rax, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        mov      qword ptr [rbp-0x60], rax\n        mov      rdi, rax\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x70], rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M22475_IG20\n \t\t\t\t\t\t;; size=45 bbWeight=1 PerfScore 6.75\n G_M22475_IG03:\n        mov      rcx, 0xD1FFAB1E      ; data for System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]:s_emptyArray\n        mov      qword ptr [rbp-0x68], rcx\n        mov      rsi, gword ptr [rcx]\n        mov      rax, gword ptr [rbp-0x70]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x70]\n        mov      rdi, r15\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rdi, qword ptr [rbp-0x60]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x78], rax\n        mov      rcx, qword ptr [rbp-0x68]\n        mov      rsi, gword ptr [rcx]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x78]\n        mov      rdi, r14\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rdi, qword ptr [rbp-0x60]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x80], rax\n        mov      rdi, qword ptr [rbp-0x68]\n        mov      rsi, gword ptr [rdi]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x80]\n        mov      rdi, r13\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        test     r12, r12\n        je       G_M22475_IG19\n \t\t\t\t\t\t;; size=133 bbWeight=1 PerfScore 28.75\n G_M22475_IG04:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      edx, dword ptr [r12\u002B0x70]\n        mov      esi, 23\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      eax, eax\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      dword ptr [rbp-0x2C], 0\n        jle      G_M22475_IG19\n \t\t\t\t\t\t;; size=57 bbWeight=0.50 PerfScore 9.25\n G_M22475_IG05:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x48]\n        call     [rcx\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      gword ptr [rbp-0x88], rax\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M22475_IG07\n \t\t\t\t\t\t;; size=38 bbWeight=4 PerfScore 56.00\n G_M22475_IG06:\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      ecx, dword ptr [rbp-0x2C]\n        jae      SHORT G_M22475_IG08\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        add      esi, dword ptr [rbp-0x30]\n        jmp      SHORT G_M22475_IG09\n \t\t\t\t\t\t;; size=18 bbWeight=2 PerfScore 14.50\n G_M22475_IG07:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      eax, ecx\n        jbe      SHORT G_M22475_IG08\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M22475_IG09\n \t\t\t\t\t\t;; size=50 bbWeight=2 PerfScore 28.50\n G_M22475_IG08:\n        xor      esi, esi\n        mov      dword ptr [rbp-0x3C], ecx\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M22475_IG09:\n        lea      rdx, [rbp-0x50]\n        mov      rdi, gword ptr [rbp-0x88]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M22475_IG18\n \t\t\t\t\t\t;; size=33 bbWeight=4 PerfScore 32.00\n G_M22475_IG10:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      eax, dword ptr [rbp-0x4C]\n-       mov      rcx, gword ptr [rdi\u002B0x170]\n\u002B       mov      rcx, gword ptr [rsi\u002B0x170]\n        mov      gword ptr [rbp-0x98], rcx\n        dec      eax\n        mov      dword ptr [rbp-0x54], eax\n        cmp      eax, dword ptr [rcx\u002B0x18]\n-       jae      G_M22475_IG12\n-       mov      rdi, gword ptr [rcx\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      eax, dword ptr [rsi\u002B0x08]\n-       jae      G_M22475_IG22\n\u002B       jae      SHORT G_M22475_IG12\n\u002B       mov      rsi, gword ptr [rcx\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      eax, edx\n\u002B       jae      G_M22475_IG21\n        mov      edx, eax\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M22475_IG11\n-       mov      esi, eax\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0xA0], rax\n-       mov      rcx, gword ptr [rbp-0x98]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, eax\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0xA0], rdx\n\u002B       mov      r8, gword ptr [rcx\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0xA0]\n-       test     rdi, rdi\n-       je       G_M22475_IG21\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      eax, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=151 bbWeight=2 PerfScore 75.50\n-G_M22475_IG11:\n        mov      rcx, gword ptr [rbp-0x98]\n\u002B\t\t\t\t\t\t;; size=118 bbWeight=2 PerfScore 66.50\n\u002BG_M22475_IG11:\n        mov      rdi, gword ptr [rcx\u002B0x08]\n        cmp      eax, dword ptr [rdi\u002B0x08]\n-       jae      G_M22475_IG22\n\u002B       jae      G_M22475_IG21\n        mov      esi, eax\n        mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M22475_IG13\n-\t\t\t\t\t\t;; size=29 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M22475_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M22475_IG13:\n        test     rax, rax\n        je       G_M22475_IG18\n        mov      rdi, gword ptr [rax\u002B0x70]\n        cmp      rdi, qword ptr [r12\u002B0x50]\n        jne      G_M22475_IG18\n        movzx    rdi, word  ptr [rbp-0x50]\n        dec      edi\n        cmp      edi, 3\n        ja       G_M22475_IG18\n \t\t\t\t\t\t;; size=39 bbWeight=2 PerfScore 17.50\n G_M22475_IG14:\n        mov      edi, edi\n        lea      rsi, [reloc @RWD00]\n        mov      esi, dword ptr [rsi\u002B4*rdi]\n        lea      r11, G_M22475_IG02\n        add      rsi, r11\n        jmp      rsi\n \t\t\t\t\t\t;; size=24 bbWeight=1.60 PerfScore 9.60\n G_M22475_IG15:\n        mov      rdi, gword ptr [r13]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      G_M22475_IG18\n        mov      rdi, gword ptr [r13]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M22475_IG18\n \t\t\t\t\t\t;; size=61 bbWeight=2 PerfScore 32.00\n G_M22475_IG16:\n        mov      rdi, gword ptr [r15]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M22475_IG18\n        mov      rdi, gword ptr [r15]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M22475_IG18\n \t\t\t\t\t\t;; size=55 bbWeight=2 PerfScore 32.00\n G_M22475_IG17:\n        mov      rdi, gword ptr [r14]\n        mov      gword ptr [rbp-0x90], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M22475_IG18\n        mov      rdi, gword ptr [r14]\n        mov      rsi, gword ptr [rbp-0x90]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n \t\t\t\t\t\t;; size=53 bbWeight=2 PerfScore 28.00\n G_M22475_IG18:\n        mov      ecx, dword ptr [rbp-0x3C]\n        inc      ecx\n        cmp      ecx, dword ptr [rbp-0x2C]\n        mov      dword ptr [rbp-0x3C], ecx\n        jl       G_M22475_IG05\n \t\t\t\t\t\t;; size=17 bbWeight=4 PerfScore 17.00\n G_M22475_IG19:\n        add      rsp, 120\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M22475_IG20:\n        mov      rdi, qword ptr [rbp-0x60]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rcx]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M22475_IG03\n \t\t\t\t\t\t;; size=21 bbWeight=0 PerfScore 0.00\n G_M22475_IG21:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M22475_IG22:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n RWD00  \tdd\tG_M22475_IG17 - G_M22475_IG02\n        \tdd\tG_M22475_IG16 - G_M22475_IG02\n        \tdd\tG_M22475_IG18 - G_M22475_IG02\n        \tdd\tG_M22475_IG15 - G_M22475_IG02\n \n \n-; Total bytes of code 918, prolog size 38, PerfScore 425.68, instruction count 219, allocated bytes for code 918 (MethodHash=5b52a834) for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n\u002B; Total bytes of code 865, prolog size 38, PerfScore 414.68, instruction count 211, allocated bytes for code 865 (MethodHash=5b52a834) for method dnlib.DotNet.TypeDefMD:InitializeProperty(dnlib.DotNet.PropertyDefMD,byref,byref,byref):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":918,"DiffBytes":865},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[double]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[double]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M7490_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M7490_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M7490_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M7490_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M7490_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M7490_IG04:\n        cmp      r15d, 1\n        jne      G_M7490_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M7490_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M7490_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M7490_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M7490_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M7490_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M7490_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M7490_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M7490_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M7490_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M7490_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M7490_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=eff3e2bd) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=eff3e2bd) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[double]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)","Category":"improvement","Description":"583 -\u003E 533 bytes (-50)","ExtraInfo":null,"Diff":"@@ -1,246 \u002B1,238 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 7 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T10] (  7,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V01 loc0         [V01,T17] (  4,  5.50)     int  -\u003E  r15         single-def\n\u002B;  V00 this         [V00,T09] (  7,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V01 loc0         [V01,T18] (  4,  5.50)     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T04] (  9, 13.50)     ref  -\u003E  r14         class-hnd exact single-def \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n-;  V03 loc2         [V03,T22] (  2,  2.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String\u003E\n\u002B;  V03 loc2         [V03,T24] (  2,  2.50)     ref  -\u003E  r13         class-hnd exact single-def \u003CSystem.String\u003E\n ;  V04 loc3         [V04,T03] (  7, 20.50)     int  -\u003E  r12        \n ;* V05 loc4         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.FileDefMD\u003E\n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V07 tmp1         [V07,T20] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n-;  V08 tmp2         [V08,T23] (  2,  2   )   byref  -\u003E  rbx         single-def \u0022impAppendStmt\u0022\n-;  V09 tmp3         [V09,T18] (  5,  5   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\u003E\n\u002B;  V07 tmp1         [V07,T22] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[uint]\u003E\n\u002B;  V08 tmp2         [V08,T25] (  2,  2   )   byref  -\u003E  rbx         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp3         [V09,T19] (  5,  5   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\u003E\n ;* V10 tmp4         [V10    ] (  0,  0   )  struct (16) zero-ref    \u0022spilled call-like call argument\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;* V11 tmp5         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V12 tmp6         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;  V13 tmp7         [V13,T05] (  5, 12   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n ;  V14 tmp8         [V14,T00] (  8, 40   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;  V15 tmp9         [V15,T01] (  5, 28   )     ref  -\u003E  [rbp-0x38]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.FileDefMD]\u003E\n-;  V16 tmp10        [V16,T06] (  3, 12   )   byref  -\u003E  [rbp-0x40]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V16 tmp10        [V16,T13] (  2,  8   )   byref  -\u003E  [rbp-0x40]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V17 tmp11        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n ;  V18 tmp12        [V18,T14] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V19 tmp13        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.FileDefMD\u003E\n-;  V20 tmp14        [V20,T11] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n\u002B;  V20 tmp14        [V20,T10] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.String\u003E\n ;  V21 tmp15        [V21,T02] (  6, 24   )     ref  -\u003E  [rbp-0x48]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.UTF8String\u003E\n-;  V22 tmp16        [V22,T15] (  3,  6   )     ref  -\u003E  rax         class-hnd \u0022Inline stloc first use temp\u0022 \u003Cuint[]\u003E\n-;  V23 tmp17        [V23,T13] (  4,  8   )     int  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n\u002B;  V22 tmp16        [V22,T16] (  3,  6   )     ref  -\u003E  rax         class-hnd \u0022Inline stloc first use temp\u0022 \u003Cuint[]\u003E\n\u002B;  V23 tmp17        [V23,T12] (  4,  8   )     int  -\u003E  rcx         \u0022Inline stloc first use temp\u0022\n ;* V24 tmp18        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;* V25 tmp19        [V25    ] (  0,  0   )   byref  -\u003E  zero-ref   \n ;* V26 tmp20        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def\n ;* V27 tmp21        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentNullException\u003E\n ;* V28 tmp22        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V10.rids (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp23        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V10.startRid (fldOffset=0x8)\u0022 P-INDEP\n ;* V30 tmp24        [V30    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V10.length (fldOffset=0xc)\u0022 P-INDEP\n ;* V31 tmp25        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.rids (fldOffset=0x0)\u0022 P-INDEP\n ;* V32 tmp26        [V32    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V24.startRid (fldOffset=0x8)\u0022 P-INDEP\n-;  V33 tmp27        [V33,T24] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V24.length (fldOffset=0xc)\u0022 P-INDEP\n-;  V34 tmp28        [V34,T21] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V35 tmp29        [V35,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V36 tmp30        [V36,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V37 cse0         [V37,T12] (  4,  8   )     ref  -\u003E  rdi         \u0022CSE #03: moderate\u0022\n-;  V38 cse1         [V38,T16] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n-;  V39 cse2         [V39,T19] (  2,  4   )     int  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n-;  V40 rat0         [V40,T09] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V33 tmp27        [V33,T26] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V24.length (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V34 tmp28        [V34,T23] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp29        [V35,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V36 tmp30        [V36,T15] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V37 tmp31        [V37,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V38 cse0         [V38,T11] (  4,  8   )     ref  -\u003E  rdi         \u0022CSE #04: moderate\u0022\n\u002B;  V39 cse1         [V39,T17] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V40 cse2         [V40,T20] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #02: moderate\u0022\n\u002B;  V41 cse3         [V41,T21] (  2,  4   )     int  -\u003E  rdi         \u0022CSE #05: moderate\u0022\n\u002B;  V42 rat0         [V42,T08] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M40564_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M40564_IG02:\n        cmp      qword ptr [rbx\u002B0x148], 0\n        jne      G_M40564_IG17\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 3.00\n G_M40564_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rdi, gword ptr [rax\u002B0x180]\n        mov      r15d, dword ptr [rdi\u002B0x58]\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[uint]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r14, rax\n        mov      rdi, r14\n        mov      esi, r15d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[uint]:.ctor(int):this\n        call     [rax]System.Collections.Generic.List\u00601[uint]:.ctor(int):this\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDefMD:GetBaseDirectoryOfImage():System.String:this\n        call     [rax]dnlib.DotNet.ModuleDefMD:GetBaseDirectoryOfImage():System.String:this\n        mov      r13, rax\n        mov      r12d, 1\n        test     r15d, r15d\n        je       G_M40564_IG16\n \t\t\t\t\t\t;; size=97 bbWeight=0.50 PerfScore 11.75\n G_M40564_IG04:\n        mov      rax, gword ptr [rbx\u002B0x1E8]\n        mov      gword ptr [rbp-0x38], rax\n        lea      ecx, [r12-0x01]\n        mov      dword ptr [rbp-0x2C], ecx\n        cmp      ecx, dword ptr [rax\u002B0x18]\n-       jae      G_M40564_IG07\n-\t\t\t\t\t\t;; size=28 bbWeight=4 PerfScore 30.00\n\u002B       jae      SHORT G_M40564_IG07\n\u002B\t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M40564_IG05:\n-       mov      rdi, gword ptr [rax\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      ecx, dword ptr [rsi\u002B0x08]\n-       jae      G_M40564_IG20\n\u002B       mov      rsi, gword ptr [rax\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      ecx, edx\n\u002B       jae      G_M40564_IG19\n        mov      edx, ecx\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M40564_IG06\n-       mov      esi, ecx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.FileDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x40], rax\n-       mov      rcx, gword ptr [rbp-0x38]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x2C]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, ecx\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x40], rdx\n\u002B       mov      r8, gword ptr [rax\u002B0x10]\n\u002B       lea      esi, [rcx\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x40]\n-       test     rdi, rdi\n-       je       G_M40564_IG19\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-       mov      ecx, dword ptr [rbp-0x2C]\n-\t\t\t\t\t\t;; size=104 bbWeight=2 PerfScore 55.00\n-G_M40564_IG06:\n        mov      rax, gword ptr [rbp-0x38]\n\u002B       mov      ecx, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=75 bbWeight=2 PerfScore 46.00\n\u002BG_M40564_IG06:\n        mov      rdi, gword ptr [rax\u002B0x08]\n        cmp      ecx, dword ptr [rdi\u002B0x08]\n-       jae      G_M40564_IG20\n\u002B       jae      G_M40564_IG19\n        mov      eax, ecx\n        mov      rdi, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M40564_IG08\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M40564_IG07:\n        xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40564_IG08:\n        test     rdi, rdi\n        je       G_M40564_IG15\n \t\t\t\t\t\t;; size=9 bbWeight=4 PerfScore 5.00\n G_M40564_IG09:\n        test     byte  ptr [rdi\u002B0x2C], 1\n        jne      G_M40564_IG15\n        mov      rax, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x48], rax\n        test     rax, rax\n        je       SHORT G_M40564_IG12\n        mov      rdi, gword ptr [rax\u002B0x08]\n        test     rdi, rdi\n        je       SHORT G_M40564_IG12\n        cmp      dword ptr [rdi\u002B0x08], 0\n        je       SHORT G_M40564_IG11\n        cmp      qword ptr [rax\u002B0x10], 0\n        jne      SHORT G_M40564_IG10\n        mov      rcx, 0xD1FFAB1E      ; code for dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        call     [rcx]dnlib.DotNet.UTF8String:ConvertFromUTF8(byte[]):System.String\n        mov      rsi, rax\n        mov      rax, gword ptr [rbp-0x48]\n        lea      rdi, bword ptr [rax\u002B0x10]\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=73 bbWeight=2 PerfScore 45.00\n G_M40564_IG10:\n        mov      rax, gword ptr [rbp-0x48]\n        mov      rsi, gword ptr [rax\u002B0x10]\n        jmp      SHORT G_M40564_IG13\n \t\t\t\t\t\t;; size=10 bbWeight=2 PerfScore 10.00\n G_M40564_IG11:\n        mov      rsi, 0xD1FFAB1E      ; \u0027\u0027\n        jmp      SHORT G_M40564_IG13\n \t\t\t\t\t\t;; size=12 bbWeight=2 PerfScore 4.50\n G_M40564_IG12:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40564_IG13:\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.ModuleDefMD:GetValidFilename(System.String,System.String):System.String\n        call     [rax]dnlib.DotNet.ModuleDefMD:GetValidFilename(System.String,System.String):System.String\n        test     rax, rax\n        je       SHORT G_M40564_IG15\n        inc      dword ptr [r14\u002B0x14]\n        mov      rax, gword ptr [r14\u002B0x08]\n        mov      ecx, dword ptr [r14\u002B0x10]\n        mov      edi, dword ptr [rax\u002B0x08]\n        cmp      edi, ecx\n        ja       SHORT G_M40564_IG14\n        mov      rdi, r14\n        mov      esi, r12d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[uint]:AddWithResize(uint):this\n        call     [rax]System.Collections.Generic.List\u00601[uint]:AddWithResize(uint):this\n        jmp      SHORT G_M40564_IG15\n \t\t\t\t\t\t;; size=59 bbWeight=2 PerfScore 41.50\n G_M40564_IG14:\n-       lea      edx, [rcx\u002B0x01]\n-       mov      dword ptr [r14\u002B0x10], edx\n-       mov      ecx, ecx\n-       mov      dword ptr [rax\u002B4*rcx\u002B0x10], r12d\n\u002B       lea      edi, [rcx\u002B0x01]\n\u002B       mov      dword ptr [r14\u002B0x10], edi\n\u002B       mov      edi, ecx\n\u002B       mov      dword ptr [rax\u002B4*rdi\u002B0x10], r12d\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 5.50\n G_M40564_IG15:\n        inc      r12d\n        cmp      r12d, r15d\n        jbe      G_M40564_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M40564_IG16:\n        add      rbx, 328\n        mov      r15d, dword ptr [r14\u002B0x10]\n        mov      rdi, 0xD1FFAB1E      ; System.Runtime.CompilerServices.StrongBox\u00601[dnlib.DotNet.MD.RidList]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        lea      rdi, bword ptr [r13\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        xor      edi, edi\n        mov      dword ptr [r13\u002B0x10], edi\n        mov      dword ptr [r13\u002B0x14], r15d\n        mov      rdi, rbx\n        mov      rsi, r13\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n \t\t\t\t\t\t;; size=64 bbWeight=0.50 PerfScore 4.75\n G_M40564_IG17:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M40564_IG18:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M40564_IG19:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M40564_IG20:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 583, prolog size 22, PerfScore 255.00, instruction count 149, allocated bytes for code 583 (MethodHash=7886618b) for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n\u002B; Total bytes of code 533, prolog size 22, PerfScore 244.00, instruction count 141, allocated bytes for code 533 (MethodHash=7886618b) for method dnlib.DotNet.ModuleDefMD:InitializeModuleList():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":583,"DiffBytes":533},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[int]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[int]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M26628_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M26628_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M26628_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M26628_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M26628_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M26628_IG04:\n        cmp      r15d, 1\n        jne      G_M26628_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M26628_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M26628_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M26628_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M26628_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M26628_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M26628_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M26628_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M26628_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M26628_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M26628_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M26628_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=171497fb) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=171497fb) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[int]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)","Category":"improvement","Description":"769 -\u003E 719 bytes (-50)","ExtraInfo":null,"Diff":"@@ -1,302 \u002B1,294 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 10 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T11] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 arg1         [V01,T21] (  5,  5.50)     ref  -\u003E  [rbp-0x60]  class-hnd single-def \u003Cdnlib.DotNet.EventDefMD\u003E\n-;  V02 arg2         [V02,T13] (  5,  7   )   byref  -\u003E  r15         single-def\n-;  V03 arg3         [V03,T14] (  5,  7   )   byref  -\u003E  r14         single-def\n-;  V04 arg4         [V04,T15] (  5,  7   )   byref  -\u003E  r13         single-def\n-;  V05 arg5         [V05,T16] (  5,  7   )   byref  -\u003E  r12         single-def\n\u002B;  V00 this         [V00,T10] (  5,  8.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n\u002B;  V01 arg1         [V01,T22] (  5,  5.50)     ref  -\u003E  [rbp-0x60]  class-hnd single-def \u003Cdnlib.DotNet.EventDefMD\u003E\n\u002B;  V02 arg2         [V02,T12] (  5,  7   )   byref  -\u003E  r15         single-def\n\u002B;  V03 arg3         [V03,T13] (  5,  7   )   byref  -\u003E  r14         single-def\n\u002B;  V04 arg4         [V04,T14] (  5,  7   )   byref  -\u003E  r13         single-def\n\u002B;  V05 arg5         [V05,T15] (  5,  7   )   byref  -\u003E  r12         single-def\n ;  V06 loc0         [V06    ] (  8, 17   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V07 loc1         [V07,T02] (  8, 20.50)     int  -\u003E  [rbp-0x3C] \n ;  V08 loc2         [V08    ] (  3,  8   )  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V09 loc3         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V10 loc4         [V10,T06] (  6, 12   )  ushort  -\u003E  rdx        \n ;# V11 OutArgs      [V11    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V12 tmp1         [V12,T23] (  3,  6   )     ref  -\u003E  [rbp-0x68]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n\u002B;  V12 tmp1         [V12,T24] (  3,  6   )     ref  -\u003E  [rbp-0x68]  class-hnd exact spill-single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\u003E\n ;* V13 tmp2         [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V14 tmp3         [V14    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V15 tmp4         [V15,T05] (  2, 16   )     ref  -\u003E  [rbp-0x70]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V16 tmp5         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeDef\u003E\n ;* V17 tmp6         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V18 tmp7         [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V19 tmp8         [V19,T12] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V20 tmp9         [V20,T18] (  2,  8   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V21 tmp10        [V21,T20] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V19 tmp8         [V19,T11] (  4, 10   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V20 tmp9         [V20,T17] (  2,  8   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V21 tmp10        [V21,T21] (  2,  8   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;  V22 tmp11        [V22,T04] (  9, 18   )     ref  -\u003E  [rbp-0x78]  class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V23 tmp12        [V23,T00] (  8, 32   )     int  -\u003E  [rbp-0x54]  spill-single-def \u0022Inlining Arg\u0022\n ;  V24 tmp13        [V24,T03] (  5, 20   )     ref  -\u003E  [rbp-0x80]  class-hnd exact spill-single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V25 tmp14        [V25,T07] (  3, 12   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V25 tmp14        [V25,T18] (  2,  8   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V26 tmp15        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V27 tmp16        [V27,T19] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V28 tmp17        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V29 tmp18        [V29,T17] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V06.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V30 tmp19        [V30,T26] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V06.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V31 tmp20        [V31,T22] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V06.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V29 tmp18        [V29,T16] (  4,  8.50)     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V06.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V30 tmp19        [V30,T28] (  2,  2.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V06.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V31 tmp20        [V31,T23] (  4,  7   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V06.length (fldOffset=0xc)\u0022 P-DEP\n ;  V32 tmp21        [V32    ] (  2,  6   )  ushort  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V08.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V33 tmp22        [V33    ] (  2,  6   )     int  -\u003E  [rbp-0x4C]  do-not-enreg[X] addr-exposed \u0022field V08.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V34 tmp23        [V34    ] (  1,  4   )     int  -\u003E  [rbp-0x48]  do-not-enreg[X] addr-exposed \u0022field V08.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V35 tmp24        [V35,T25] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp24        [V35,T27] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V36 tmp25        [V36,T01] (  3, 24   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V37 tmp26        [V37,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V38 tmp27        [V38,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V39 cse0         [V39,T24] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #02: moderate\u0022\n-;  V40 rat0         [V40,T10] (  3, 12   )     ref  -\u003E  rdx         \u0022delegate invoke call\u0022\n\u002B;  V37 tmp26        [V37,T07] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V38 tmp27        [V38,T20] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V39 tmp28        [V39,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V40 cse0         [V40,T25] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #02: moderate\u0022\n\u002B;  V41 cse1         [V41,T26] (  2,  4   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n\u002B;  V42 rat0         [V42,T09] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 104\n \n G_M4781_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      gword ptr [rbp-0x60], rsi\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n        mov      r13, r8\n        mov      r12, r9\n \t\t\t\t\t\t;; size=57 bbWeight=1 PerfScore 11.58\n G_M4781_IG02:\n        xor      rdi, rdi\n        mov      gword ptr [r15], rdi\n \t\t\t\t\t\t;; size=5 bbWeight=1 PerfScore 1.25\n G_M4781_IG03:\n        mov      gword ptr [r14], rdi\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 1.00\n G_M4781_IG04:\n        mov      gword ptr [r13], rdi\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        call     CORINFO_HELP_NEWSFAST\n        mov      gword ptr [rbp-0x68], rax\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M4781_IG21\n \t\t\t\t\t\t;; size=42 bbWeight=1 PerfScore 6.50\n G_M4781_IG05:\n        mov      rdi, 0xD1FFAB1E      ; data for System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]:s_emptyArray\n        mov      rsi, gword ptr [rdi]\n        mov      rax, gword ptr [rbp-0x68]\n        lea      rdi, bword ptr [rax\u002B0x08]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rsi, gword ptr [rbp-0x68]\n        mov      rdi, r12\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        mov      rax, gword ptr [rbp-0x60]\n        test     rax, rax\n        je       G_M4781_IG20\n \t\t\t\t\t\t;; size=51 bbWeight=1 PerfScore 9.25\n G_M4781_IG06:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      gword ptr [rbp-0x60], rax\n        mov      edx, dword ptr [rax\u002B0x68]\n        mov      esi, 20\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x58]\n        call     [rcx\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      eax, eax\n        mov      dword ptr [rbp-0x3C], eax\n        cmp      dword ptr [rbp-0x2C], 0\n        jle      G_M4781_IG20\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.75\n G_M4781_IG07:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rcx, qword ptr [rdi]\n        mov      rcx, qword ptr [rcx\u002B0x48]\n        call     [rcx\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      gword ptr [rbp-0x70], rax\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M4781_IG09\n \t\t\t\t\t\t;; size=35 bbWeight=4 PerfScore 56.00\n G_M4781_IG08:\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      ecx, dword ptr [rbp-0x2C]\n        jae      SHORT G_M4781_IG10\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        add      esi, dword ptr [rbp-0x30]\n        jmp      SHORT G_M4781_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=2 PerfScore 14.50\n G_M4781_IG09:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        mov      ecx, dword ptr [rbp-0x3C]\n        cmp      eax, ecx\n        jbe      SHORT G_M4781_IG10\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      dword ptr [rbp-0x3C], ecx\n        mov      esi, ecx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M4781_IG11\n \t\t\t\t\t\t;; size=50 bbWeight=2 PerfScore 28.50\n G_M4781_IG10:\n        xor      esi, esi\n        mov      dword ptr [rbp-0x3C], ecx\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M4781_IG11:\n        lea      rdx, [rbp-0x50]\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M4781_IG19\n \t\t\t\t\t\t;; size=30 bbWeight=4 PerfScore 32.00\n G_M4781_IG12:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      eax, dword ptr [rbp-0x4C]\n-       mov      rcx, gword ptr [rdi\u002B0x170]\n\u002B       mov      rcx, gword ptr [rsi\u002B0x170]\n        mov      gword ptr [rbp-0x80], rcx\n        dec      eax\n        mov      dword ptr [rbp-0x54], eax\n        cmp      eax, dword ptr [rcx\u002B0x18]\n-       jae      G_M4781_IG14\n-       mov      rdi, gword ptr [rcx\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      eax, dword ptr [rsi\u002B0x08]\n-       jae      G_M4781_IG23\n\u002B       jae      SHORT G_M4781_IG14\n\u002B       mov      rsi, gword ptr [rcx\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      edx, dword ptr [rdi\u002B0x08]\n\u002B       cmp      eax, edx\n\u002B       jae      G_M4781_IG22\n        mov      edx, eax\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       cmp      qword ptr [rdi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M4781_IG13\n-       mov      esi, eax\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      r8, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [r8]CORINFO_HELP_LDELEMA_REF\n-       mov      bword ptr [rbp-0x88], rax\n-       mov      rcx, gword ptr [rbp-0x80]\n-       mov      rdx, gword ptr [rcx\u002B0x10]\n-       mov      r8d, dword ptr [rbp-0x54]\n-       lea      esi, [r8\u002B0x01]\n-       mov      rdi, gword ptr [rdx\u002B0x10]\n-       call     [rdx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n\u002B       mov      edi, eax\n\u002B       lea      rdx, bword ptr [rsi\u002B8*rdi\u002B0x10]\n\u002B       mov      bword ptr [rbp-0x88], rdx\n\u002B       mov      r8, gword ptr [rcx\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x88]\n-       test     rdi, rdi\n-       je       G_M4781_IG22\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      eax, dword ptr [rbp-0x54]\n-\t\t\t\t\t\t;; size=145 bbWeight=2 PerfScore 75.50\n-G_M4781_IG13:\n        mov      rcx, gword ptr [rbp-0x80]\n\u002B\t\t\t\t\t\t;; size=112 bbWeight=2 PerfScore 66.50\n\u002BG_M4781_IG13:\n        mov      rdi, gword ptr [rcx\u002B0x08]\n        cmp      eax, dword ptr [rdi\u002B0x08]\n-       jae      G_M4781_IG23\n\u002B       jae      G_M4781_IG22\n        mov      esi, eax\n        mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M4781_IG15\n-\t\t\t\t\t\t;; size=26 bbWeight=2 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 18.50\n G_M4781_IG14:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M4781_IG15:\n        test     rax, rax\n        je       G_M4781_IG19\n        mov      rdi, gword ptr [rax\u002B0x70]\n        mov      rcx, gword ptr [rbp-0x60]\n        cmp      rdi, qword ptr [rcx\u002B0x50]\n        jne      G_M4781_IG19\n        movzx    rdx, word  ptr [rbp-0x50]\n        cmp      edx, 8\n        jle      SHORT G_M4781_IG17\n        cmp      edx, 16\n        jne      SHORT G_M4781_IG16\n        cmp      qword ptr [r13], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r13\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=61 bbWeight=2 PerfScore 34.50\n G_M4781_IG16:\n        cmp      edx, 32\n        jne      SHORT G_M4781_IG19\n        cmp      qword ptr [r14], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r14\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 15.50\n G_M4781_IG17:\n        cmp      edx, 4\n        jne      SHORT G_M4781_IG18\n        mov      rdi, gword ptr [r12]\n        mov      gword ptr [rbp-0x78], rax\n        mov      rsi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Contains(System.__Canon):bool:this\n        test     eax, eax\n        jne      SHORT G_M4781_IG19\n        mov      rdi, gword ptr [r12]\n        mov      rsi, gword ptr [rbp-0x78]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:Add(System.__Canon):this\n        jmp      SHORT G_M4781_IG19\n \t\t\t\t\t\t;; size=56 bbWeight=2 PerfScore 34.50\n G_M4781_IG18:\n        cmp      edx, 8\n        jne      SHORT G_M4781_IG19\n        cmp      qword ptr [r15], 0\n        jne      SHORT G_M4781_IG19\n        mov      rdi, r15\n        mov      rsi, rax\n        call     CORINFO_HELP_CHECKED_ASSIGN_REF\n \t\t\t\t\t\t;; size=22 bbWeight=2 PerfScore 11.50\n G_M4781_IG19:\n        mov      ecx, dword ptr [rbp-0x3C]\n        inc      ecx\n        cmp      ecx, dword ptr [rbp-0x2C]\n        mov      dword ptr [rbp-0x3C], ecx\n        jl       G_M4781_IG07\n \t\t\t\t\t\t;; size=17 bbWeight=4 PerfScore 17.00\n G_M4781_IG20:\n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M4781_IG21:\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.List\u00601[dnlib.DotNet.MethodDef]\n        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rcx]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M4781_IG05\n \t\t\t\t\t\t;; size=27 bbWeight=0 PerfScore 0.00\n G_M4781_IG22:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4781_IG23:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 769, prolog size 38, PerfScore 386.58, instruction count 199, allocated bytes for code 769 (MethodHash=0ee3ed52) for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n\u002B; Total bytes of code 719, prolog size 38, PerfScore 375.58, instruction count 191, allocated bytes for code 719 (MethodHash=0ee3ed52) for method dnlib.DotNet.TypeDefMD:InitializeEvent(dnlib.DotNet.EventDefMD,byref,byref,byref,byref):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":769,"DiffBytes":719},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[long]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[long]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M48957_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M48957_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M48957_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M48957_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M48957_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M48957_IG04:\n        cmp      r15d, 1\n        jne      G_M48957_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M48957_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M48957_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M48957_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M48957_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M48957_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M48957_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M48957_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M48957_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M48957_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M48957_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M48957_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=752c40c2) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=752c40c2) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[long]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"290 -\u003E 249 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,153 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  4,  4   )     ref  -\u003E  r15         this class-hnd single-def \u003Cdnlib.DotNet.GenericParamMD\u003E\n ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V02 arg2         [V02,T02] (  6,  4   )     int  -\u003E  rbx         single-def\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T05] (  2,  4   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V05 tmp2         [V05,T04] (  4,  5   )     int  -\u003E  rbx         \u0022impAppendStmt\u0022\n ;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret multireg-dest single-def \u0022spilled call-like call argument\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V07 tmp4         [V07,T13] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V08 tmp5         [V08,T00] (  8, 10   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp5         [V08,T00] (  9, 11   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V09 tmp6         [V09,T01] (  6,  8   )     ref  -\u003E  r15         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V10 tmp7         [V10,T14] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V12 tmp9         [V12,T08] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V13 tmp10        [V13,T17] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp9         [V12,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V13 tmp10        [V13,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V15 tmp12        [V15,T15] (  2,  1.50)     ref  -\u003E  rax         \u0022field V06.Type (fldOffset=0x0)\u0022 P-INDEP\n-;  V16 tmp13        [V16,T16] (  2,  1.50)     ref  -\u003E  rcx         \u0022field V06.Method (fldOffset=0x8)\u0022 P-INDEP\n\u002B;  V15 tmp12        [V15,T16] (  2,  1.50)     ref  -\u003E  rax         \u0022field V06.Type (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V16 tmp13        [V16,T17] (  2,  1.50)     ref  -\u003E  rcx         \u0022field V06.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V17 tmp14        [V17,T06] (  4,  3   )     ref  -\u003E  r13         single-def \u0022V01.[000..008)\u0022\n ;* V18 tmp15        [V18    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[008..012)\u0022\n ;* V19 tmp16        [V19    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[012..016)\u0022\n-;  V20 tmp17        [V20,T09] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V21 tmp18        [V21,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V22 rat0         [V22,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n-;  V23 rat1         [V23,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n-;  V24 rat2         [V24,T12] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V20 tmp17        [V20,T08] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp18        [V21,T09] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V23 rat0         [V23,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n\u002B;  V24 rat1         [V24,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n\u002B;  V25 rat2         [V25,T12] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 0\n \n G_M33850_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        lea      rbp, [rsp\u002B0x20]\n        mov      r15, rdi\n        mov      ebx, ecx\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M33850_IG02:\n        mov      r14, gword ptr [r15\u002B0x48]\n        mov      r13, rsi\n        test     r13, r13\n        jne      SHORT G_M33850_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 3.50\n G_M33850_IG03:\n        mov      rdi, rdx\n        shr      rdi, 32\n        cmp      ebx, edi\n        jae      SHORT G_M33850_IG05\n        add      ebx, edx\n        jmp      SHORT G_M33850_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M33850_IG04:\n        mov      rdi, r13\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, ebx\n        jbe      SHORT G_M33850_IG05\n        mov      rdi, r13\n        mov      esi, ebx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      ebx, eax\n        jmp      SHORT G_M33850_IG06\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 5.38\n G_M33850_IG05:\n        xor      ebx, ebx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M33850_IG06:\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.GenericParamMD:GetGenericParamContext(dnlib.DotNet.ITypeOrMethodDef):dnlib.DotNet.GenericParamContext\n        call     [rax]dnlib.DotNet.GenericParamMD:GetGenericParamContext(dnlib.DotNet.ITypeOrMethodDef):dnlib.DotNet.GenericParamContext\n        mov      rcx, rdx\n        mov      r15, gword ptr [r14\u002B0x210]\n        dec      ebx\n        cmp      ebx, dword ptr [r15\u002B0x18]\n-       jae      G_M33850_IG10\n-\t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 10.75\n\u002B       jae      SHORT G_M33850_IG10\n\u002B\t\t\t\t\t\t;; size=34 bbWeight=1 PerfScore 10.75\n G_M33850_IG07:\n        mov      rdx, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M33850_IG13\n\u002B       jae      SHORT G_M33850_IG12\n        mov      esi, ebx\n        cmp      qword ptr [rdx\u002B8*rsi\u002B0x10], 0\n        jne      SHORT G_M33850_IG08\n        mov      r8, gword ptr [r15\u002B0x10]\n        mov      rdx, rax\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [r8\u002B0x10]\n        call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M33850_IG09\n        mov      rdi, gword ptr [r15\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M33850_IG12\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M33850_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.75\n\u002B\t\t\t\t\t\t;; size=86 bbWeight=0.50 PerfScore 15.25\n G_M33850_IG08:\n        mov      rax, gword ptr [r15\u002B0x08]\n        cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M33850_IG13\n\u002B       jae      SHORT G_M33850_IG12\n        mov      ecx, ebx\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M33850_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M33850_IG09:\n        mov      rax, r14\n        jmp      SHORT G_M33850_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M33850_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M33850_IG11:\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.50\n G_M33850_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M33850_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 290, prolog size 13, PerfScore 53.00, instruction count 86, allocated bytes for code 290 (MethodHash=4c257bc5) for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 249, prolog size 13, PerfScore 52.50, instruction count 80, allocated bytes for code 249 (MethodHash=4c257bc5) for method dnlib.DotNet.GenericParamMD:\u003CInitializeGenericParamConstraints\u003Eb__6_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":290,"DiffBytes":249},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"248 -\u003E 231 bytes (-17)","ExtraInfo":null,"Diff":"@@ -1,128 \u002B1,127 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T04] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]\u003E\n-;  V01 loc0         [V01,T10] (  3,  2.50)     int  -\u003E  r15         single-def\n-;  V02 loc1         [V02,T11] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[short]\u003E\n\u002B;  V00 this         [V00,T06] ( 13, 15.50)     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]\u003E\n\u002B;  V01 loc0         [V01,T11] (  3,  2.50)     int  -\u003E  r15         single-def\n\u002B;  V02 loc1         [V02,T12] (  2,  1.50)     ref  -\u003E  rdi         class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[short]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\u003E\n-;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V07 tmp4         [V07,T05] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\u003E\n\u002B;  V06 tmp3         [V06,T01] (  3, 24   )   byref  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp4         [V07,T07] (  2, 16   )     ref  -\u003E  rax         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V09 tmp6         [V09    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V10 tmp7         [V10,T00] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V11 tmp8         [V11,T07] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V11 tmp8         [V11,T08] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  1   )     ref  -\u003E  rsi         single-def \u0022field V04._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04._idx (fldOffset=0xc)\u0022 P-INDEP\n-;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V16 tmp13        [V16,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V17 tmp14        [V17,T06] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V18 cse0         [V18,T08] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V19 cse1         [V19,T09] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n\u002B;  V15 tmp12        [V15,T02] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V17 tmp14        [V17,T03] (  3, 24   )     ref  -\u003E  rcx         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V19 cse0         [V19,T09] (  3, 12   )     int  -\u003E  rax         \u0022CSE #03: moderate\u0022\n\u002B;  V20 cse1         [V20,T10] (  2,  5   )    long  -\u003E  r15         hoist \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M36677_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M36677_IG02:\n        mov      r15d, dword ptr [rbx\u002B0x10]\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     r15d, r15d\n        jne      SHORT G_M36677_IG04\n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 5.25\n G_M36677_IG03:\n        mov      dword ptr [rbx\u002B0x10], -1\n        mov      rsi, gword ptr [rdi\u002B0x08]\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdx, 0xD1FFAB1E\n        mov      qword ptr [rbx\u002B0x28], rdx\n        jmp      SHORT G_M36677_IG05\n \t\t\t\t\t\t;; size=36 bbWeight=0.50 PerfScore 3.88\n G_M36677_IG04:\n        cmp      r15d, 1\n        jne      G_M36677_IG09\n        mov      dword ptr [rbx\u002B0x10], -1\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 1.12\n G_M36677_IG05:\n        mov      r15, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\n \t\t\t\t\t\t;; size=10 bbWeight=1 PerfScore 0.25\n G_M36677_IG06:\n        lea      r14, bword ptr [rbx\u002B0x20]\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       SHORT G_M36677_IG09\n        mov      dword ptr [r14\u002B0x0C], eax\n-       lea      rdi, bword ptr [rbx\u002B0x20]\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       lea      rax, bword ptr [rbx\u002B0x20]\n\u002B       mov      rcx, gword ptr [rax]\n\u002B       mov      rcx, gword ptr [rcx\u002B0x08]\n\u002B       mov      eax, dword ptr [rax\u002B0x0C]\n\u002B       mov      edx, eax\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rcx\u002B0x08]\n        jae      SHORT G_M36677_IG11\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rdx, 4\n\u002B       mov      rcx, gword ptr [rcx\u002Brdx\u002B0x10]\n\u002B       and      eax, 31\n\u002B       cmp      eax, dword ptr [rcx\u002B0x08]\n\u002B       jae      SHORT G_M36677_IG11\n\u002B       mov      rax, gword ptr [rcx\u002B8*rax\u002B0x10]\n        cmp      dword ptr [rax\u002B0x10], 0\n        jl       SHORT G_M36677_IG06\n-\t\t\t\t\t\t;; size=107 bbWeight=4 PerfScore 129.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 126.00\n G_M36677_IG07:\n        mov      eax, dword ptr [rbx\u002B0x2C]\n        inc      eax\n        mov      dword ptr [rbx\u002B0x14], eax\n        mov      dword ptr [rbx\u002B0x10], 1\n        mov      eax, 1\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 2.25\n G_M36677_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M36677_IG09:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M36677_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M36677_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 248, prolog size 12, PerfScore 150.88, instruction count 70, allocated bytes for code 248 (MethodHash=b20d70ba) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 147.88, instruction count 68, allocated bytes for code 231 (MethodHash=b20d70ba) for method ClosedXML.Excel.Slice\u00601\u002B\u003Cget_UsedRows\u003Ed__18[short]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":248,"DiffBytes":231},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"275 -\u003E 234 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,153 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  4,  3.50)     ref  -\u003E  r15         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n ;* V01 arg1         [V01    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg ld-addr-op single-def \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V02 arg2         [V02,T02] (  6,  4   )     int  -\u003E  rbx         single-def\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T05] (  2,  4   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V06 tmp3         [V06,T04] (  4,  5   )     int  -\u003E  rbx         \u0022impAppendStmt\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T13] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V09 tmp6         [V09,T00] (  8, 10   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  9, 11   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T01] (  6,  8   )     ref  -\u003E  r14         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V11 tmp8         [V11,T14] (  4,  2   )     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V13 tmp10        [V13,T08] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V14 tmp11        [V14,T15] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V13 tmp10        [V13,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V14 tmp11        [V14,T16] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V05.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V05.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20,T06] (  4,  3   )     ref  -\u003E  r13         single-def \u0022V01.[000..008)\u0022\n ;* V21 tmp18        [V21    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[008..012)\u0022\n ;* V22 tmp19        [V22    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V01.[012..016)\u0022\n-;  V23 tmp20        [V23,T09] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V24 tmp21        [V24,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V25 rat0         [V25,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n-;  V26 rat1         [V26,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n-;  V27 rat2         [V27,T12] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V23 tmp20        [V23,T08] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V24 tmp21        [V24,T09] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp22        [V25,T10] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V26 rat0         [V26,T11] (  3,  3   )     ref  -\u003E  rsi         \u0022V01.rsi\u0022\n\u002B;  V27 rat1         [V27,T07] (  4,  3   )    long  -\u003E  rdx         \u0022V01.rdx\u0022\n\u002B;  V28 rat2         [V28,T12] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 0\n \n G_M1526_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        lea      rbp, [rsp\u002B0x20]\n        mov      r15, rdi\n        mov      ebx, ecx\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.00\n G_M1526_IG02:\n        mov      r14, gword ptr [r15\u002B0xA0]\n        mov      r13, rsi\n        test     r13, r13\n        jne      SHORT G_M1526_IG04\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 3.50\n G_M1526_IG03:\n        mov      rdi, rdx\n        shr      rdi, 32\n        cmp      ebx, edi\n        jae      SHORT G_M1526_IG05\n        add      ebx, edx\n        jmp      SHORT G_M1526_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M1526_IG04:\n        mov      rdi, r13\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, ebx\n        jbe      SHORT G_M1526_IG05\n        mov      rdi, r13\n        mov      esi, ebx\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      ebx, eax\n        jmp      SHORT G_M1526_IG06\n \t\t\t\t\t\t;; size=42 bbWeight=0.50 PerfScore 5.38\n G_M1526_IG05:\n        xor      ebx, ebx\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M1526_IG06:\n        mov      r14, gword ptr [r14\u002B0x180]\n        dec      ebx\n        cmp      ebx, dword ptr [r14\u002B0x18]\n-       jae      G_M1526_IG10\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 5.25\n\u002B       jae      SHORT G_M1526_IG10\n\u002B\t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.25\n G_M1526_IG07:\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      ebx, dword ptr [rsi\u002B0x08]\n-       jae      G_M1526_IG13\n\u002B       jae      SHORT G_M1526_IG12\n        mov      edx, ebx\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M1526_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [rbx\u002B0x01]\n        mov      rdx, r15\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        mov      rdi, gword ptr [r15\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M1526_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M1526_IG12\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M1526_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=111 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.38\n G_M1526_IG08:\n        mov      rax, gword ptr [r14\u002B0x08]\n        cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M1526_IG13\n\u002B       jae      SHORT G_M1526_IG12\n        mov      ecx, ebx\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M1526_IG11\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M1526_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M1526_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M1526_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M1526_IG11:\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 3.50\n G_M1526_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M1526_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 275, prolog size 13, PerfScore 47.62, instruction count 83, allocated bytes for code 275 (MethodHash=84defa09) for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 234, prolog size 13, PerfScore 47.12, instruction count 77, allocated bytes for code 234 (MethodHash=84defa09) for method dnlib.DotNet.TypeDefMD:\u003CInitializeInterfaces\u003Eb__12_0(dnlib.DotNet.MD.RidList,int):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":275,"DiffBytes":234},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M7293_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M7293_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:ThrowIfDisposed():this\n        jmp      G_M7293_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M7293_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M7293_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M7293_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M7293_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M7293_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M7293_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M7293_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M7293_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M7293_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M7293_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M7293_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=517ae382) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=517ae382) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)","Category":"improvement","Description":"1,153 -\u003E 1,112 bytes (-41)","ExtraInfo":null,"Diff":"@@ -1,448 \u002B1,441 @@\n ; Assembly listing for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 16 single block inlinees; 8 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T08] ( 14, 64   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.TypeDefMD\u003E\n-;  V01 loc0         [V01,T50] (  4,  4   )     int  -\u003E  rax        \n\u002B;  V01 loc0         [V01,T52] (  4,  4   )     int  -\u003E  rax        \n ;  V02 loc1         [V02    ] ( 16, 44   )  struct (16) [rbp-0x38]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V03 loc2         [V03,T23] (  9, 34   )     int  -\u003E  r15        \n ;  V04 loc3         [V04    ] (  8, 72   )  struct (16) [rbp-0x48]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V05 loc4         [V05,T04] (  8, 84   )     int  -\u003E  r14        \n ;  V06 loc5         [V06    ] (  3, 32   )  struct (16) [rbp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V07 loc6         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;  V08 loc7         [V08,T24] (  9, 34   )     int  -\u003E  r15        \n ;  V09 loc8         [V09    ] (  8, 72   )  struct (16) [rbp-0x68]  do-not-enreg[SBRM] multireg-ret multireg-dest must-init ld-addr-op \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V10 loc9         [V10,T05] (  8, 84   )     int  -\u003E  r14        \n ;  V11 loc10        [V11    ] (  3, 32   )  struct (16) [rbp-0x78]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSemanticsRow\u003E\n ;* V12 loc11        [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V14 tmp1         [V14    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n-;  V15 tmp2         [V15,T36] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n\u002B;  V15 tmp2         [V15,T38] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V16 tmp3         [V16    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V17 tmp4         [V17,T09] (  2, 64   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V18 tmp5         [V18    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n-;  V19 tmp6         [V19,T37] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n\u002B;  V19 tmp6         [V19,T39] (  3, 24   )     ref  -\u003E  r14         class-hnd \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.MetadataBase\u003E\n ;* V20 tmp7         [V20    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SRM] multireg-ret multireg-dest \u0022Return value temp for multireg return\u0022 \u003Cdnlib.DotNet.MD.RidList\u003E\n ;  V21 tmp8         [V21,T10] (  2, 64   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V22 tmp9         [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V23 tmp10        [V23    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V24 tmp11        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V25 tmp12        [V25,T43] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n\u002B;  V25 tmp12        [V25,T45] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V26 tmp13        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V27 tmp14        [V27,T19] (  4, 40   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V28 tmp15        [V28,T29] (  2, 32   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V29 tmp16        [V29,T33] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V28 tmp15        [V28,T29] (  2, 32   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V29 tmp16        [V29,T35] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V30 tmp17        [V30,T25] (  3, 24   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V31 tmp18        [V31,T00] (  8,128   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V31 tmp18        [V31,T00] (  9,144   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V32 tmp19        [V32,T06] (  5, 80   )     ref  -\u003E  r12         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V33 tmp20        [V33,T11] (  3, 48   )   byref  -\u003E  [rbp-0x80]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V33 tmp20        [V33,T30] (  2, 32   )   byref  -\u003E  [rbp-0x80]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V34 tmp21        [V34    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V35 tmp22        [V35,T30] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V35 tmp22        [V35,T31] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V36 tmp23        [V36    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n ;* V37 tmp24        [V37    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V38 tmp25        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V39 tmp26        [V39    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V40 tmp27        [V40,T44] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n\u002B;  V40 tmp27        [V40,T46] (  4, 10   )     int  -\u003E  rdx         \u0022Inline return value spill temp\u0022\n ;* V41 tmp28        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V42 tmp29        [V42,T20] (  4, 40   )     int  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n-;  V43 tmp30        [V43,T31] (  2, 32   )     ref  -\u003E  rdi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V44 tmp31        [V44,T34] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V43 tmp30        [V43,T32] (  2, 32   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n\u002B;  V44 tmp31        [V44,T36] (  2, 32   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V45 tmp32        [V45,T26] (  3, 24   )     ref  -\u003E  rcx         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V46 tmp33        [V46,T01] (  8,128   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp33        [V46,T01] (  9,144   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V47 tmp34        [V47,T07] (  5, 80   )     ref  -\u003E  r12         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.MethodDefMD]\u003E\n-;  V48 tmp35        [V48,T12] (  3, 48   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V48 tmp35        [V48,T33] (  2, 32   )   byref  -\u003E  [rbp-0x88]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V49 tmp36        [V49    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V50 tmp37        [V50,T32] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V50 tmp37        [V50,T34] (  2, 32   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V51 tmp38        [V51    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodDefMD\u003E\n-;  V52 tmp39        [V52,T40] (  8, 18   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V02.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V53 tmp40        [V53,T45] (  4,  6   )     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V02.startRid (fldOffset=0x8)\u0022 P-DEP\n-;  V54 tmp41        [V54,T35] (  8, 24   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V02.length (fldOffset=0xc)\u0022 P-DEP\n\u002B;  V52 tmp39        [V52,T42] (  8, 18   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[] \u0022field V02.rids (fldOffset=0x0)\u0022 P-DEP\n\u002B;  V53 tmp40        [V53,T47] (  4,  6   )     int  -\u003E  [rbp-0x30]  do-not-enreg[] \u0022field V02.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V54 tmp41        [V54,T37] (  8, 24   )     int  -\u003E  [rbp-0x2C]  do-not-enreg[] \u0022field V02.length (fldOffset=0xc)\u0022 P-DEP\n ;  V55 tmp42        [V55,T21] (  4, 36   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[] \u0022field V04.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V56 tmp43        [V56,T41] (  2, 12   )     int  -\u003E  [rbp-0x40]  do-not-enreg[] \u0022field V04.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V56 tmp43        [V56,T43] (  2, 12   )     int  -\u003E  [rbp-0x40]  do-not-enreg[] \u0022field V04.startRid (fldOffset=0x8)\u0022 P-DEP\n ;  V57 tmp44        [V57,T27] (  4, 32   )     int  -\u003E  [rbp-0x3C]  do-not-enreg[] \u0022field V04.length (fldOffset=0xc)\u0022 P-DEP\n ;  V58 tmp45        [V58    ] (  2, 24   )  ushort  -\u003E  [rbp-0x58]  do-not-enreg[X] addr-exposed \u0022field V06.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V59 tmp46        [V59    ] (  2, 24   )     int  -\u003E  [rbp-0x54]  do-not-enreg[X] addr-exposed \u0022field V06.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V60 tmp47        [V60    ] (  1, 16   )     int  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V06.Association (fldOffset=0x8)\u0022 P-DEP\n ;  V61 tmp48        [V61,T22] (  4, 36   )     ref  -\u003E  [rbp-0x68]  do-not-enreg[] \u0022field V09.rids (fldOffset=0x0)\u0022 P-DEP\n-;  V62 tmp49        [V62,T42] (  2, 12   )     int  -\u003E  [rbp-0x60]  do-not-enreg[] \u0022field V09.startRid (fldOffset=0x8)\u0022 P-DEP\n\u002B;  V62 tmp49        [V62,T44] (  2, 12   )     int  -\u003E  [rbp-0x60]  do-not-enreg[] \u0022field V09.startRid (fldOffset=0x8)\u0022 P-DEP\n ;  V63 tmp50        [V63,T28] (  4, 32   )     int  -\u003E  [rbp-0x5C]  do-not-enreg[] \u0022field V09.length (fldOffset=0xc)\u0022 P-DEP\n ;  V64 tmp51        [V64    ] (  2, 24   )  ushort  -\u003E  [rbp-0x78]  do-not-enreg[X] addr-exposed \u0022field V11.Semantic (fldOffset=0x0)\u0022 P-DEP\n ;  V65 tmp52        [V65    ] (  2, 24   )     int  -\u003E  [rbp-0x74]  do-not-enreg[X] addr-exposed \u0022field V11.Method (fldOffset=0x4)\u0022 P-DEP\n ;  V66 tmp53        [V66    ] (  1, 16   )     int  -\u003E  [rbp-0x70]  do-not-enreg[X] addr-exposed \u0022field V11.Association (fldOffset=0x8)\u0022 P-DEP\n-;  V67 tmp54        [V67,T46] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V68 tmp55        [V68,T47] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V67 tmp54        [V67,T48] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V68 tmp55        [V68,T49] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V69 tmp56        [V69,T02] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V70 tmp57        [V70,T13] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V71 tmp58        [V71,T14] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n-;  V72 tmp59        [V72,T48] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V73 tmp60        [V73,T49] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V74 tmp61        [V74,T03] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V75 tmp62        [V75,T15] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V76 tmp63        [V76,T16] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n-;  V77 cse0         [V77,T38] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #01: conservative\u0022\n-;  V78 cse1         [V78,T39] (  3, 24   )     ref  -\u003E  rdi         \u0022CSE #06: conservative\u0022\n-;  V79 rat0         [V79,T17] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n-;  V80 rat1         [V80,T18] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V70 tmp57        [V70,T11] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V71 tmp58        [V71,T12] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V72 tmp59        [V72,T13] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V73 tmp60        [V73,T50] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V74 tmp61        [V74,T51] (  3,  6   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V75 tmp62        [V75,T03] (  3, 96   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n\u002B;  V76 tmp63        [V76,T14] (  3, 48   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V77 tmp64        [V77,T15] (  3, 48   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V78 tmp65        [V78,T16] (  3, 48   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V79 cse0         [V79,T40] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #01: conservative\u0022\n\u002B;  V80 cse1         [V80,T41] (  3, 24   )     ref  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n\u002B;  V81 rat0         [V81,T17] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V82 rat1         [V82,T18] (  3, 48   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 104\n \n G_M9959_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x78], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu32 zmmword ptr [rbp-0x70], zmm8\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=50 bbWeight=1 PerfScore 11.58\n G_M9959_IG02:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, dword ptr [rbx\u002B0x9C]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x60]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:GetPropertyMapRid(uint):uint:this\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, eax\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax]dnlib.DotNet.MD.Metadata:GetPropertyRidList(uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      r15d, r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jge      G_M9959_IG17\n \t\t\t\t\t\t;; size=76 bbWeight=1 PerfScore 28.50\n G_M9959_IG03:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      r14, gword ptr [rdi\u002B0x130]\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M9959_IG05\n \t\t\t\t\t\t;; size=21 bbWeight=4 PerfScore 24.00\n G_M9959_IG04:\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jae      SHORT G_M9959_IG06\n        mov      edx, r15d\n        add      edx, dword ptr [rbp-0x30]\n        jmp      SHORT G_M9959_IG07\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 10.50\n G_M9959_IG05:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r15d\n        jbe      SHORT G_M9959_IG06\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      esi, r15d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      edx, eax\n        jmp      SHORT G_M9959_IG07\n \t\t\t\t\t\t;; size=46 bbWeight=2 PerfScore 24.50\n G_M9959_IG06:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M9959_IG07:\n        mov      rdi, r14\n        mov      esi, 23\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x48], rax\n        mov      qword ptr [rbp-0x40], rdx\n        xor      r14d, r14d\n        cmp      dword ptr [rbp-0x3C], 0\n        jle      G_M9959_IG16\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 47.00\n G_M9959_IG08:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      r13, rax\n        cmp      qword ptr [rbp-0x48], 0\n        jne      SHORT G_M9959_IG10\n \t\t\t\t\t\t;; size=34 bbWeight=16 PerfScore 212.00\n G_M9959_IG09:\n        cmp      r14d, dword ptr [rbp-0x3C]\n        jae      SHORT G_M9959_IG11\n        mov      esi, r14d\n        add      esi, dword ptr [rbp-0x40]\n        jmp      SHORT G_M9959_IG12\n \t\t\t\t\t\t;; size=14 bbWeight=8 PerfScore 42.00\n G_M9959_IG10:\n        mov      rdi, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r14d\n        jbe      SHORT G_M9959_IG11\n        mov      rdi, gword ptr [rbp-0x48]\n        mov      esi, r14d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M9959_IG12\n \t\t\t\t\t\t;; size=46 bbWeight=8 PerfScore 98.00\n G_M9959_IG11:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M9959_IG12:\n        lea      rdx, [rbp-0x58]\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M9959_IG15\n \t\t\t\t\t\t;; size=29 bbWeight=16 PerfScore 116.00\n G_M9959_IG13:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      r13d, dword ptr [rbp-0x54]\n-       mov      r12, gword ptr [rdi\u002B0x170]\n\u002B       mov      r12, gword ptr [rsi\u002B0x170]\n        dec      r13d\n        cmp      r13d, dword ptr [r12\u002B0x18]\n        jae      G_M9959_IG15\n-       mov      rdi, gword ptr [r12\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M9959_IG34\n-       mov      edx, r13d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      eax, r13d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M9959_IG14\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      edi, r13d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x80], rax\n        mov      rcx, gword ptr [r12\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x80]\n-       test     rdi, rdi\n-       je       G_M9959_IG33\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=129 bbWeight=8 PerfScore 262.00\n\u002B\t\t\t\t\t\t;; size=113 bbWeight=8 PerfScore 256.00\n G_M9959_IG14:\n        mov      rax, gword ptr [r12\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M9959_IG34\n\u002B       jae      G_M9959_IG33\n        mov      edi, r13d\n        mov      rdi, gword ptr [rax\u002B8*rdi\u002B0x10]\n        test     rdi, rdi\n        je       SHORT G_M9959_IG15\n        add      rdi, 136\n        movzx    rsi, word  ptr [rbp-0x58]\n        mov      rax, 0xD1FFAB1E      ; data for dnlib.DotNet.MethodDef:SEMATTRS_INITD\n        or       esi, dword ptr [rax]\n        xor      eax, eax\n        lock     \n        cmpxchg  dword ptr [rdi], esi\n \t\t\t\t\t\t;; size=57 bbWeight=8 PerfScore 242.00\n G_M9959_IG15:\n        inc      r14d\n        cmp      r14d, dword ptr [rbp-0x3C]\n        jl       G_M9959_IG08\n \t\t\t\t\t\t;; size=13 bbWeight=16 PerfScore 36.00\n G_M9959_IG16:\n        inc      r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jl       G_M9959_IG03\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 18.00\n G_M9959_IG17:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, dword ptr [rbx\u002B0x9C]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x60]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetEventMapRid(uint):uint:this\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      esi, eax\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x50]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:GetEventRidList(uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x38], rax\n        mov      qword ptr [rbp-0x30], rdx\n        xor      r15d, r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jge      G_M9959_IG32\n \t\t\t\t\t\t;; size=77 bbWeight=1 PerfScore 28.50\n G_M9959_IG18:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      r14, gword ptr [rdi\u002B0x130]\n        cmp      qword ptr [rbp-0x38], 0\n        jne      SHORT G_M9959_IG20\n \t\t\t\t\t\t;; size=21 bbWeight=4 PerfScore 24.00\n G_M9959_IG19:\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jae      SHORT G_M9959_IG21\n        mov      edx, r15d\n        add      edx, dword ptr [rbp-0x30]\n        jmp      SHORT G_M9959_IG22\n \t\t\t\t\t\t;; size=14 bbWeight=2 PerfScore 10.50\n G_M9959_IG20:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r15d\n        jbe      SHORT G_M9959_IG21\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      esi, r15d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      edx, eax\n        jmp      SHORT G_M9959_IG22\n \t\t\t\t\t\t;; size=46 bbWeight=2 PerfScore 24.50\n G_M9959_IG21:\n        xor      edx, edx\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M9959_IG22:\n        mov      rdi, r14\n        mov      esi, 20\n        mov      rax, qword ptr [r14]\n        mov      rax, qword ptr [rax\u002B0x58]\n        call     [rax\u002B0x30]dnlib.DotNet.MD.Metadata:GetMethodSemanticsRidList(byte,uint):dnlib.DotNet.MD.RidList:this\n        mov      gword ptr [rbp-0x68], rax\n        mov      qword ptr [rbp-0x60], rdx\n        xor      r14d, r14d\n        cmp      dword ptr [rbp-0x5C], 0\n        jle      G_M9959_IG31\n \t\t\t\t\t\t;; size=39 bbWeight=4 PerfScore 47.00\n G_M9959_IG23:\n        mov      rdi, gword ptr [rbx\u002B0xA0]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      r13, rax\n        cmp      qword ptr [rbp-0x68], 0\n        jne      SHORT G_M9959_IG25\n \t\t\t\t\t\t;; size=34 bbWeight=16 PerfScore 212.00\n G_M9959_IG24:\n        cmp      r14d, dword ptr [rbp-0x5C]\n        jae      SHORT G_M9959_IG26\n        mov      esi, r14d\n        add      esi, dword ptr [rbp-0x60]\n        jmp      SHORT G_M9959_IG27\n \t\t\t\t\t\t;; size=14 bbWeight=8 PerfScore 42.00\n G_M9959_IG25:\n        mov      rdi, gword ptr [rbp-0x68]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[uint]:get_Count():int:this\n        cmp      eax, r14d\n        jbe      SHORT G_M9959_IG26\n        mov      rdi, gword ptr [rbp-0x68]\n        mov      esi, r14d\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        call     [r11]System.Collections.Generic.IList\u00601[uint]:get_Item(int):uint:this\n        mov      esi, eax\n        jmp      SHORT G_M9959_IG27\n \t\t\t\t\t\t;; size=46 bbWeight=8 PerfScore 98.00\n G_M9959_IG26:\n        xor      esi, esi\n \t\t\t\t\t\t;; size=2 bbWeight=8 PerfScore 2.00\n G_M9959_IG27:\n        lea      rdx, [rbp-0x78]\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.MD.TablesStream:TryReadMethodSemanticsRow(uint,byref):bool:this\n        test     eax, eax\n        je       G_M9959_IG30\n \t\t\t\t\t\t;; size=29 bbWeight=16 PerfScore 116.00\n G_M9959_IG28:\n-       mov      rdi, gword ptr [rbx\u002B0xA0]\n\u002B       mov      rsi, gword ptr [rbx\u002B0xA0]\n        mov      r13d, dword ptr [rbp-0x74]\n-       mov      r12, gword ptr [rdi\u002B0x170]\n\u002B       mov      r12, gword ptr [rsi\u002B0x170]\n        dec      r13d\n        cmp      r13d, dword ptr [r12\u002B0x18]\n        jae      G_M9959_IG30\n-       mov      rdi, gword ptr [r12\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M9959_IG34\n-       mov      edx, r13d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      eax, r13d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M9959_IG29\n-       mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodDefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M9959_IG33\n\u002B       mov      edi, r13d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x88], rax\n        mov      rcx, gword ptr [r12\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x88]\n-       test     rdi, rdi\n-       je       SHORT G_M9959_IG33\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=131 bbWeight=8 PerfScore 262.00\n\u002B\t\t\t\t\t\t;; size=119 bbWeight=8 PerfScore 256.00\n G_M9959_IG29:\n        mov      rax, gword ptr [r12\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M9959_IG34\n\u002B       jae      SHORT G_M9959_IG33\n        mov      ecx, r13d\n        mov      rcx, gword ptr [rax\u002B8*rcx\u002B0x10]\n        test     rcx, rcx\n        je       SHORT G_M9959_IG30\n        add      rcx, 136\n        movzx    rdx, word  ptr [rbp-0x78]\n        mov      rax, 0xD1FFAB1E      ; data for dnlib.DotNet.MethodDef:SEMATTRS_INITD\n        or       edx, dword ptr [rax]\n        xor      eax, eax\n        lock     \n        cmpxchg  dword ptr [rcx], edx\n \t\t\t\t\t\t;; size=53 bbWeight=8 PerfScore 242.00\n G_M9959_IG30:\n        inc      r14d\n        cmp      r14d, dword ptr [rbp-0x5C]\n        jl       G_M9959_IG23\n \t\t\t\t\t\t;; size=13 bbWeight=16 PerfScore 36.00\n G_M9959_IG31:\n        inc      r15d\n        cmp      r15d, dword ptr [rbp-0x2C]\n        jl       G_M9959_IG18\n \t\t\t\t\t\t;; size=13 bbWeight=8 PerfScore 18.00\n G_M9959_IG32:\n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M9959_IG33:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M9959_IG34:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1153, prolog size 47, PerfScore 2341.83, instruction count 283, allocated bytes for code 1153 (MethodHash=6bf5d918) for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n\u002B; Total bytes of code 1112, prolog size 47, PerfScore 2329.83, instruction count 276, allocated bytes for code 1112 (MethodHash=6bf5d918) for method dnlib.DotNet.TypeDefMD:InitializeMethodSemanticsAttributes():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1153,"DiffBytes":1112},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M57952_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M57952_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:ThrowIfDisposed():this\n        jmp      G_M57952_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M57952_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M57952_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M57952_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M57952_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M57952_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M57952_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M57952_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M57952_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M57952_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57952_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M57952_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=49151d9f) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=49151d9f) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M21025_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M21025_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x210]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M21025_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M21025_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M21025_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M21025_IG09\n\u002B       jae      SHORT G_M21025_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M21025_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M21025_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M21025_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M21025_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M21025_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M21025_IG09\n\u002B       jae      SHORT G_M21025_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M21025_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M21025_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M21025_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M21025_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M21025_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M21025_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M21025_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=8785adde) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=8785adde) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,byte]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M8777_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M8777_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:ThrowIfDisposed():this\n        jmp      G_M8777_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M8777_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M8777_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M8777_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M8777_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M8777_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,byte]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,byte]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M8777_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M8777_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M8777_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M8777_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M8777_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M8777_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=a359ddb6) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=a359ddb6) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[byte]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.GenericParamConstraintMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamConstraintMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M41537_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M41537_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x210]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M41537_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M41537_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M41537_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M41537_IG09\n\u002B       jae      SHORT G_M41537_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M41537_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x10]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M41537_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M41537_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.GenericParamConstraintMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M41537_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M41537_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M41537_IG09\n\u002B       jae      SHORT G_M41537_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M41537_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M41537_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M41537_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M41537_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M41537_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M41537_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M41537_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=c1515dbe) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=c1515dbe) for method dnlib.DotNet.ModuleDefMD:ResolveGenericParamConstraint(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.GenericParamConstraint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[double]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,double]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M32246_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M32246_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:ThrowIfDisposed():this\n        jmp      G_M32246_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M32246_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M32246_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M32246_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M32246_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M32246_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,double]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,double]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M32246_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M32246_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M32246_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M32246_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M32246_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M32246_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=4f438209) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=4f438209) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[double]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M6401_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M6401_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x180]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M6401_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M6401_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M6401_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M6401_IG09\n\u002B       jae      SHORT G_M6401_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M6401_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M6401_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M6401_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M6401_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M6401_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M6401_IG09\n\u002B       jae      SHORT G_M6401_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M6401_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M6401_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M6401_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M6401_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M6401_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M6401_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M6401_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=3206e6fe) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=3206e6fe) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[int]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,int]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M21232_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M21232_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:ThrowIfDisposed():this\n        jmp      G_M21232_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M21232_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M21232_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M21232_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M21232_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M21232_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,int]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,int]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M21232_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M21232_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M21232_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M21232_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M21232_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M21232_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=fe0cad0f) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=fe0cad0f) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[int]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.InterfaceImplMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.InterfaceImplMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M45793_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M45793_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x180]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M45793_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M45793_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M45793_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M45793_IG09\n\u002B       jae      SHORT G_M45793_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M45793_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.IType):bool\n        test     eax, eax\n        jne      SHORT G_M45793_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M45793_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.InterfaceImplMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M45793_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M45793_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M45793_IG09\n\u002B       jae      SHORT G_M45793_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M45793_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M45793_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M45793_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M45793_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M45793_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M45793_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M45793_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=8a5f4d1e) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=8a5f4d1e) for method dnlib.DotNet.ModuleDefMD:ResolveInterfaceImpl(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.InterfaceImpl:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[long]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,long]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M50249_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M50249_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:ThrowIfDisposed():this\n        jmp      G_M50249_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M50249_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M50249_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M50249_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M50249_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M50249_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,long]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,long]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M50249_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M50249_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M50249_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M50249_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M50249_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M50249_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=60873bb6) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=60873bb6) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[long]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)","Category":"improvement","Description":"206 -\u003E 166 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V05 tmp2         [V05,T09] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T08] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V16 tmp13        [V16,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V17 tmp14        [V17,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V18 rat0         [V18,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M34817_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M34817_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x188]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M34817_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M34817_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M34817_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M34817_IG09\n\u002B       jae      SHORT G_M34817_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M34817_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M34817_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M34817_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M34817_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 16.00\n\u002B\t\t\t\t\t\t;; size=93 bbWeight=0.50 PerfScore 15.50\n G_M34817_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M34817_IG09\n\u002B       jae      SHORT G_M34817_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M34817_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M34817_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M34817_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M34817_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M34817_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M34817_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M34817_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 206, prolog size 12, PerfScore 36.12, instruction count 60, allocated bytes for code 206 (MethodHash=139a77fe) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n\u002B; Total bytes of code 166, prolog size 12, PerfScore 35.62, instruction count 54, allocated bytes for code 166 (MethodHash=139a77fe) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint):dnlib.DotNet.MemberRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":206,"DiffBytes":166},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[short]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,short]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r15         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M46769_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M46769_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:ThrowIfDisposed():this\n        jmp      G_M46769_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M46769_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        inc      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jg       G_M46769_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M46769_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M46769_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        dec      r15d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r14d\n        mov      dword ptr [rbx\u002B0x2C], r15d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M46769_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        inc      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,short]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,short]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jg       G_M46769_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M46769_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M46769_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M46769_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M46769_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M46769_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=46c4494e) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=46c4494e) for method ClosedXML.Excel.Slice\u00601\u002BEnumerator[short]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)","Category":"improvement","Description":"202 -\u003E 162 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T11] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V07 tmp4         [V07,T10] (  5,  2.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V10 tmp7         [V10    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V11 tmp8         [V11,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V12 tmp9         [V12,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V13 tmp10        [V13,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V15 rat0         [V15,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V13 tmp10        [V13,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M2273_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M2273_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x188]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M2273_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M2273_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M2273_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M2273_IG09\n\u002B       jae      SHORT G_M2273_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M2273_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M2273_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M2273_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M2273_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=112 bbWeight=0.50 PerfScore 15.75\n\u002B\t\t\t\t\t\t;; size=89 bbWeight=0.50 PerfScore 15.25\n G_M2273_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M2273_IG09\n\u002B       jae      SHORT G_M2273_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M2273_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M2273_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M2273_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M2273_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M2273_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M2273_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M2273_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 202, prolog size 12, PerfScore 35.88, instruction count 58, allocated bytes for code 202 (MethodHash=e608f71e) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n\u002B; Total bytes of code 162, prolog size 12, PerfScore 35.38, instruction count 52, allocated bytes for code 162 (MethodHash=e608f71e) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MemberRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":202,"DiffBytes":162},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M41341_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M41341_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:ThrowIfDisposed():this\n        jmp      G_M41341_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M41341_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M41341_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M41341_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M41341_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M41341_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Nullable\u00601[int],System.Nullable\u00601[int]]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M41341_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M41341_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M41341_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41341_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M41341_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M41341_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=0d725e82) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=0d725e82) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Nullable\u00601[int]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)","Category":"improvement","Description":"204 -\u003E 164 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,113 \u002B1,106 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V05 tmp2         [V05,T08] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T09] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V11 tmp8         [V11,T10] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T11] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V13 tmp10        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V17 tmp14        [V17,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V18 tmp15        [V18,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V19 rat0         [V19,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V17 tmp14        [V17,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V20 rat0         [V20,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M42721_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M42721_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1A8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M42721_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M42721_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M42721_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M42721_IG09\n\u002B       jae      SHORT G_M42721_IG08\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M42721_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M42721_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M42721_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M42721_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=114 bbWeight=0.50 PerfScore 15.88\n\u002B\t\t\t\t\t\t;; size=91 bbWeight=0.50 PerfScore 15.38\n G_M42721_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M42721_IG09\n\u002B       jae      SHORT G_M42721_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M42721_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M42721_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M42721_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M42721_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M42721_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M42721_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M42721_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 204, prolog size 12, PerfScore 36.00, instruction count 59, allocated bytes for code 204 (MethodHash=9e01591e) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n\u002B; Total bytes of code 164, prolog size 12, PerfScore 35.50, instruction count 53, allocated bytes for code 164 (MethodHash=9e01591e) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":204,"DiffBytes":164},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M1888_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M1888_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:ThrowIfDisposed():this\n        jmp      G_M1888_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M1888_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M1888_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M1888_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M1888_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M1888_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M1888_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M1888_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M1888_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M1888_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M1888_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M1888_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=7ea6f89f) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=7ea6f89f) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[System.Numerics.Vector\u00601[float]]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)","Category":"improvement","Description":"200 -\u003E 160 bytes (-40)","ExtraInfo":null,"Diff":"@@ -1,108 \u002B1,101 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V07 tmp4         [V07,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V10 tmp7         [V10,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;  V12 tmp9         [V12,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V13 tmp10        [V13,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V14 tmp11        [V14,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V15 tmp12        [V15,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V16 rat0         [V16,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V14 tmp11        [V14,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V15 tmp12        [V15,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V16 tmp13        [V16,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V17 rat0         [V17,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M3873_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M3873_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1A8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n-       jae      G_M3873_IG06\n-\t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n\u002B       jae      SHORT G_M3873_IG06\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.50\n G_M3873_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M3873_IG09\n\u002B       jae      SHORT G_M3873_IG08\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      SHORT G_M3873_IG04\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M3873_IG05\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M3873_IG08\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M3873_IG08\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=110 bbWeight=0.50 PerfScore 15.62\n\u002B\t\t\t\t\t\t;; size=87 bbWeight=0.50 PerfScore 15.12\n G_M3873_IG04:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M3873_IG09\n\u002B       jae      SHORT G_M3873_IG08\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M3873_IG07\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M3873_IG05:\n        mov      rax, r14\n        jmp      SHORT G_M3873_IG07\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M3873_IG06:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M3873_IG07:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M3873_IG08:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M3873_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 200, prolog size 12, PerfScore 35.75, instruction count 57, allocated bytes for code 200 (MethodHash=194ff0de) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n\u002B; Total bytes of code 160, prolog size 12, PerfScore 35.25, instruction count 51, allocated bytes for code 160 (MethodHash=194ff0de) for method dnlib.DotNet.ModuleDefMD:ResolveStandAloneSig(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.StandAloneSig:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":200,"DiffBytes":160},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,byte]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M26441_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M26441_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:ThrowIfDisposed():this\n        jmp      G_M26441_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M26441_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M26441_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M26441_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M26441_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M26441_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,byte]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[byte,byte]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M26441_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M26441_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M26441_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M26441_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M26441_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M26441_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=812098b6) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=812098b6) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[byte]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)","Category":"improvement","Description":"521 -\u003E 483 bytes (-38)","ExtraInfo":null,"Diff":"@@ -1,226 \u002B1,213 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 11 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T15] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V15 tmp12        [V15,T00] (  9, 36   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V17 tmp14        [V17,T07] (  7, 14   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V19 tmp16        [V19,T08] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T13] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;  V20 tmp17        [V20    ] (  8, 16   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V21 tmp18        [V21,T16] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V22 tmp19        [V22,T13] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V21 tmp18        [V21,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V22 tmp19        [V22,T14] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V23 tmp20        [V23    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V25 tmp22        [V25,T14] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V25 tmp22        [V25,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V28 tmp25        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp26        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V30 tmp27        [V30    ] (  8, 16   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V20.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V31 tmp28        [V31,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V31 tmp28        [V31,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V32 tmp29        [V32,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V33 tmp30        [V33,T09] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V34 tmp31        [V34,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V35 rat0         [V35,T11] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V33 tmp30        [V33,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V34 tmp31        [V34,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V35 tmp32        [V35,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V36 rat0         [V36,T11] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M36886_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=28 bbWeight=1 PerfScore 8.25\n G_M36886_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rdi\u002B0x30], 512\n-       je       G_M36886_IG17\n\u002B       je       G_M36886_IG15\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.00\n G_M36886_IG03:\n        cmp      byte  ptr [rbx\u002B0x246], 0\n-       jne      G_M36886_IG17\n\u002B       jne      G_M36886_IG15\n        mov      byte  ptr [rbx\u002B0x246], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0x128]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n-       je       G_M36886_IG16\n\u002B       je       G_M36886_IG14\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M36886_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xF0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n-       jae      G_M36886_IG19\n\u002B       jae      G_M36886_IG17\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n        mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n        test     esi, esi\n-       jne      G_M36886_IG15\n\u002B       jne      G_M36886_IG13\n \t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n G_M36886_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13, gword ptr [rsi\u002B0x1C8]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n-       jae      G_M36886_IG13\n\u002B       jae      G_M36886_IG11\n        mov      rsi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n-       jne      G_M36886_IG11\n\u002B       jne      G_M36886_IG09\n        mov      rax, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n        mov      gword ptr [rbp-0x38], rsi\n        cmp      byte  ptr [rsi], sil\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n \t\t\t\t\t\t;; size=92 bbWeight=2 PerfScore 56.50\n G_M36886_IG06:\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n-       jl       SHORT G_M36886_IG08\n-\t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.00\n-G_M36886_IG07:\n-       jmp      SHORT G_M36886_IG10\n-\t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 2.00\n-G_M36886_IG08:\n\u002B       jge      SHORT G_M36886_IG08\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [rsi\u002B0x34], 0\n-       jne      SHORT G_M36886_IG09\n\u002B       jne      SHORT G_M36886_IG07\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        mov      rsi, gword ptr [rbp-0x38]\n-\t\t\t\t\t\t;; size=33 bbWeight=2 PerfScore 19.50\n-G_M36886_IG09:\n\u002B\t\t\t\t\t\t;; size=42 bbWeight=2 PerfScore 25.50\n\u002BG_M36886_IG07:\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n-       jne      SHORT G_M36886_IG12\n-\t\t\t\t\t\t;; size=32 bbWeight=2 PerfScore 18.50\n-G_M36886_IG10:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M36886_IG20\n-       mov      rdi, rax\n        mov      rsi, gword ptr [rbp-0x38]\n-       xor      rdx, rdx\n-       call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=52 bbWeight=2 PerfScore 19.00\n-G_M36886_IG11:\n\u002B       jne      SHORT G_M36886_IG10\n\u002B\t\t\t\t\t\t;; size=36 bbWeight=2 PerfScore 20.50\n\u002BG_M36886_IG08:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M36886_IG21\n\u002B       jae      G_M36886_IG18\n\u002B       mov      edx, r12d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rdx\u002B0x10]\n\u002B       xor      rdx, rdx\n\u002B       call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n\u002B\t\t\t\t\t\t;; size=29 bbWeight=2 PerfScore 15.00\n\u002BG_M36886_IG09:\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M36886_IG18\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n-       jmp      SHORT G_M36886_IG14\n\u002B       jmp      SHORT G_M36886_IG12\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n-G_M36886_IG12:\n-       mov      rsi, gword ptr [rbp-0x38]\n-       jmp      SHORT G_M36886_IG14\n-\t\t\t\t\t\t;; size=6 bbWeight=2 PerfScore 6.00\n-G_M36886_IG13:\n\u002BG_M36886_IG10:\n\u002B       jmp      SHORT G_M36886_IG12\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 4.00\n\u002BG_M36886_IG11:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n-G_M36886_IG14:\n\u002BG_M36886_IG12:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n-G_M36886_IG15:\n\u002BG_M36886_IG13:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M36886_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n-G_M36886_IG16:\n\u002BG_M36886_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xF0]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.62\n-G_M36886_IG17:\n\u002BG_M36886_IG15:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n-G_M36886_IG18:\n\u002BG_M36886_IG16:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n-G_M36886_IG19:\n\u002BG_M36886_IG17:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M36886_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M36886_IG21:\n\u002BG_M36886_IG18:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 521, prolog size 28, PerfScore 263.62, instruction count 132, allocated bytes for code 521 (MethodHash=613b6fe9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n\u002B; Total bytes of code 483, prolog size 28, PerfScore 257.62, instruction count 124, allocated bytes for code 483 (MethodHash=613b6fe9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeSpecTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":521,"DiffBytes":483},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,double]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M758_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M758_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:ThrowIfDisposed():this\n        jmp      G_M758_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M758_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M758_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M758_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M758_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M758_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,double]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[double,double]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M758_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M758_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M758_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M758_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M758_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M758_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=b9a4fd09) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=b9a4fd09) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[double]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)","Category":"improvement","Description":"519 -\u003E 482 bytes (-37)","ExtraInfo":null,"Diff":"@@ -1,228 \u002B1,221 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T01] (  7,  4.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n ;  V04 loc1         [V04,T09] (  6,  3   )     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T04] (  7,  3.50)     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMemberRefParent\u003E\n ;  V06 loc3         [V06,T06] (  7,  3.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T15] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T16] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T16] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T17] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T14] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  rbx         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T02] (  6,  6   )     ref  -\u003E  r13         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V13 tmp6         [V13,T05] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp8         [V15,T10] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V16 tmp9         [V16    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V17 tmp10        [V17,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V18 tmp11        [V18,T17] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V17 tmp10        [V17,T19] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp11        [V18,T18] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V19 tmp12        [V19    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V20 tmp13        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V21 tmp14        [V21,T07] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V22 tmp15        [V22,T08] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp16        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V16.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp17        [V24,T11] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V25 tmp18        [V25,T12] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T13] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp17        [V24,T10] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp18        [V25,T11] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp19        [V26,T12] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T13] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M56840_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 8.75\n G_M56840_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M56840_IG18\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M56840_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 2\n        jle      G_M56840_IG12\n        cmp      r13d, 6\n        jne      SHORT G_M56840_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M56840_IG16\n \t\t\t\t\t\t;; size=63 bbWeight=0.50 PerfScore 7.50\n G_M56840_IG04:\n        cmp      r13d, 26\n        jne      SHORT G_M56840_IG05\n        mov      rdi, gword ptr [rbx\u002B0x1C0]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M56840_IG16\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 5.38\n G_M56840_IG05:\n        cmp      r13d, 27\n        jne      G_M56840_IG14\n        mov      r13, gword ptr [rbx\u002B0x1C8]\n        lea      ebx, [rsi-0x01]\n        cmp      ebx, dword ptr [r13\u002B0x18]\n        jae      G_M56840_IG10\n        mov      rdx, gword ptr [r13\u002B0x08]\n        cmp      ebx, dword ptr [rdx\u002B0x08]\n-       jae      G_M56840_IG21\n\u002B       jae      G_M56840_IG20\n        mov      ecx, ebx\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      G_M56840_IG08\n        mov      rax, gword ptr [r13\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [rbx\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M56840_IG07\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M56840_IG06\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=124 bbWeight=0.50 PerfScore 18.62\n G_M56840_IG06:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        jne      SHORT G_M56840_IG09\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M56840_IG07:\n        mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M56840_IG20\n        mov      esi, ebx\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M56840_IG20\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=50 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=30 bbWeight=0.50 PerfScore 3.88\n G_M56840_IG08:\n-       mov      rax, gword ptr [r13\u002B0x08]\n-       cmp      ebx, dword ptr [rax\u002B0x08]\n-       jae      G_M56840_IG21\n-       mov      ecx, ebx\n-       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r13\u002B0x08]\n\u002B       cmp      ebx, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M56840_IG20\n\u002B       mov      esi, ebx\n\u002B       mov      rax, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M56840_IG11\n-\t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 4.62\n\u002B\t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 4.62\n G_M56840_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M56840_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M56840_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG11:\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M56840_IG12:\n        cmp      r13d, 1\n        jne      SHORT G_M56840_IG13\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=31 bbWeight=0.50 PerfScore 5.38\n G_M56840_IG13:\n        cmp      r13d, 2\n        je       SHORT G_M56840_IG15\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M56840_IG14:\n        xor      rax, rax\n        jmp      SHORT G_M56840_IG16\n \t\t\t\t\t\t;; size=4 bbWeight=0.50 PerfScore 1.12\n G_M56840_IG15:\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.75\n G_M56840_IG16:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG17:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M56840_IG18:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M56840_IG19:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M56840_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M56840_IG21:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 519, prolog size 27, PerfScore 78.25, instruction count 143, allocated bytes for code 519 (MethodHash=cdc921f7) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n\u002B; Total bytes of code 482, prolog size 27, PerfScore 77.75, instruction count 137, allocated bytes for code 482 (MethodHash=cdc921f7) for method dnlib.DotNet.ModuleDefMD:ResolveMemberRefParent(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMemberRefParent:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":519,"DiffBytes":482},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,int]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M63472_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M63472_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:ThrowIfDisposed():this\n        jmp      G_M63472_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M63472_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M63472_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M63472_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M63472_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M63472_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,int]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[int,int]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M63472_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M63472_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M63472_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M63472_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M63472_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M63472_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=9068080f) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=9068080f) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[int]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,050 -\u003E 1,017 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,402 \u002B1,395 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 18 single block inlinees; 10 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 19, 10.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 14,  8.50)     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.MemberRef\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T25] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T19] (  3,  3   )     int  -\u003E  r14         \u0022impAppendStmt\u0022\n ;* V08 tmp3         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.StringsHeap\u003E\n ;  V09 tmp4         [V09,T20] (  3,  3   )     int  -\u003E  r12         \u0022impAppendStmt\u0022\n ;  V10 tmp5         [V10,T27] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n ;  V11 tmp6         [V11,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V12 tmp7         [V12    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V13 tmp8         [V13    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V14 tmp9         [V14,T29] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V15 tmp10        [V15,T22] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V16 tmp11        [V16    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V17 tmp12        [V17,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n-;  V18 tmp13        [V18,T39] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp13        [V18,T40] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V19 tmp14        [V19,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V20 tmp15        [V20,T37] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V21 tmp16        [V21,T35] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V20 tmp15        [V20,T38] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V21 tmp16        [V21,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V22 tmp17        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V23 tmp18        [V23,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V24 tmp19        [V24,T24] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V25 tmp20        [V25,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp19        [V24,T24] (  4,  2   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V25 tmp20        [V25,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V26 tmp21        [V26    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V27 tmp22        [V27,T23] (  5,  2.50)     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V28 tmp23        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V29 tmp24        [V29,T13] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V29 tmp24        [V29,T31] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V30 tmp25        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V31 tmp26        [V31,T21] (  3,  3   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n-;  V32 tmp27        [V32,T36] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V32 tmp27        [V32,T37] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V33 tmp28        [V33    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;  V34 tmp29        [V34,T11] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V35 tmp30        [V35,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n-;  V36 tmp31        [V36,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n\u002B;  V36 tmp31        [V36,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MemberRef]\u003E\n ;* V37 tmp32        [V37    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V38 tmp33        [V38,T14] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V38 tmp33        [V38,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V39 tmp34        [V39    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V40 tmp35        [V40,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V41 tmp36        [V41    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V42 tmp37        [V42    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V43 tmp38        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V44 tmp39        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V45 tmp40        [V45    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V46 tmp41        [V46    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V47 tmp42        [V47,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V48 tmp43        [V48,T40] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V48 tmp43        [V48,T41] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V49 tmp44        [V49,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V50 tmp45        [V50,T38] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V50 tmp45        [V50,T39] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V51 tmp46        [V51,T26] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V52 tmp47        [V52    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V53 tmp48        [V53    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V54 tmp49        [V54    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V55 tmp50        [V55    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Signature (fldOffset=0x8)\u0022 P-INDEP\n ;* V56 tmp51        [V56    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V22.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V57 tmp52        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V22.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V58 tmp53        [V58    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V26.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp54        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V26.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V60 tmp55        [V60    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V61 tmp56        [V61    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V62 tmp57        [V62    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V33.Signature (fldOffset=0x8)\u0022 P-INDEP\n-;  V63 tmp58        [V63,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V64 tmp59        [V64,T16] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V65 tmp60        [V65,T17] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V66 tmp61        [V66,T10] (  4,  4   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n-;  V67 tmp62        [V67,T32] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V68 tmp63        [V68,T33] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V69 tmp64        [V69,T34] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V70 cse0         [V70,T42] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V71 cse1         [V71,T41] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V72 rat0         [V72,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V63 tmp58        [V63,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V64 tmp59        [V64,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V65 tmp60        [V65,T16] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V66 tmp61        [V66,T17] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V67 tmp62        [V67,T10] (  4,  4   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n\u002B;  V68 tmp63        [V68,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V69 tmp64        [V69,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V70 tmp65        [V70,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V71 cse0         [V71,T43] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V72 cse1         [V72,T42] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V73 rat0         [V73,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M14678_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      qword ptr [rbp-0x38], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 9.75\n G_M14678_IG02:\n        test     r15, r15\n        je       G_M14678_IG21\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M14678_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x208]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M14678_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M14678_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M14678_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M14678_IG05:\n        test     esi, esi\n        jne      G_M14678_IG19\n        test     r14b, r14b\n        je       SHORT G_M14678_IG06\n        mov      r13d, 1\n        jmp      G_M14678_IG12\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M14678_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rsi\u002B0x30], 32\n        jne      SHORT G_M14678_IG07\n        xor      r13d, r13d\n        jmp      G_M14678_IG12\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 3.62\n G_M14678_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x38]\n        mov      r14, gword ptr [rsi\u002B0x188]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M14678_IG10\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M14678_IG25\n\u002B       jae      G_M14678_IG24\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M14678_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        cmp      byte  ptr [r12], r12b\n        mov      rdi, r12\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M14678_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M14678_IG24\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M14678_IG23\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=152 bbWeight=0.50 PerfScore 20.62\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=0.50 PerfScore 20.12\n G_M14678_IG08:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M14678_IG25\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M14678_IG24\n\u002B       mov      edi, r13d\n\u002B       mov      rsi, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M14678_IG11\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M14678_IG09:\n-       mov      r14, r12\n\u002B       mov      rsi, r12\n        jmp      SHORT G_M14678_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M14678_IG10:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rsi, rsi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M14678_IG11:\n-       cmp      r14, r15\n\u002B       cmp      rsi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M14678_IG12:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddMemberRefParent(dnlib.DotNet.IMemberRefParent):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddMemberRefParent(dnlib.DotNet.IMemberRefParent):uint:this\n        mov      r14d, eax\n        mov      rdi, gword ptr [rbx\u002B0x60]\n        mov      rsi, gword ptr [r15\u002B0x18]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.StringsHeap:Add(dnlib.DotNet.UTF8String):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.StringsHeap:Add(dnlib.DotNet.UTF8String):uint:this\n        mov      r12d, eax\n        mov      rsi, gword ptr [r15\u002B0x20]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M14678_IG13\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x68]\n        mov      edx, eax\n        mov      esi, r12d\n        shl      rsi, 32\n        mov      eax, r14d\n        or       rsi, rax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:Add(dnlib.DotNet.MD.RawMemberRefRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:Add(dnlib.DotNet.MD.RawMemberRefRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M14678_IG14\n \t\t\t\t\t\t;; size=113 bbWeight=0.50 PerfScore 17.50\n G_M14678_IG13:\n        mov      edi, dword ptr [r15\u002B0x38]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x68]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M14678_IG24\n\u002B       jae      G_M14678_IG23\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M14678_IG25\n\u002B       jae      G_M14678_IG24\n        lea      rdi, [rdi\u002B2*rdi]\n        lea      rdi, bword ptr [rdx\u002B4*rdi\u002B0x10]\n        mov      dword ptr [rdi], r14d\n        mov      dword ptr [rdi\u002B0x04], r12d\n        mov      dword ptr [rdi\u002B0x08], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=65 bbWeight=0.50 PerfScore 12.00\n G_M14678_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x208]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 10\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M14678_IG19\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M14678_IG19\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M14678_IG17\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x3C], eax\n        test     eax, eax\n        jle      SHORT G_M14678_IG15\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x3C]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M14678_IG15:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M14678_IG16:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M14678_IG17:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 10\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M14678_IG18\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M14678_IG19\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M14678_IG18:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M14678_IG19:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M14678_IG20:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M14678_IG21:\n        mov      rdi, 0xD1FFAB1E      ; \u0027MemberRef is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M14678_IG22:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M14678_IG23:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M14678_IG24:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M14678_IG25:\n\u002BG_M14678_IG24:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1050, prolog size 29, PerfScore 142.00, instruction count 263, allocated bytes for code 1050 (MethodHash=e06bc6a9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1017, prolog size 29, PerfScore 141.50, instruction count 257, allocated bytes for code 1017 (MethodHash=e06bc6a9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1050,"DiffBytes":1017},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,long]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M2377_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M2377_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:ThrowIfDisposed():this\n        jmp      G_M2377_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M2377_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M2377_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M2377_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M2377_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M2377_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,long]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[long,long]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M2377_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M2377_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M2377_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M2377_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M2377_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M2377_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=3e4df6b6) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=3e4df6b6) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[long]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)","Category":"improvement","Description":"979 -\u003E 946 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,375 \u002B1,368 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 17 single block inlinees; 11 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 17,  9.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 12,  7.50)     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.StandAloneSig\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T21] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T23] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n ;  V08 tmp3         [V08,T24] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V09 tmp4         [V09    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V10 tmp5         [V10    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V11 tmp6         [V11,T25] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V12 tmp7         [V12,T18] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V14 tmp9         [V14,T26] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n-;  V15 tmp10        [V15,T35] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp10        [V15,T36] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V16 tmp11        [V16,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V17 tmp12        [V17,T33] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V18 tmp13        [V18,T31] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V17 tmp12        [V17,T34] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V18 tmp13        [V18,T32] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V19 tmp14        [V19    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V20 tmp15        [V20,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V21 tmp16        [V21,T19] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V22 tmp17        [V22,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V21 tmp16        [V21,T19] (  4,  2   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V22 tmp17        [V22,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V23 tmp18        [V23    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V24 tmp19        [V24,T20] (  4,  2   )     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V25 tmp20        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V26 tmp21        [V26,T12] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V27 tmp22        [V27,T39] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V26 tmp21        [V26,T27] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V27 tmp22        [V27,T40] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V28 tmp23        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V29 tmp24        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V30 tmp25        [V30,T32] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V30 tmp25        [V30,T33] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V31 tmp26        [V31    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;  V32 tmp27        [V32,T10] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V33 tmp28        [V33,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n-;  V34 tmp29        [V34,T27] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n\u002B;  V34 tmp29        [V34,T28] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n ;* V35 tmp30        [V35    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V36 tmp31        [V36,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V36 tmp31        [V36,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V37 tmp32        [V37    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V38 tmp33        [V38,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V39 tmp34        [V39    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V40 tmp35        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V41 tmp36        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V42 tmp37        [V42    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V43 tmp38        [V43    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V44 tmp39        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V45 tmp40        [V45,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V46 tmp41        [V46,T36] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V46 tmp41        [V46,T37] (  3,  1.50)     int  -\u003E  [rbp-0x3C]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V47 tmp42        [V47,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V48 tmp43        [V48,T34] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V48 tmp43        [V48,T35] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V49 tmp44        [V49,T22] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V50 tmp45        [V50    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n-;  V51 tmp46        [V51,T37] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V51 tmp46        [V51,T38] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V52 tmp47        [V52    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V19.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V53 tmp48        [V53    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V19.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V54 tmp49        [V54    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V23.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V55 tmp50        [V55    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V23.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V56 tmp51        [V56    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V31.Signature (fldOffset=0x0)\u0022 P-INDEP\n-;  V57 tmp52        [V57,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V58 tmp53        [V58,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V59 tmp54        [V59,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V60 tmp55        [V60,T28] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V61 tmp56        [V61,T29] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V62 tmp57        [V62,T30] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V63 cse0         [V63,T40] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V64 cse1         [V64,T38] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V65 rat0         [V65,T17] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V57 tmp52        [V57,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V58 tmp53        [V58,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V59 tmp54        [V59,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V60 tmp55        [V60,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V61 tmp56        [V61,T29] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V62 tmp57        [V62,T30] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V63 tmp58        [V63,T31] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V64 cse0         [V64,T41] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V65 cse1         [V65,T39] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V66 rat0         [V66,T17] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M38198_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      qword ptr [rbp-0x38], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=38 bbWeight=1 PerfScore 9.75\n G_M38198_IG02:\n        test     r15, r15\n        je       G_M38198_IG21\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M38198_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M38198_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M38198_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M38198_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M38198_IG05:\n        test     esi, esi\n        jne      G_M38198_IG19\n        test     r14b, r14b\n        je       SHORT G_M38198_IG06\n        mov      r13d, 1\n        jmp      G_M38198_IG12\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M38198_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rsi\u002B0x30], 64\n        jne      SHORT G_M38198_IG07\n        xor      r13d, r13d\n        jmp      G_M38198_IG12\n \t\t\t\t\t\t;; size=18 bbWeight=0.50 PerfScore 3.62\n G_M38198_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x20]\n        mov      r14, gword ptr [rsi\u002B0x1A8]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M38198_IG10\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M38198_IG25\n\u002B       jae      G_M38198_IG24\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M38198_IG08\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M38198_IG09\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M38198_IG24\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M38198_IG23\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=150 bbWeight=0.50 PerfScore 20.50\n\u002B\t\t\t\t\t\t;; size=131 bbWeight=0.50 PerfScore 20.00\n G_M38198_IG08:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M38198_IG25\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M38198_IG24\n\u002B       mov      edi, r13d\n\u002B       mov      rsi, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M38198_IG11\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M38198_IG09:\n-       mov      r14, r12\n\u002B       mov      rsi, r12\n        jmp      SHORT G_M38198_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M38198_IG10:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rsi, rsi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M38198_IG11:\n-       cmp      r14, r15\n\u002B       cmp      rsi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M38198_IG12:\n        mov      rsi, gword ptr [r15\u002B0x08]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M38198_IG13\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xA0]\n        mov      esi, eax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:Add(dnlib.DotNet.MD.RawStandAloneSigRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:Add(dnlib.DotNet.MD.RawStandAloneSigRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M38198_IG14\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 9.25\n G_M38198_IG13:\n        mov      edi, dword ptr [r15\u002B0x20]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xA0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M38198_IG24\n\u002B       jae      G_M38198_IG23\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M38198_IG25\n\u002B       jae      G_M38198_IG24\n        mov      dword ptr [rdx\u002B4*rdi\u002B0x10], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 10.25\n G_M38198_IG14:\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 17\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M38198_IG19\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M38198_IG19\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M38198_IG17\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x3C], eax\n        test     eax, eax\n        jle      SHORT G_M38198_IG15\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x3C]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M38198_IG15:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M38198_IG16:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M38198_IG17:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 17\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M38198_IG18\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M38198_IG19\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M38198_IG18:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M38198_IG19:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M38198_IG20:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M38198_IG21:\n        mov      rdi, 0xD1FFAB1E      ; \u0027StandAloneSig is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M38198_IG22:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M38198_IG23:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M38198_IG24:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M38198_IG25:\n\u002BG_M38198_IG24:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 979, prolog size 29, PerfScore 131.88, instruction count 243, allocated bytes for code 979 (MethodHash=2b0f6ac9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 946, prolog size 29, PerfScore 131.38, instruction count 237, allocated bytes for code 946 (MethodHash=2b0f6ac9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":979,"DiffBytes":946},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)","Category":"improvement","Description":"257 -\u003E 242 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,125 \u002B1,125 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] ( 10, 35   )     ref  -\u003E  rbx         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]\u003E\n ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V02 tmp1         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,short]\u003E\n ;* V03 tmp2         [V03    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V04 tmp3         [V04,T01] (  5, 40   )   byref  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V05 tmp4         [V05,T12] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V05 tmp4         [V05,T13] (  3, 12   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V06 tmp5         [V06,T03] (  3, 24   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V07 tmp6         [V07,T07] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\u003E\n-;  V08 tmp7         [V08,T09] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n-;  V09 tmp8         [V09,T10] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V07 tmp6         [V07,T09] (  2, 16   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V08 tmp7         [V08,T10] (  2, 16   )     int  -\u003E  r14         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp8         [V09,T11] (  2, 16   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V10 tmp9         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp10        [V11,T00] (  5, 65   )   byref  -\u003E  r15         \u0022Inlining Arg\u0022\n-;  V12 tmp11        [V12,T06] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V12 tmp11        [V12,T08] (  3, 16.50)     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;* V13 tmp12        [V13    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V02._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V14 tmp13        [V14    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V02._startIdx (fldOffset=0x8)\u0022 P-INDEP\n-;  V15 tmp14        [V15,T14] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;  V15 tmp14        [V15,T15] (  2,  8   )     int  -\u003E  r14         \u0022field V02._idx (fldOffset=0xc)\u0022 P-INDEP\n ;  V16 tmp15        [V16,T04] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V17 tmp16        [V17,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n-;  V18 tmp17        [V18,T08] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V19 cse0         [V19,T13] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n-;  V20 cse1         [V20,T11] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n\u002B;  V17 tmp16        [V17,T06] (  3, 24   )     int  -\u003E  rsi         \u0022index expr\u0022\n\u002B;  V18 tmp17        [V18,T05] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 tmp18        [V19,T07] (  3, 24   )     int  -\u003E  rax         \u0022index expr\u0022\n\u002B;  V20 cse0         [V20,T14] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V21 cse1         [V21,T12] (  3, 12   )   byref  -\u003E  r15         \u0022CSE #02: moderate\u0022\n ;\n ; Lcl frame size = 8\n \n G_M39857_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 5.75\n G_M39857_IG02:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:ThrowIfDisposed():this\n        jmp      G_M39857_IG04\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 5.50\n G_M39857_IG03:\n        lea      r15, bword ptr [rbx\u002B0x30]\n        mov      r14, r15\n        mov      edx, dword ptr [r14\u002B0x0C]\n        dec      edx\n        mov      rdi, r14\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,System.__Canon]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r14\u002B0x08]\n        jl       G_M39857_IG07\n        mov      dword ptr [r14\u002B0x0C], eax\n        mov      rdi, gword ptr [r15]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        mov      esi, dword ptr [r15\u002B0x0C]\n-       mov      edx, esi\n-       sar      edx, 5\n-       cmp      edx, dword ptr [rdi\u002B0x08]\n\u002B       mov      eax, esi\n\u002B       sar      eax, 5\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n        jae      G_M39857_IG09\n-       shl      rdx, 4\n-       mov      rdi, gword ptr [rdi\u002Brdx\u002B0x10]\n\u002B       shl      rax, 4\n\u002B       mov      rdi, gword ptr [rdi\u002Brax\u002B0x10]\n        and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rsi, gword ptr [rax]\n\u002B       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M39857_IG09\n\u002B       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      r15d, dword ptr [rbx\u002B0x14]\n        dec      r15d\n        mov      r14d, dword ptr [rbx\u002B0x1C]\n        dec      r14d\n        inc      r14d\n        lea      rdi, bword ptr [rbx\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      dword ptr [rbx\u002B0x28], r15d\n        mov      dword ptr [rbx\u002B0x2C], r14d\n-\t\t\t\t\t\t;; size=148 bbWeight=4 PerfScore 148.00\n\u002B\t\t\t\t\t\t;; size=133 bbWeight=4 PerfScore 146.00\n G_M39857_IG04:\n        lea      r15, bword ptr [rbx\u002B0x20]\n        mov      esi, dword ptr [r15\u002B0x0C]\n        dec      esi\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,short]:GetPrevIndexAtOrBefore(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BReverseLutEnumerator[short,short]:GetPrevIndexAtOrBefore(int):int:this\n        cmp      eax, dword ptr [r15\u002B0x08]\n        jl       G_M39857_IG03\n \t\t\t\t\t\t;; size=35 bbWeight=8 PerfScore 74.00\n G_M39857_IG05:\n        mov      dword ptr [r15\u002B0x0C], eax\n        mov      eax, 1\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 0.62\n G_M39857_IG06:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M39857_IG07:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39857_IG08:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 1.62\n G_M39857_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 257, prolog size 12, PerfScore 237.25, instruction count 70, allocated bytes for code 257 (MethodHash=dd62644e) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)\n\u002B; Total bytes of code 242, prolog size 12, PerfScore 235.25, instruction count 69, allocated bytes for code 242 (MethodHash=dd62644e) for method ClosedXML.Excel.Slice\u00601\u002BReverseEnumerator[short]:MoveNext():bool:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":257,"DiffBytes":242},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,258 -\u003E 1,225 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,460 \u002B1,453 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 25 single block inlinees; 15 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 21, 11.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 19, 11   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.TypeSpec\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T07] (  9,  4.50)     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MDToken\u003E\n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V07 tmp1         [V07,T24] (  4,  2   )     int  -\u003E  r13        \n ;  V08 tmp2         [V08,T26] (  2,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.TypeSig\u003E\n ;  V09 tmp3         [V09,T27] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n ;  V10 tmp4         [V10,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V11 tmp5         [V11,T11] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp6         [V12,T12] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;  V13 tmp7         [V13    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V14 tmp8         [V14    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V15 tmp9         [V15,T29] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V16 tmp10        [V16,T21] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V17 tmp11        [V17    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V18 tmp12        [V18,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n-;  V19 tmp13        [V19,T41] (  3,  1.50)   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n\u002B;  V19 tmp13        [V19,T42] (  3,  1.50)   ubyte  -\u003E  rdi         \u0022Inline return value spill temp\u0022\n ;  V20 tmp14        [V20,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V21 tmp15        [V21,T39] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V21 tmp15        [V21,T40] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003Cdnlib.DotNet.MDToken\u003E\n ;* V23 tmp17        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V24 tmp18        [V24    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V25 tmp19        [V25    ] (  3,  3   )     ref  -\u003E  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V26 tmp20        [V26    ] (  3,  3   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V27 tmp21        [V27,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V28 tmp22        [V28,T22] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V29 tmp23        [V29    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n ;  V30 tmp24        [V30,T14] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V31 tmp25        [V31,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V31 tmp25        [V31,T37] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V32 tmp26        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V33 tmp27        [V33,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n-;  V34 tmp28        [V34,T23] (  4,  2   )     ref  -\u003E  r14         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V35 tmp29        [V35,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V34 tmp28        [V34,T23] (  4,  2   )     ref  -\u003E  rdi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n\u002B;  V35 tmp29        [V35,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V36 tmp30        [V36    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V37 tmp31        [V37,T10] (  7,  3.50)     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V38 tmp32        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V39 tmp33        [V39,T15] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V39 tmp33        [V39,T32] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V40 tmp34        [V40    ] (  7,  3.50)  struct ( 8) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V41 tmp35        [V41,T44] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V42 tmp36        [V42,T37] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V41 tmp35        [V41,T45] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V42 tmp36        [V42,T38] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V43 tmp37        [V43    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V44 tmp38        [V44    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V45 tmp39        [V45    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V46 tmp40        [V46,T38] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V46 tmp40        [V46,T39] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V47 tmp41        [V47    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawTypeSpecRow\u003E\n ;  V48 tmp42        [V48,T09] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V49 tmp43        [V49,T05] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawTypeSpecRow]\u003E\n-;  V50 tmp44        [V50,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n\u002B;  V50 tmp44        [V50,T33] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.TypeSpec]\u003E\n ;* V51 tmp45        [V51    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V52 tmp46        [V52,T16] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V52 tmp46        [V52,T15] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V53 tmp47        [V53    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V54 tmp48        [V54,T06] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V55 tmp49        [V55    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V56 tmp50        [V56    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V57 tmp51        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V58 tmp52        [V58    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V59 tmp53        [V59    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V60 tmp54        [V60    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V61 tmp55        [V61,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V62 tmp56        [V62,T40] (  3,  1.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V62 tmp56        [V62,T41] (  3,  1.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V63 tmp57        [V63,T25] (  4,  2   )     int  -\u003E  rbx         single-def \u0022Inline stloc first use temp\u0022\n ;* V64 tmp58        [V64    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n-;  V65 tmp59        [V65,T42] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V65 tmp59        [V65,T43] (  3,  1.50)     int  -\u003E  rax         single-def \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V66 tmp60        [V66    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V05.token (fldOffset=0x0)\u0022 P-INDEP\n-;  V67 tmp61        [V67,T45] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V22.token (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V67 tmp61        [V67,T46] (  2,  1   )     int  -\u003E  r15         single-def \u0022field V22.token (fldOffset=0x0)\u0022 P-INDEP\n ;* V68 tmp62        [V68    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V32.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V69 tmp63        [V69    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V32.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V70 tmp64        [V70    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V36.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V71 tmp65        [V71    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V36.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V72 tmp66        [V72    ] (  7,  3.50)     int  -\u003E  [rbp-0x50]  do-not-enreg[X] addr-exposed \u0022field V40.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n ;* V73 tmp67        [V73    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V47.Signature (fldOffset=0x0)\u0022 P-INDEP\n-;  V74 tmp68        [V74,T17] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V75 tmp69        [V75,T18] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V76 tmp70        [V76,T19] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V77 tmp71        [V77,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V78 tmp72        [V78,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V79 tmp73        [V79,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V80 cse0         [V80,T46] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n-;  V81 cse1         [V81,T43] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #04: conservative\u0022\n-;  V82 rat0         [V82,T20] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V74 tmp68        [V74,T16] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V75 tmp69        [V75,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V76 tmp70        [V76,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V77 tmp71        [V77,T19] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V78 tmp72        [V78,T34] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V79 tmp73        [V79,T35] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V80 tmp74        [V80,T36] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V81 cse0         [V81,T47] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #07: conservative\u0022\n\u002B;  V82 cse1         [V82,T44] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #04: conservative\u0022\n\u002B;  V83 rat0         [V83,T20] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M4950_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M4950_IG02:\n        test     r15, r15\n        je       G_M4950_IG25\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M4950_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M4950_IG04\n        xor      r13d, r13d\n        xor      edi, edi\n        jmp      SHORT G_M4950_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M4950_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      edi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M4950_IG05:\n        test     edi, edi\n        jne      G_M4950_IG22\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        xor      edx, edx\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        test     r14b, r14b\n        je       SHORT G_M4950_IG06\n        mov      r13d, 1\n        jmp      G_M4950_IG14\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 7.38\n G_M4950_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rsi\u002B0x30], 512\n        jne      SHORT G_M4950_IG07\n        xor      r13d, r13d\n        jmp      G_M4950_IG14\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 3.62\n G_M4950_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x30]\n        mov      r14, gword ptr [rsi\u002B0x1C8]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M4950_IG12\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M4950_IG29\n\u002B       jae      G_M4950_IG28\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M4950_IG10\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        cmp      byte  ptr [r12], r12b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x50], edi\n        cmp      dword ptr [rbp-0x50], 100\n        jge      SHORT G_M4950_IG09\n        mov      edi, dword ptr [rbp-0x50]\n        inc      edi\n        mov      dword ptr [rbp-0x50], edi\n        cmp      byte  ptr [r12\u002B0x34], 0\n        jne      SHORT G_M4950_IG08\n        mov      rdi, r12\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=128 bbWeight=0.50 PerfScore 19.88\n G_M4950_IG08:\n        mov      rsi, gword ptr [r12\u002B0x10]\n        lea      rdi, [rbp-0x50]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x50]\n        dec      edi\n        mov      dword ptr [rbp-0x50], edi\n        test     eax, eax\n        jne      SHORT G_M4950_IG11\n \t\t\t\t\t\t;; size=33 bbWeight=0.50 PerfScore 4.62\n G_M4950_IG09:\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M4950_IG28\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M4950_IG27\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M4950_IG10:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M4950_IG29\n-       mov      ecx, r13d\n-       mov      r14, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M4950_IG28\n\u002B       mov      eax, r13d\n\u002B       mov      rdi, gword ptr [rdi\u002B8*rax\u002B0x10]\n        jmp      SHORT G_M4950_IG13\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M4950_IG11:\n-       mov      r14, r12\n\u002B       mov      rdi, r12\n        jmp      SHORT G_M4950_IG13\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M4950_IG12:\n-       xor      r14, r14\n-\t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n\u002B       xor      rdi, rdi\n\u002B\t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M4950_IG13:\n-       cmp      r14, r15\n\u002B       cmp      rdi, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M4950_IG14:\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M4950_IG15\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=22 bbWeight=0.50 PerfScore 3.25\n G_M4950_IG15:\n        mov      r14, gword ptr [r15\u002B0x10]\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M4950_IG16\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 4.25\n G_M4950_IG16:\n        mov      rdx, gword ptr [r15\u002B0x18]\n        mov      rdi, rbx\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.TypeSig,byte[]):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.TypeSig,byte[]):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M4950_IG17\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xF0]\n        mov      esi, eax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:Add(dnlib.DotNet.MD.RawTypeSpecRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeSpecRow]:Add(dnlib.DotNet.MD.RawTypeSpecRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M4950_IG18\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.38\n G_M4950_IG17:\n        mov      edi, dword ptr [r15\u002B0x30]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xF0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M4950_IG28\n\u002B       jae      G_M4950_IG27\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M4950_IG29\n\u002B       jae      G_M4950_IG28\n        mov      dword ptr [rdx\u002B4*rdi\u002B0x10], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 10.25\n G_M4950_IG18:\n        mov      rdi, gword ptr [rbx\u002B0x228]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 1\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 27\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M4950_IG23\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M4950_IG23\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M4950_IG20\n        mov      rdi, gword ptr [r14\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:Clear():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:Clear():this\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=179 bbWeight=0.50 PerfScore 22.12\n G_M4950_IG19:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M4950_IG20:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 27\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      r15, gword ptr [rdi\u002B0x08]\n        mov      ebx, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [r15\u002B0x08]\n        cmp      esi, ebx\n        ja       SHORT G_M4950_IG21\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      G_M4950_IG23\n \t\t\t\t\t\t;; size=90 bbWeight=0.50 PerfScore 12.88\n G_M4950_IG21:\n        lea      esi, [rbx\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, ebx\n        lea      rdi, bword ptr [r15\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        jmp      G_M4950_IG23\n \t\t\t\t\t\t;; size=26 bbWeight=0.50 PerfScore 3.00\n G_M4950_IG22:\n        test     r13d, r13d\n        jne      G_M4950_IG23\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r14, rax\n        mov      r15d, dword ptr [r15\u002B0x30]\n        or       r15d, 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r14\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027TypeSpec 0x{0:X8} has an infinite TypeSig loop.\u0027\n        mov      gword ptr [rbp-0x40], rdi\n        mov      gword ptr [rbp-0x48], r14\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x48]\n        lea      rdx, [rbp-0x40]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x40]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n \t\t\t\t\t\t;; size=175 bbWeight=0.50 PerfScore 15.12\n G_M4950_IG23:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M4950_IG24:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M4950_IG25:\n        mov      rdi, 0xD1FFAB1E      ; \u0027TypeSpec is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M4950_IG26:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M4950_IG27:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4950_IG28:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M4950_IG29:\n\u002BG_M4950_IG28:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1258, prolog size 35, PerfScore 162.71, instruction count 303, allocated bytes for code 1258 (MethodHash=6c50eca9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1225, prolog size 35, PerfScore 162.21, instruction count 297, allocated bytes for code 1225 (MethodHash=6c50eca9) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeSpec(dnlib.DotNet.TypeSpec,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1258,"DiffBytes":1225},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M40279_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M40279_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M40279_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Nullable\u00601[int],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M40279_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M40279_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M40279_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Nullable\u00601[int],System.Nullable\u00601[int]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M40279_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M40279_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M40279_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M40279_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M40279_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M40279_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M40279_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=840d62a8) for method ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=840d62a8) for method ClosedXML.Excel.Slice\u00601[System.Nullable\u00601[int]]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)","Category":"improvement","Description":"336 -\u003E 303 bytes (-33)","ExtraInfo":null,"Diff":"@@ -1,152 \u002B1,146 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T03] (  9, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T11] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T12] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T02] (  5, 16.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n-;  V08 tmp5         [V08,T08] (  3,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n\u002B;  V08 tmp5         [V08,T07] (  3,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n ;  V09 tmp6         [V09,T00] (  8, 40   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T01] (  5, 28   )     ref  -\u003E  r13         class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList\u00601[dnlib.DotNet.TypeRefMD]\u003E\n-;  V11 tmp8         [V11,T04] (  3, 12   )   byref  -\u003E  [rbp-0x30]  spill-single-def \u0022non-inline candidate call\u0022\n\u002B;  V11 tmp8         [V11,T08] (  2,  8   )   byref  -\u003E  [rbp-0x30]  spill-single-def \u0022non-inline candidate call\u0022\n ;* V12 tmp9         [V12    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n ;  V13 tmp10        [V13,T09] (  2,  8   )     ref  -\u003E  rsi         class-hnd \u0022impAppendStmt\u0022 \u003CSystem.__Canon\u003E\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeRefMD\u003E\n-;  V15 tmp12        [V15,T12] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V16 tmp13        [V16,T05] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V17 tmp14        [V17,T06] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V18 cse0         [V18,T10] (  3,  6   )     ref  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n-;  V19 rat0         [V19,T07] (  3, 12   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n\u002B;  V15 tmp12        [V15,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V16 tmp13        [V16,T04] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V17 tmp14        [V17,T10] (  2,  8   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V18 tmp15        [V18,T05] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V19 cse0         [V19,T11] (  3,  6   )     ref  -\u003E  rsi         \u0022CSE #01: moderate\u0022\n\u002B;  V20 cse1         [V20,T13] (  2,  4   )     int  -\u003E  rax         \u0022CSE #02: moderate\u0022\n\u002B;  V21 rat0         [V21,T06] (  3, 12   )     ref  -\u003E  rcx         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M40258_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x30]\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n G_M40258_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 1\n        je       G_M40258_IG11\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M40258_IG03:\n        cmp      byte  ptr [rbx\u002B0x1D7], 0\n        jne      G_M40258_IG11\n        mov      byte  ptr [rbx\u002B0x1D7], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n-       mov      rdi, gword ptr [rax\u002B0x58]\n-       mov      r15d, dword ptr [rdi\u002B0x58]\n\u002B       mov      rsi, gword ptr [rax\u002B0x58]\n\u002B       mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M40258_IG09\n \t\t\t\t\t\t;; size=67 bbWeight=0.50 PerfScore 10.25\n G_M40258_IG04:\n-       mov      rdi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rdi\u002B0x158]\n\u002B       mov      rsi, gword ptr [rbx\u002B0x1D8]\n\u002B       mov      r13, gword ptr [rsi\u002B0x158]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n        jae      SHORT G_M40258_IG07\n \t\t\t\t\t\t;; size=24 bbWeight=4 PerfScore 30.00\n G_M40258_IG05:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      rsi, rdi\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M40258_IG13\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r13\u002B0x08]\n\u002B       mov      rdi, rsi\n\u002B       mov      eax, dword ptr [rdi\u002B0x08]\n\u002B       cmp      r12d, eax\n\u002B       jae      G_M40258_IG12\n\u002B       mov      eax, r12d\n\u002B       cmp      qword ptr [rdi\u002B8*rax\u002B0x10], 0\n        jne      SHORT G_M40258_IG06\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       mov      edi, r12d\n\u002B       lea      rax, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      bword ptr [rbp-0x30], rax\n        mov      rcx, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        mov      rdi, gword ptr [rcx\u002B0x10]\n        call     [rcx\u002B0x18]System.Func\u00602[uint,System.__Canon]:Invoke(uint):System.__Canon:this\n        mov      rsi, rax\n        mov      rdi, bword ptr [rbp-0x30]\n-       test     rdi, rdi\n-       je       SHORT G_M40258_IG12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=92 bbWeight=2 PerfScore 49.00\n\u002B\t\t\t\t\t\t;; size=72 bbWeight=2 PerfScore 42.00\n G_M40258_IG06:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M40258_IG13\n\u002B       jae      SHORT G_M40258_IG12\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M40258_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n G_M40258_IG07:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M40258_IG08:\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeRef(dnlib.DotNet.TypeRef):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddTypeRef(dnlib.DotNet.TypeRef):uint:this\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M40258_IG04\n \t\t\t\t\t\t;; size=27 bbWeight=4 PerfScore 20.00\n G_M40258_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeRefRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.12\n G_M40258_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawTypeRefRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M40258_IG11:\n        add      rsp, 8\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M40258_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M40258_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 336, prolog size 16, PerfScore 148.88, instruction count 90, allocated bytes for code 336 (MethodHash=c57d62bd) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n\u002B; Total bytes of code 303, prolog size 16, PerfScore 141.88, instruction count 84, allocated bytes for code 303 (MethodHash=c57d62bd) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeTypeRefTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":336,"DiffBytes":303},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M62218_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M62218_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M62218_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[System.Numerics.Vector\u00601[float],System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M62218_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M62218_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M62218_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.Numerics.Vector\u00601[float],System.Numerics.Vector\u00601[float]]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M62218_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M62218_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M62218_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M62218_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M62218_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M62218_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M62218_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=43f50cf5) for method ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=43f50cf5) for method ClosedXML.Excel.Slice\u00601[System.Numerics.Vector\u00601[float]]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)","Category":"improvement","Description":"349 -\u003E 317 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,165 \u002B1,158 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  4,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T15] (  3,  1.50)     int  -\u003E  rsi         single-def\n\u002B;  V04 loc1         [V04,T16] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  4,  2   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.ICustomAttributeType\u003E\n-;  V06 loc3         [V06,T16] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n\u002B;  V06 loc3         [V06,T17] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T13] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T14] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T14] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T15] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V13 tmp6         [V13,T10] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp8         [V15,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T13] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V16 tmp9         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V17 tmp10        [V17,T04] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V18 tmp11        [V18,T05] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V19 tmp12        [V19,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V20 tmp13        [V20,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V21 rat0         [V21,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V19 tmp12        [V19,T06] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp13        [V20,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp14        [V21,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V22 rat0         [V22,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M57160_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=32 bbWeight=1 PerfScore 7.75\n G_M57160_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M57160_IG11\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M57160_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 6\n        jne      SHORT G_M57160_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M57160_IG10\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M57160_IG04:\n        cmp      r13d, 10\n        jne      G_M57160_IG09\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M57160_IG07\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M57160_IG14\n\u002B       jae      G_M57160_IG13\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      SHORT G_M57160_IG05\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M57160_IG06\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M57160_IG13\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M57160_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=149 bbWeight=0.50 PerfScore 19.38\n\u002B\t\t\t\t\t\t;; size=130 bbWeight=0.50 PerfScore 18.88\n G_M57160_IG05:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M57160_IG14\n\u002B       jae      SHORT G_M57160_IG13\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M57160_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M57160_IG06:\n        mov      rax, r15\n        jmp      SHORT G_M57160_IG08\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M57160_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG08:\n        jmp      SHORT G_M57160_IG10\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M57160_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG10:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M57160_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M57160_IG12:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M57160_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M57160_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 349, prolog size 23, PerfScore 52.12, instruction count 99, allocated bytes for code 349 (MethodHash=daed20b7) for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n\u002B; Total bytes of code 317, prolog size 23, PerfScore 51.62, instruction count 93, allocated bytes for code 317 (MethodHash=daed20b7) for method dnlib.DotNet.ModuleDefMD:ResolveCustomAttributeType(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ICustomAttributeType:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":349,"DiffBytes":317},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[byte]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[byte]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M59811_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M59811_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M59811_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[byte,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M59811_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M59811_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M59811_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[byte,byte]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M59811_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M59811_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M59811_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M59811_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M59811_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M59811_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M59811_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=9659165c) for method ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=9659165c) for method ClosedXML.Excel.Slice\u00601[byte]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)","Category":"improvement","Description":"349 -\u003E 317 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,165 \u002B1,158 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  4,  3   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n-;  V04 loc1         [V04,T15] (  3,  1.50)     int  -\u003E  rsi         single-def\n\u002B;  V04 loc1         [V04,T16] (  3,  1.50)     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  4,  2   )     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.IMethodDefOrRef\u003E\n-;  V06 loc3         [V06,T16] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n\u002B;  V06 loc3         [V06,T17] (  3,  1.50)   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T13] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T14] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T14] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T15] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n ;  V13 tmp6         [V13,T10] (  5,  2.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp8         [V15,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T13] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V16 tmp9         [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;  V17 tmp10        [V17,T04] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V18 tmp11        [V18,T05] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V19 tmp12        [V19,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V20 tmp13        [V20,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V21 rat0         [V21,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V19 tmp12        [V19,T06] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp13        [V20,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V21 tmp14        [V21,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V22 rat0         [V22,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M39432_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=32 bbWeight=1 PerfScore 7.75\n G_M39432_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M39432_IG11\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M39432_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 6\n        jne      SHORT G_M39432_IG04\n        mov      rdi, gword ptr [rbx\u002B0x170]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M39432_IG10\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M39432_IG04:\n        cmp      r13d, 10\n        jne      G_M39432_IG09\n        mov      rbx, gword ptr [rbx\u002B0x188]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M39432_IG07\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M39432_IG14\n\u002B       jae      G_M39432_IG13\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      SHORT G_M39432_IG05\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M39432_IG06\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M39432_IG13\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M39432_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=149 bbWeight=0.50 PerfScore 19.38\n\u002B\t\t\t\t\t\t;; size=130 bbWeight=0.50 PerfScore 18.88\n G_M39432_IG05:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M39432_IG14\n\u002B       jae      SHORT G_M39432_IG13\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M39432_IG08\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M39432_IG06:\n        mov      rax, r15\n        jmp      SHORT G_M39432_IG08\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M39432_IG07:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG08:\n        jmp      SHORT G_M39432_IG10\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M39432_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG10:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M39432_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M39432_IG12:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M39432_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M39432_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 349, prolog size 23, PerfScore 52.12, instruction count 99, allocated bytes for code 349 (MethodHash=3dee65f7) for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n\u002B; Total bytes of code 317, prolog size 23, PerfScore 51.62, instruction count 93, allocated bytes for code 317 (MethodHash=3dee65f7) for method dnlib.DotNet.ModuleDefMD:ResolveMethodDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.IMethodDefOrRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":349,"DiffBytes":317},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[double]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[double]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M33724_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M33724_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M33724_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[double,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M33724_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M33724_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M33724_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[double,double]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M33724_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M33724_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M33724_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M33724_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M33724_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M33724_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M33724_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=6f8c7c43) for method ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=6f8c7c43) for method ClosedXML.Excel.Slice\u00601[double]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)","Category":"improvement","Description":"278 -\u003E 246 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,151 \u002B1,144 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V05 tmp2         [V05,T10] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T11] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V10 tmp7         [V10,T04] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V11 tmp8         [V11    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V12 tmp9         [V12,T08] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V13 tmp10        [V13,T09] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V14 tmp11        [V14    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V15 tmp12        [V15,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V16 tmp13        [V16,T12] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V15 tmp12        [V15,T14] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V16 tmp13        [V16,T13] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V20 tmp17        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V21 tmp18        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V22 tmp19        [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp20        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V14.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp21        [V24,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V25 tmp22        [V25,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp21        [V24,T04] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp22        [V25,T05] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp23        [V26,T06] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T07] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M51553_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x20], rax\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.75\n G_M51553_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x208]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M51553_IG10\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M51553_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M51553_IG13\n\u002B       jae      G_M51553_IG12\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M51553_IG09\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rsi, gword ptr [r14\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M51553_IG06\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 9.88\n G_M51553_IG04:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M51553_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M51553_IG05:\n        jmp      SHORT G_M51553_IG07\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M51553_IG06:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M51553_IG07:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n        test     rsi, rsi\n        je       SHORT G_M51553_IG08\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M51553_IG08\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        je       SHORT G_M51553_IG08\n        mov      rax, r14\n        jmp      SHORT G_M51553_IG11\n \t\t\t\t\t\t;; size=61 bbWeight=0.50 PerfScore 9.12\n G_M51553_IG08:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M51553_IG12\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M51553_IG12\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M51553_IG09:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M51553_IG13\n\u002B       jae      SHORT G_M51553_IG12\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M51553_IG11\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M51553_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M51553_IG11:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M51553_IG12:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M51553_IG13:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 278, prolog size 18, PerfScore 44.75, instruction count 82, allocated bytes for code 278 (MethodHash=74cc369e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n\u002B; Total bytes of code 246, prolog size 18, PerfScore 44.25, instruction count 76, allocated bytes for code 246 (MethodHash=74cc369e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":278,"DiffBytes":246},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[int]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[int]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M55642_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M55642_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M55642_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[int,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M55642_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M55642_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M55642_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[int,int]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M55642_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M55642_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M55642_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M55642_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M55642_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M55642_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M55642_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=605426a5) for method ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=605426a5) for method ClosedXML.Excel.Slice\u00601[int]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)","Category":"improvement","Description":"271 -\u003E 239 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,147 \u002B1,140 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T12] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V07 tmp4         [V07,T13] (  4,  2   )     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V09 tmp6         [V09,T06] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T14] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V10 tmp7         [V10    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V11 tmp8         [V11,T10] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V12 tmp9         [V12,T11] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V13 tmp10        [V13    ] (  8,  4   )  struct ( 8) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V14 tmp11        [V14,T15] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V15 tmp12        [V15,T14] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V14 tmp11        [V14,T16] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V15 tmp12        [V15,T15] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;  V18 tmp15        [V18,T04] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V19 tmp16        [V19,T05] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20    ] (  8,  4   )     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V13.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V21 tmp18        [V21,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V22 tmp19        [V22,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V23 rat0         [V23,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V21 tmp18        [V21,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T07] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V23 tmp20        [V23,T08] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V24 rat0         [V24,T09] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M46305_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M46305_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x208]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M46305_IG11\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M46305_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M46305_IG14\n\u002B       jae      G_M46305_IG13\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      G_M46305_IG10\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        mov      rsi, gword ptr [r14\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M46305_IG06\n \t\t\t\t\t\t;; size=56 bbWeight=0.50 PerfScore 9.62\n G_M46305_IG04:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M46305_IG06\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M46305_IG05:\n        jmp      SHORT G_M46305_IG07\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M46305_IG06:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M46305_IG07:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.62\n G_M46305_IG08:\n        mov      dword ptr [rbp-0x20], edi\n        test     rsi, rsi\n        je       SHORT G_M46305_IG09\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M46305_IG09\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        je       SHORT G_M46305_IG09\n        mov      rax, r14\n        jmp      SHORT G_M46305_IG12\n \t\t\t\t\t\t;; size=59 bbWeight=0.50 PerfScore 9.00\n G_M46305_IG09:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M46305_IG13\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M46305_IG13\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M46305_IG10:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M46305_IG14\n\u002B       jae      SHORT G_M46305_IG13\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M46305_IG12\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M46305_IG11:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M46305_IG12:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M46305_IG13:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M46305_IG14:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 271, prolog size 12, PerfScore 43.75, instruction count 79, allocated bytes for code 271 (MethodHash=9d6e4b1e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n\u002B; Total bytes of code 239, prolog size 12, PerfScore 43.25, instruction count 73, allocated bytes for code 239 (MethodHash=9d6e4b1e) for method dnlib.DotNet.ModuleDefMD:ResolveMethodSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.MethodSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":271,"DiffBytes":239},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[long]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[long]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M51875_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M51875_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M51875_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[long,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M51875_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M51875_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M51875_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[long,long]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M51875_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M51875_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M51875_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M51875_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M51875_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M51875_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M51875_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=1ef6355c) for method ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=1ef6355c) for method ClosedXML.Excel.Slice\u00601[long]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)","Category":"improvement","Description":"445 -\u003E 413 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,201 \u002B1,194 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 10 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  5,  3.50)     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V03 loc0         [V03    ] (  3,  2   )     int  -\u003E  [rbp-0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op\n ;  V04 loc1         [V04,T13] (  4,  2   )     int  -\u003E  rsi         single-def\n ;  V05 loc2         [V05,T11] (  5,  2.50)     ref  -\u003E  rax         class-hnd \u003Cdnlib.DotNet.ITypeDefOrRef\u003E\n ;  V06 loc3         [V06,T14] (  4,  2   )   ubyte  -\u003E  r13         single-def\n ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n-;  V08 tmp1         [V08,T15] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n-;  V09 tmp2         [V09,T16] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V08 tmp1         [V08,T16] (  2,  2   )     int  -\u003E  rsi         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp2         [V09,T17] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V10 tmp3         [V10,T12] (  4,  2   )     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V11 tmp4         [V11,T00] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V11 tmp4         [V11,T00] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;  V12 tmp5         [V12,T01] (  6,  6   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V13 tmp6         [V13,T04] (  7,  3.50)     ref  -\u003E  r15         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V14 tmp7         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V15 tmp8         [V15,T07] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V15 tmp8         [V15,T15] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V16 tmp9         [V16    ] (  7,  3.50)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V17 tmp10        [V17,T18] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V18 tmp11        [V18,T17] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V17 tmp10        [V17,T19] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V18 tmp11        [V18,T18] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V19 tmp12        [V19    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V20 tmp13        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V21 tmp14        [V21,T05] (  2,  1.50)     ref  -\u003E  r15         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V22 tmp15        [V22,T06] (  2,  1.50)     ref  -\u003E  r14         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V23 tmp16        [V23    ] (  7,  3.50)     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V16.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V24 tmp17        [V24,T08] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V25 tmp18        [V25,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V26 rat0         [V26,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V24 tmp17        [V24,T07] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V25 tmp18        [V25,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V26 tmp19        [V26,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V27 rat0         [V27,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 16\n \n G_M30792_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 16\n        lea      rbp, [rsp\u002B0x30]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x28], rax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rdx\n        mov      r14, rcx\n \t\t\t\t\t\t;; size=36 bbWeight=1 PerfScore 8.75\n G_M30792_IG02:\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        lea      rdx, [rbp-0x28]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        call     [rax]dnlib.DotNet.MD.CodedToken:Decode(uint,byref):bool:this\n        test     eax, eax\n        je       G_M30792_IG14\n \t\t\t\t\t\t;; size=37 bbWeight=1 PerfScore 7.25\n G_M30792_IG03:\n        mov      esi, dword ptr [rbp-0x28]\n        and      esi, 0xD1FFAB1E\n        mov      edi, dword ptr [rbp-0x28]\n        shr      edi, 24\n        movzx    r13, dil\n        cmp      r13d, 1\n        jne      SHORT G_M30792_IG04\n        mov      rdi, gword ptr [rbx\u002B0x158]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M30792_IG13\n \t\t\t\t\t\t;; size=53 bbWeight=0.50 PerfScore 6.88\n G_M30792_IG04:\n        cmp      r13d, 2\n        jne      SHORT G_M30792_IG05\n        mov      rdi, gword ptr [rbx\u002B0x160]\n        dec      esi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.Utils.SimpleLazyList\u00601[System.__Canon]:get_Item(uint):System.__Canon:this\n        jmp      G_M30792_IG13\n \t\t\t\t\t\t;; size=34 bbWeight=0.50 PerfScore 5.38\n G_M30792_IG05:\n        cmp      r13d, 27\n        jne      G_M30792_IG12\n        mov      rbx, gword ptr [rbx\u002B0x1C8]\n        lea      r13d, [rsi-0x01]\n        cmp      r13d, dword ptr [rbx\u002B0x18]\n        jae      G_M30792_IG10\n        mov      rdx, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rdx\u002B0x08]\n-       jae      G_M30792_IG17\n\u002B       jae      G_M30792_IG16\n        mov      ecx, r13d\n        cmp      qword ptr [rdx\u002B8*rcx\u002B0x10], 0\n        jne      G_M30792_IG08\n        mov      rax, gword ptr [rbx\u002B0x10]\n        mov      rdx, r15\n        mov      rcx, r14\n        lea      esi, [r13\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r15, rax\n        cmp      byte  ptr [r15], r15b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M30792_IG07\n        mov      edi, dword ptr [rbp-0x30]\n        inc      edi\n        mov      dword ptr [rbp-0x30], edi\n        cmp      byte  ptr [r15\u002B0x34], 0\n        jne      SHORT G_M30792_IG06\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=128 bbWeight=0.50 PerfScore 18.62\n G_M30792_IG06:\n        mov      rsi, gword ptr [r15\u002B0x10]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        jne      SHORT G_M30792_IG09\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M30792_IG07:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M30792_IG16\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M30792_IG16\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r15\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M30792_IG08:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M30792_IG17\n\u002B       jae      SHORT G_M30792_IG16\n        mov      ecx, r13d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M30792_IG11\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M30792_IG09:\n        mov      rax, r15\n        jmp      SHORT G_M30792_IG11\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M30792_IG10:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG11:\n        jmp      SHORT G_M30792_IG13\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M30792_IG12:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG13:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M30792_IG14:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M30792_IG15:\n        add      rsp, 16\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=0.50 PerfScore 1.88\n G_M30792_IG16:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M30792_IG17:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 445, prolog size 27, PerfScore 66.75, instruction count 124, allocated bytes for code 445 (MethodHash=7af487b7) for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n\u002B; Total bytes of code 413, prolog size 27, PerfScore 66.25, instruction count 118, allocated bytes for code 413 (MethodHash=7af487b7) for method dnlib.DotNet.ModuleDefMD:ResolveTypeDefOrRef(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.ITypeDefOrRef:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":445,"DiffBytes":413},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)","Category":"improvement","Description":"173 -\u003E 158 bytes (-15)","ExtraInfo":null,"Diff":"@@ -1,95 \u002B1,95 @@\n ; Assembly listing for method ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T07] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[short]\u003E\n\u002B;  V00 this         [V00,T08] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.Slice\u00601[short]\u003E\n ;  V01 loc0         [V01,T04] (  5, 12   )     int  -\u003E  rbx        \n ;  V02 loc1         [V02    ] ( 10, 43   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\u003E\n-;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\u003E\n-;  V06 tmp3         [V06,T06] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n-;  V07 tmp4         [V07,T01] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n\u002B;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CSystem.__Canon\u003E\n\u002B;  V06 tmp3         [V06,T07] (  3,  8   )     int  -\u003E  rbx         \u0022Inline return value spill temp\u0022\n\u002B;  V07 tmp4         [V07,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n ;* V08 tmp5         [V08    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;  V09 tmp6         [V09,T02] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n\u002B;  V09 tmp6         [V09,T03] (  3, 20   )     int  -\u003E  rax         \u0022Inline stloc first use temp\u0022\n ;  V10 tmp7         [V10    ] (  3, 13   )     ref  -\u003E  [rbp-0x18]  do-not-enreg[X] addr-exposed \u0022field V02._lut (fldOffset=0x0)\u0022 P-DEP\n ;  V11 tmp8         [V11    ] (  3, 17   )     int  -\u003E  [rbp-0x10]  do-not-enreg[X] addr-exposed \u0022field V02._endIdx (fldOffset=0x8)\u0022 P-DEP\n ;  V12 tmp9         [V12    ] (  6, 29   )     int  -\u003E  [rbp-0x0C]  do-not-enreg[X] addr-exposed \u0022field V02._idx (fldOffset=0xc)\u0022 P-DEP\n-;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V14 tmp11        [V14,T03] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rsi         \u0022CSE #01: aggressive\u0022\n\u002B;  V13 tmp10        [V13,T00] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V14 tmp11        [V14,T01] (  3, 24   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V15 cse0         [V15,T05] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #01: aggressive\u0022\n\u002B;  V16 cse1         [V16,T06] (  3, 12   )     int  -\u003E  rcx         \u0022CSE #02: aggressive\u0022\n ;\n ; Lcl frame size = 24\n \n G_M40251_IG01:\n        push     rbp\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x18], rax\n        mov      qword ptr [rbp-0x10], rax\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.00\n G_M40251_IG02:\n        mov      ebx, -1\n        mov      rdx, gword ptr [rdi\u002B0x08]\n        mov      gword ptr [rbp-0x18], rdx\n        mov      dword ptr [rbp-0x0C], -1\n        mov      dword ptr [rbp-0x10], 0xD1FFAB1E\n \t\t\t\t\t\t;; size=27 bbWeight=1 PerfScore 5.25\n G_M40251_IG03:\n        mov      edx, dword ptr [rbp-0x0C]\n        inc      edx\n        lea      rdi, [rbp-0x18]\n        mov      rsi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[short,System.__Canon]:GetNextUsedIndexAtOrLater(int):int:this\n        cmp      eax, dword ptr [rbp-0x10]\n        jg       SHORT G_M40251_IG06\n \t\t\t\t\t\t;; size=36 bbWeight=8 PerfScore 58.00\n G_M40251_IG04:\n        mov      dword ptr [rbp-0x0C], eax\n-       mov      rdi, gword ptr [rbp-0x18]\n-       mov      rdi, gword ptr [rdi\u002B0x08]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       sar      esi, 5\n-       cmp      esi, dword ptr [rdi\u002B0x08]\n\u002B       mov      rax, gword ptr [rbp-0x18]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      SHORT G_M40251_IG08\n-       shl      rsi, 4\n-       mov      rdi, gword ptr [rdi\u002Brsi\u002B0x10]\n-       mov      esi, dword ptr [rbp-0x0C]\n-       and      esi, 31\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BLut\u00601[short,short]\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      rax, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       mov      ecx, dword ptr [rbp-0x0C]\n\u002B       and      ecx, 31\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n\u002B       jae      SHORT G_M40251_IG08\n\u002B       mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        mov      eax, dword ptr [rax\u002B0x10]\n        cmp      ebx, eax\n        jge      SHORT G_M40251_IG03\n-\t\t\t\t\t\t;; size=69 bbWeight=4 PerfScore 84.00\n\u002B\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 82.00\n G_M40251_IG05:\n        mov      ebx, eax\n        jmp      SHORT G_M40251_IG03\n \t\t\t\t\t\t;; size=4 bbWeight=2 PerfScore 4.50\n G_M40251_IG06:\n        lea      eax, [rbx\u002B0x01]\n \t\t\t\t\t\t;; size=3 bbWeight=1 PerfScore 0.50\n G_M40251_IG07:\n        add      rsp, 24\n        pop      rbx\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=7 bbWeight=1 PerfScore 2.25\n G_M40251_IG08:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 173, prolog size 21, PerfScore 159.50, instruction count 48, allocated bytes for code 173 (MethodHash=286b62c4) for method ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)\n\u002B; Total bytes of code 158, prolog size 21, PerfScore 157.50, instruction count 47, allocated bytes for code 158 (MethodHash=286b62c4) for method ClosedXML.Excel.Slice\u00601[short]:CalculateMaxColumn():int:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":173,"DiffBytes":158},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)","Category":"improvement","Description":"270 -\u003E 238 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,140 \u002B1,133 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V05 tmp2         [V05,T09] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V06 tmp3         [V06,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V06 tmp3         [V06,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;* V07 tmp4         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V08 tmp5         [V08,T04] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V09 tmp6         [V09    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V10 tmp7         [V10,T05] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V10 tmp7         [V10,T10] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V11 tmp8         [V11    ] (  7,  3.50)  struct ( 8) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V12 tmp9         [V12,T11] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V13 tmp10        [V13,T10] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V12 tmp9         [V12,T12] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V13 tmp10        [V13,T11] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V15 tmp12        [V15    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V16 tmp13        [V16    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V17 tmp14        [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V19 tmp16        [V19    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V07.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V20 tmp17        [V20    ] (  7,  3.50)     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V11.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V21 tmp18        [V21,T06] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V22 tmp19        [V22,T07] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V23 rat0         [V23,T08] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V21 tmp18        [V21,T05] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V22 tmp19        [V22,T06] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V23 tmp20        [V23,T07] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V24 rat0         [V24,T08] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M353_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x20], rax\n \t\t\t\t\t\t;; size=18 bbWeight=1 PerfScore 6.75\n G_M353_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1C8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M353_IG08\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M353_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M353_IG11\n\u002B       jae      G_M353_IG10\n        mov      edx, r15d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M353_IG06\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M353_IG05\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      byte  ptr [r14\u002B0x34], 0\n        jne      SHORT G_M353_IG04\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=95 bbWeight=0.50 PerfScore 15.25\n G_M353_IG04:\n        mov      rsi, gword ptr [r14\u002B0x10]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        jne      SHORT G_M353_IG07\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M353_IG05:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M353_IG10\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M353_IG10\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M353_IG06:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M353_IG11\n\u002B       jae      SHORT G_M353_IG10\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M353_IG09\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M353_IG07:\n        mov      rax, r14\n        jmp      SHORT G_M353_IG09\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M353_IG08:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M353_IG09:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M353_IG10:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M353_IG11:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 270, prolog size 18, PerfScore 45.62, instruction count 78, allocated bytes for code 270 (MethodHash=3bdefe9e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n\u002B; Total bytes of code 238, prolog size 18, PerfScore 45.12, instruction count 72, allocated bytes for code 238 (MethodHash=3bdefe9e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":270,"DiffBytes":238},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)","Category":"improvement","Description":"1,399 -\u003E 1,386 bytes (-13)","ExtraInfo":null,"Diff":"@@ -1,494 \u002B1,493 @@\n ; Assembly listing for method ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 29 single block inlinees; 11 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 arg0         [V00,T18] (  9, 23   )     ref  -\u003E  rbx         class-hnd single-def \u003CClosedXML.Excel.XLWorkbook\u003E\n-;  V01 loc0         [V01,T24] (  5, 22   )     ref  -\u003E  r15         class-hnd exact single-def \u003CClosedXML.Excel.CalcEngine.DependencyTree\u003E\n-;  V02 loc1         [V02,T17] ( 12, 28   )     ref  -\u003E  [rbp-0x70]  do-not-enreg[M] class-hnd EH-live \u003CSystem.Collections.Generic.IEnumerator\u00601[ClosedXML.Excel.XLWorksheet]\u003E\n-;  V03 loc2         [V03,T32] (  2,  8   )     ref  -\u003E  r14         class-hnd \u003CClosedXML.Excel.XLWorksheet\u003E\n-;  V04 loc3         [V04,T19] (  4, 24   )     ref  -\u003E  r14         class-hnd \u003CClosedXML.Excel.XLWorksheet\u003E\n\u002B;  V00 arg0         [V00,T19] (  9, 23   )     ref  -\u003E  rbx         class-hnd single-def \u003CClosedXML.Excel.XLWorkbook\u003E\n\u002B;  V01 loc0         [V01,T25] (  5, 22   )     ref  -\u003E  r15         class-hnd exact single-def \u003CClosedXML.Excel.CalcEngine.DependencyTree\u003E\n\u002B;  V02 loc1         [V02,T18] ( 12, 28   )     ref  -\u003E  [rbp-0x70]  do-not-enreg[M] class-hnd EH-live \u003CSystem.Collections.Generic.IEnumerator\u00601[ClosedXML.Excel.XLWorksheet]\u003E\n\u002B;  V03 loc2         [V03,T33] (  2,  8   )     ref  -\u003E  r14         class-hnd \u003CClosedXML.Excel.XLWorksheet\u003E\n\u002B;  V04 loc3         [V04,T20] (  4, 24   )     ref  -\u003E  r14         class-hnd \u003CClosedXML.Excel.XLWorksheet\u003E\n ;  V05 loc4         [V05,T00] ( 11,122   )     ref  -\u003E  [rbp-0x78]  do-not-enreg[Z] class-hnd exact EH-live \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n-;  V06 loc5         [V06,T10] (  5, 56   )     ref  -\u003E  r13         class-hnd \u003CClosedXML.Excel.XLCellFormula\u003E\n\u002B;  V06 loc5         [V06,T11] (  5, 56   )     ref  -\u003E  r13         class-hnd \u003CClosedXML.Excel.XLCellFormula\u003E\n ;* V07 loc6         [V07    ] (  0,  0   )  struct ( 8) zero-ref    \u003CClosedXML.Excel.XLSheetPoint\u003E\n-;  V08 loc7         [V08,T11] (  6, 48   )  struct (24) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op \u003CClosedXML.Excel.XLBookArea\u003E\n-;  V09 loc8         [V09,T23] (  3, 24   )  struct (24) [rbp-0x58]  do-not-enreg[SF] must-init ld-addr-op \u003CClosedXML.Excel.XLBookArea\u003E\n\u002B;  V08 loc7         [V08,T12] (  6, 48   )  struct (24) [rbp-0x40]  do-not-enreg[SF] must-init ld-addr-op \u003CClosedXML.Excel.XLBookArea\u003E\n\u002B;  V09 loc8         [V09,T24] (  3, 24   )  struct (24) [rbp-0x58]  do-not-enreg[SF] must-init ld-addr-op \u003CClosedXML.Excel.XLBookArea\u003E\n ;  V10 OutArgs      [V10    ] (  1,  1   )  struct (24) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CUNNAMED\u003E\n-;  V11 tmp1         [V11,T39] (  3,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.CalcEngine.DependencyTree\u003E\n\u002B;  V11 tmp1         [V11,T40] (  3,  6   )     ref  -\u003E  r15         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.CalcEngine.DependencyTree\u003E\n ;* V12 tmp2         [V12    ] (  0,  0   )  struct (16) zero-ref    \u0022location for address-of(RValue)\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V13 tmp3         [V13,T07] (  4, 64   )     ref  -\u003E  rdi         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n-;  V14 tmp4         [V14,T16] (  2, 32   )  struct (16) mm0         \u0022spilled call-like call argument\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n\u002B;  V13 tmp3         [V13,T09] (  4, 64   )     ref  -\u003E  rdi         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n\u002B;  V14 tmp4         [V14,T17] (  2, 32   )  struct (16) mm0         \u0022spilled call-like call argument\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n ;* V15 tmp5         [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V16 tmp6         [V16,T08] (  4, 64   )     ref  -\u003E  rcx         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n\u002B;  V16 tmp6         [V16,T10] (  4, 64   )     ref  -\u003E  rcx         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n ;* V17 tmp7         [V17    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLWorksheets\u003E\n ;* V18 tmp8         [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V19 tmp9         [V19,T37] (  4,  6   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V20 tmp10        [V20,T42] (  2,  4   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022dup spill\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]\u003E\n-;  V21 tmp11        [V21,T47] (  4,  3.50)     ref  -\u003E  rdi        \n-;  V22 tmp12        [V22,T40] (  4,  4   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n\u002B;  V19 tmp9         [V19,T38] (  4,  6   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n\u002B;  V20 tmp10        [V20,T43] (  2,  4   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022dup spill\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]\u003E\n\u002B;  V21 tmp11        [V21,T48] (  4,  3.50)     ref  -\u003E  rdi        \n\u002B;  V22 tmp12        [V22,T41] (  4,  4   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n ;* V23 tmp13        [V23    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inline stloc first use temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V24 tmp14        [V24,T20] (  3, 24   )     ref  -\u003E  r13         class-hnd \u0022non-inline candidate call\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree]\u003E\n-;  V25 tmp15        [V25,T21] (  3, 24   )     ref  -\u003E  r12         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree\u003E\n-;  V26 tmp16        [V26,T25] (  2, 16   )     ref  -\u003E  r14         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n\u002B;  V24 tmp14        [V24,T21] (  3, 24   )     ref  -\u003E  r13         class-hnd \u0022non-inline candidate call\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree]\u003E\n\u002B;  V25 tmp15        [V25,T22] (  3, 24   )     ref  -\u003E  r12         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree\u003E\n\u002B;  V26 tmp16        [V26,T26] (  2, 16   )     ref  -\u003E  r14         class-hnd exact \u0022impAppendStmt\u0022 \u003CSystem.String\u003E\n ;* V27 tmp17        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLWorksheets\u003E\n ;* V28 tmp18        [V28    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inline return value spill temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V29 tmp19        [V29,T38] (  4,  6   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V30 tmp20        [V30,T43] (  2,  4   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022dup spill\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]\u003E\n-;  V31 tmp21        [V31,T48] (  4,  3.50)     ref  -\u003E  rdi        \n-;  V32 tmp22        [V32,T41] (  4,  4   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n\u002B;  V29 tmp19        [V29,T39] (  4,  6   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n\u002B;  V30 tmp20        [V30,T44] (  2,  4   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022dup spill\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]\u003E\n\u002B;  V31 tmp21        [V31,T49] (  4,  3.50)     ref  -\u003E  rdi        \n\u002B;  V32 tmp22        [V32,T42] (  4,  4   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n ;* V33 tmp23        [V33    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inline stloc first use temp\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\u003E\n-;  V34 tmp24        [V34,T15] (  4, 32   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLWorksheetInternals\u003E\n\u002B;  V34 tmp24        [V34,T16] (  4, 32   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLWorksheetInternals\u003E\n ;* V35 tmp25        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLCellsCollection\u003E\n-;  V36 tmp26        [V36,T26] (  2, 16   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.FormulaSlice\u003E\n-;  V37 tmp27        [V37,T29] (  2, 16   )  struct (16) [rbp-0x68]  do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V38 tmp28        [V38,T06] (  9, 72   )     ref  -\u003E  r12         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V36 tmp26        [V36,T27] (  2, 16   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.FormulaSlice\u003E\n\u002B;  V37 tmp27        [V37,T30] (  2, 16   )  struct (16) [rbp-0x68]  do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n\u002B;  V38 tmp28        [V38,T08] (  9, 72   )     ref  -\u003E  r12         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V39 tmp29        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V40 tmp30        [V40,T27] (  2, 16   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V40 tmp30        [V40,T28] (  2, 16   )     ref  -\u003E  r13         class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V41 tmp31        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]]\u003E\n ;* V42 tmp32        [V42    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V43 tmp33        [V43,T28] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n-;* V44 tmp34        [V44,T34] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;* V45 tmp35        [V45,T35] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V46 tmp36        [V46,T49] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n\u002B;  V43 tmp33        [V43,T29] (  2, 16   )     ref  -\u003E  rsi         class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n\u002B;* V44 tmp34        [V44,T35] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n\u002B;* V45 tmp35        [V45,T36] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n\u002B;  V46 tmp36        [V46,T50] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n ;  V47 tmp37        [V47,T01] (  3, 96   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V48 tmp38        [V48,T04] (  4, 80   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V48 tmp38        [V48,T06] (  4, 80   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V49 tmp39        [V49    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.XLSheetPoint\u003E\n ;* V50 tmp40        [V50    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V51 tmp41        [V51    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V52 tmp42        [V52,T05] (  4, 80   )     int  -\u003E   r8         \u0022Inlining Arg\u0022\n\u002B;  V52 tmp42        [V52,T07] (  4, 80   )     int  -\u003E   r8         \u0022Inlining Arg\u0022\n ;* V53 tmp43        [V53    ] (  0,  0   )  struct (16) zero-ref    \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V54 tmp44        [V54,T50] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n-;* V55 tmp45        [V55,T52] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n-;* V56 tmp46        [V56,T36] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n\u002B;  V54 tmp44        [V54,T51] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n\u002B;* V55 tmp45        [V55,T53] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n\u002B;* V56 tmp46        [V56,T37] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V57 tmp47        [V57    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetPoint\u003E\n-;  V58 tmp48        [V58,T51] (  3,  0   )     ref  -\u003E  r15         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n-;* V59 tmp49        [V59,T53] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n\u002B;  V58 tmp48        [V58,T52] (  3,  0   )     ref  -\u003E  r15         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ArgumentException\u003E\n\u002B;* V59 tmp49        [V59,T54] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V60 tmp50        [V60    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V07.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V61 tmp51        [V61    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V07.Column (fldOffset=0x4)\u0022 P-INDEP\n-;  V62 tmp52        [V62,T33] (  2,  8   )     ref  -\u003E  rsi         \u0022field V39._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V62 tmp52        [V62,T34] (  2,  8   )     ref  -\u003E  rsi         \u0022field V39._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V63 tmp53        [V63    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V39._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V64 tmp54        [V64    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V39._idx (fldOffset=0xc)\u0022 P-INDEP\n ;* V65 tmp55        [V65    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V41._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V66 tmp56        [V66    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V41._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;* V67 tmp57        [V67,T44] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V41._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;* V67 tmp57        [V67,T45] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V41._idx (fldOffset=0xc)\u0022 P-INDEP\n ;* V68 tmp58        [V68    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V49.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V69 tmp59        [V69    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V49.Column (fldOffset=0x4)\u0022 P-INDEP\n ;* V70 tmp60        [V70    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V57.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V71 tmp61        [V71    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V57.Column (fldOffset=0x4)\u0022 P-INDEP\n-;* V72 tmp62        [V72,T45] (  0,  0   )     int  -\u003E  zero-ref    \u0022V37.[000..004)\u0022\n-;* V73 tmp63        [V73,T46] (  0,  0   )     int  -\u003E  zero-ref    \u0022V37.[008..012)\u0022\n-;  V74 tmp64        [V74,T30] (  2, 16   )     int  -\u003E  rsi         \u0022V12.[000..004)\u0022\n-;  V75 tmp65        [V75,T31] (  2, 16   )     int  -\u003E  rdi         \u0022V12.[004..008)\u0022\n\u002B;* V72 tmp62        [V72,T46] (  0,  0   )     int  -\u003E  zero-ref    \u0022V37.[000..004)\u0022\n\u002B;* V73 tmp63        [V73,T47] (  0,  0   )     int  -\u003E  zero-ref    \u0022V37.[008..012)\u0022\n\u002B;  V74 tmp64        [V74,T31] (  2, 16   )     int  -\u003E  rsi         \u0022V12.[000..004)\u0022\n\u002B;  V75 tmp65        [V75,T32] (  2, 16   )     int  -\u003E  rdi         \u0022V12.[004..008)\u0022\n ;* V76 tmp66        [V76    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V15.[000..004)\u0022\n ;* V77 tmp67        [V77    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V15.[004..008)\u0022\n ;* V78 tmp68        [V78    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V15.[008..012)\u0022\n ;* V79 tmp69        [V79    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V15.[012..016)\u0022\n ;* V80 tmp70        [V80    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V53.[000..004)\u0022\n ;* V81 tmp71        [V81    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V53.[004..008)\u0022\n ;* V82 tmp72        [V82    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V53.[008..012)\u0022\n ;* V83 tmp73        [V83    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022V53.[012..016)\u0022\n-;  V84 tmp74        [V84,T12] (  3, 48   )   byref  -\u003E  rdi         \u0022Spilling address for field-by-field copy\u0022\n-;  V85 tmp75        [V85,T02] (  3, 96   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V86 tmp76        [V86,T03] (  3, 96   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V87 tmp77        [V87,T09] (  2, 64   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V88 cse0         [V88,T14] (  3, 40   )     int  -\u003E  rcx         \u0022CSE #04: moderate\u0022\n-;  V89 cse1         [V89,T13] (  3, 48   )     int  -\u003E  rdx         \u0022CSE #03: moderate\u0022\n-;  V90 cse2         [V90,T22] (  3, 24   )   byref  -\u003E  rcx         \u0022CSE #06: moderate\u0022\n\u002B;  V84 tmp74        [V84,T13] (  3, 48   )   byref  -\u003E  rdi         \u0022Spilling address for field-by-field copy\u0022\n\u002B;  V85 tmp75        [V85,T02] (  3, 96   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V86 tmp76        [V86,T04] (  3, 96   )     int  -\u003E  rdi         \u0022index expr\u0022\n\u002B;  V87 tmp77        [V87,T03] (  3, 96   )     ref  -\u003E  rax         \u0022arr expr\u0022\n\u002B;  V88 tmp78        [V88,T05] (  3, 96   )     int  -\u003E  rcx         \u0022index expr\u0022\n\u002B;  V89 cse0         [V89,T15] (  3, 40   )     int  -\u003E  rcx         \u0022CSE #04: moderate\u0022\n\u002B;  V90 cse1         [V90,T14] (  3, 48   )     int  -\u003E  rdi         \u0022CSE #03: moderate\u0022\n\u002B;  V91 cse2         [V91,T23] (  3, 24   )   byref  -\u003E  rcx         \u0022CSE #06: moderate\u0022\n ;\n ; Lcl frame size = 104\n \n G_M1897_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 104\n        lea      rbp, [rsp\u002B0x90]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x58], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqu  ymmword ptr [rbp-0x50], ymm8\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=45 bbWeight=1 PerfScore 10.58\n G_M1897_IG02:\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.CalcEngine.DependencyTree\n        call     CORINFO_HELP_NEWSFAST\n        mov      r15, rax\n        mov      rdi, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.CalcEngine.DependencyTree:.ctor():this\n        call     [rax]ClosedXML.Excel.CalcEngine.DependencyTree:.ctor():this\n        cmp      byte  ptr [rbx], bl\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.XLWorkbook:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.XLWorkbook:ThrowIfDisposed():this\n        mov      rdi, gword ptr [rbx\u002B0x28]\n        mov      r14, gword ptr [rdi\u002B0x10]\n        mov      rdi, gword ptr [r14\u002B0x28]\n        test     rdi, rdi\n        jne      SHORT G_M1897_IG04\n \t\t\t\t\t\t;; size=67 bbWeight=1 PerfScore 17.75\n G_M1897_IG03:\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        lea      rdi, bword ptr [r13\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        lea      rdi, bword ptr [r14\u002B0x28]\n        mov      rsi, r13\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, r13\n \t\t\t\t\t\t;; size=45 bbWeight=0.50 PerfScore 2.62\n G_M1897_IG04:\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]:System.Collections.Generic.IEnumerable\u003CTValue\u003E.GetEnumerator():System.Collections.Generic.IEnumerator\u00601[System.__Canon]:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]:System.Collections.Generic.IEnumerable\u003CTValue\u003E.GetEnumerator():System.Collections.Generic.IEnumerator\u00601[System.__Canon]:this\n        mov      gword ptr [rbp-0x70], rax\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 4.25\n G_M1897_IG05:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():bool:this\n        call     [r11]System.Collections.IEnumerator:MoveNext():bool:this\n        test     eax, eax\n        je       SHORT G_M1897_IG07\n \t\t\t\t\t\t;; size=21 bbWeight=8 PerfScore 44.00\n G_M1897_IG06:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator\u00601[System.__Canon]:get_Current():System.__Canon:this\n        call     [r11]System.Collections.Generic.IEnumerator\u00601[System.__Canon]:get_Current():System.__Canon:this\n        mov      r14, rax\n        mov      r13, gword ptr [r15\u002B0x18]\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree\n        call     CORINFO_HELP_NEWSFAST\n        mov      r12, rax\n        mov      rdi, r14\n        mov      r11, 0xD1FFAB1E      ; code for ClosedXML.Excel.IXLWorksheet:get_Name():System.String:this\n        call     [r11]ClosedXML.Excel.IXLWorksheet:get_Name():System.String:this\n        mov      r14, rax\n        mov      rdi, r12\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree:.ctor():this\n        call     [rax]ClosedXML.Excel.CalcEngine.DependencyTree\u002BSheetDependencyTree:.ctor():this\n        cmp      byte  ptr [r13], r13b\n        mov      rdi, r13\n        mov      rsi, r14\n        mov      rdx, r12\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,byte):bool:this\n        jmp      G_M1897_IG05\n \t\t\t\t\t\t;; size=111 bbWeight=4 PerfScore 94.00\n G_M1897_IG07:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this\n        call     [r11]System.IDisposable:Dispose():this\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.XLWorkbook:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.XLWorkbook:ThrowIfDisposed():this\n        mov      rdi, gword ptr [rbx\u002B0x28]\n        mov      r14, gword ptr [rdi\u002B0x10]\n        mov      rdi, gword ptr [r14\u002B0x28]\n        test     rdi, rdi\n        jne      SHORT G_M1897_IG09\n \t\t\t\t\t\t;; size=49 bbWeight=1 PerfScore 15.00\n G_M1897_IG08:\n        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.String,ClosedXML.Excel.XLWorksheet]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        lea      rdi, bword ptr [r13\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        lea      rdi, bword ptr [r14\u002B0x28]\n        mov      rsi, r13\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, r13\n \t\t\t\t\t\t;; size=45 bbWeight=0.50 PerfScore 2.62\n G_M1897_IG09:\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]:System.Collections.Generic.IEnumerable\u003CTValue\u003E.GetEnumerator():System.Collections.Generic.IEnumerator\u00601[System.__Canon]:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602\u002BValueCollection[System.__Canon,System.__Canon]:System.Collections.Generic.IEnumerable\u003CTValue\u003E.GetEnumerator():System.Collections.Generic.IEnumerator\u00601[System.__Canon]:this\n        mov      gword ptr [rbp-0x70], rax\n \t\t\t\t\t\t;; size=16 bbWeight=1 PerfScore 4.25\n G_M1897_IG10:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():bool:this\n        call     [r11]System.Collections.IEnumerator:MoveNext():bool:this\n        test     eax, eax\n        je       G_M1897_IG24\n \t\t\t\t\t\t;; size=25 bbWeight=8 PerfScore 44.00\n G_M1897_IG11:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator\u00601[System.__Canon]:get_Current():System.__Canon:this\n        call     [r11]System.Collections.Generic.IEnumerator\u00601[System.__Canon]:get_Current():System.__Canon:this\n        mov      r14, rax\n        mov      r13, gword ptr [r14\u002B0xC0]\n        cmp      byte  ptr [r13], r13b\n        mov      rdi, r13\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.XLWorksheetInternals:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.XLWorksheetInternals:ThrowIfDisposed():this\n        mov      rdi, gword ptr [r13\u002B0x08]\n        mov      r13, gword ptr [rdi\u002B0x20]\n        mov      rdi, 0xD1FFAB1E      ; data for ClosedXML.Excel.XLSheetRange:Full\n        vmovups  xmm0, xmmword ptr [rdi]\n        vmovups  xmmword ptr [rbp-0x68], xmm0\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r12, rax\n        mov      r13, gword ptr [r13\u002B0x18]\n        vmovups  xmm0, xmmword ptr [rbp-0x68]\n        vmovups  xmmword ptr [r12\u002B0x10], xmm0\n        mov      dword ptr [r12\u002B0x10], 1\n        mov      dword ptr [r12\u002B0x18], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M1897_IG23\n \t\t\t\t\t\t;; size=144 bbWeight=4 PerfScore 120.00\n G_M1897_IG12:\n        mov      rdi, 0xD1FFAB1E      ; data for ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]:Dummy\n        mov      rsi, gword ptr [rdi]\n        lea      rdi, bword ptr [r12\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x28], rdi\n        mov      rsi, gword ptr [r13\u002B0x10]\n        lea      rdi, bword ptr [r12\u002B0x30]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        mov      gword ptr [rbp-0x78], r12\n \t\t\t\t\t\t;; size=71 bbWeight=4 PerfScore 43.00\n G_M1897_IG13:\n        mov      rdi, gword ptr [rbp-0x78]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        test     eax, eax\n        je       G_M1897_IG21\n \t\t\t\t\t\t;; size=24 bbWeight=32 PerfScore 176.00\n G_M1897_IG14:\n        mov      rdi, gword ptr [rbp-0x78]\n        cmp      byte  ptr [rdi\u002B0x0C], 0\n        jne      G_M1897_IG19\n        mov      rdi, gword ptr [rbp-0x78]\n        add      rdi, 32\n-       mov      rsi, gword ptr [rdi]\n-       mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n-       cmp      edi, dword ptr [rsi\u002B0x08]\n\u002B       mov      rax, gword ptr [rdi]\n\u002B       mov      rax, gword ptr [rax\u002B0x08]\n\u002B       mov      edi, dword ptr [rdi\u002B0x0C]\n\u002B       mov      ecx, edi\n\u002B       sar      ecx, 5\n\u002B       cmp      ecx, dword ptr [rax\u002B0x08]\n        jae      G_M1897_IG20\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.XLCellFormula\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       mov      r13, gword ptr [rax]\n\u002B       shl      rcx, 4\n\u002B       mov      rax, gword ptr [rax\u002Brcx\u002B0x10]\n\u002B       and      edi, 31\n\u002B       cmp      edi, dword ptr [rax\u002B0x08]\n\u002B       jae      G_M1897_IG20\n\u002B       mov      r13, gword ptr [rax\u002B8*rdi\u002B0x10]\n        mov      rdi, gword ptr [rbp-0x78]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:ThrowIfDisposed():this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:ThrowIfDisposed():this\n        mov      rcx, gword ptr [rbp-0x78]\n        mov      eax, dword ptr [rcx\u002B0x3C]\n        inc      eax\n        mov      rcx, gword ptr [rbp-0x78]\n        mov      r8d, dword ptr [rcx\u002B0x2C]\n        inc      r8d\n        movzx    rcx, byte  ptr [r13\u002B0x12]\n        test     ecx, ecx\n        je       G_M1897_IG16\n-\t\t\t\t\t\t;; size=134 bbWeight=16 PerfScore 600.00\n\u002B\t\t\t\t\t\t;; size=121 bbWeight=16 PerfScore 588.00\n G_M1897_IG15:\n        cmp      ecx, 1\n        jne      G_M1897_IG13\n        lea      rcx, bword ptr [r13\u002B0x24]\n        mov      rdi, rcx\n        mov      esi, dword ptr [rdi]\n        mov      edi, dword ptr [rdi\u002B0x04]\n        cmp      esi, eax\n        jne      G_M1897_IG13\n        cmp      edi, r8d\n        jne      G_M1897_IG13\n        mov      rdi, gword ptr [r14\u002B0xA0]\n        vmovups  xmm0, xmmword ptr [rcx]\n        test     rdi, rdi\n        je       G_M1897_IG18\n        cmp      dword ptr [rdi\u002B0x08], 0\n        je       G_M1897_IG18\n        mov      gword ptr [rbp-0x58], rdi\n        vmovups  xmmword ptr [rbp-0x50], xmm0\n        lea      rdi, [rsp]\n        lea      rsi, [rbp-0x58]\n        mov      rcx, gword ptr [rsi]\n        mov      gword ptr [rsp], rcx\n        add      rsi, 8\n        add      rdi, 8\n        movsq    \n        movsq    \n        mov      rdi, r15\n        mov      rsi, r13\n        mov      rdx, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.CalcEngine.DependencyTree:AddFormula(ClosedXML.Excel.XLBookArea,ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.FormulaDependencies:this\n        call     [rax]ClosedXML.Excel.CalcEngine.DependencyTree:AddFormula(ClosedXML.Excel.XLBookArea,ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.FormulaDependencies:this\n        jmp      G_M1897_IG13\n \t\t\t\t\t\t;; size=130 bbWeight=8 PerfScore 250.00\n G_M1897_IG16:\n        mov      rcx, gword ptr [r14\u002B0xA0]\n        test     rcx, rcx\n        je       SHORT G_M1897_IG17\n        cmp      dword ptr [rcx\u002B0x08], 0\n        je       SHORT G_M1897_IG17\n        mov      gword ptr [rbp-0x40], rcx\n        mov      dword ptr [rbp-0x38], eax\n        mov      dword ptr [rbp-0x34], r8d\n        mov      dword ptr [rbp-0x30], eax\n        mov      dword ptr [rbp-0x2C], r8d\n        lea      rdi, [rsp]\n        lea      rsi, [rbp-0x40]\n        mov      rcx, gword ptr [rsi]\n        mov      gword ptr [rsp], rcx\n        add      rsi, 8\n        add      rdi, 8\n        movsq    \n        movsq    \n        mov      rdi, r15\n        mov      rsi, r13\n        mov      rdx, rbx\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.CalcEngine.DependencyTree:AddFormula(ClosedXML.Excel.XLBookArea,ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.FormulaDependencies:this\n        call     [rax]ClosedXML.Excel.CalcEngine.DependencyTree:AddFormula(ClosedXML.Excel.XLBookArea,ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.FormulaDependencies:this\n        jmp      G_M1897_IG13\n \t\t\t\t\t\t;; size=89 bbWeight=8 PerfScore 190.00\n G_M1897_IG17:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027name\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M1897_IG18:\n        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException\n        call     CORINFO_HELP_NEWSFAST\n        mov      r15, rax\n        mov      rdi, r15\n        mov      rsi, 0xD1FFAB1E      ; \u0027name\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String):this\n        call     [rax]System.ArgumentException:.ctor(System.String):this\n        mov      rdi, r15\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M1897_IG19:\n        mov      rdi, 0xD1FFAB1E      ; System.ObjectDisposedException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Enumerator\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ObjectDisposedException:.ctor(System.String):this\n        call     [rax]System.ObjectDisposedException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M1897_IG20:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n G_M1897_IG21:\n        mov      rdi, gword ptr [rbp-0x78]\n        add      rdi, 8\n        mov      eax, 1\n        xchg     dword ptr [rdi], eax\n        test     eax, eax\n        jne      G_M1897_IG10\n \t\t\t\t\t\t;; size=23 bbWeight=4 PerfScore 115.00\n G_M1897_IG22:\n        mov      rdi, gword ptr [rbp-0x78]\n        mov      byte  ptr [rdi\u002B0x0C], 1\n        jmp      G_M1897_IG10\n \t\t\t\t\t\t;; size=13 bbWeight=2 PerfScore 8.00\n G_M1897_IG23:\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M1897_IG12\n \t\t\t\t\t\t;; size=27 bbWeight=0 PerfScore 0.00\n G_M1897_IG24:\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this\n        call     [r11]System.IDisposable:Dispose():this\n        mov      rax, r15\n \t\t\t\t\t\t;; size=20 bbWeight=1 PerfScore 4.50\n G_M1897_IG25:\n        add      rsp, 104\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M1897_IG26:\n        sub      rsp, 24\n \t\t\t\t\t\t;; size=4 bbWeight=0 PerfScore 0.00\n G_M1897_IG27:\n        cmp      qword ptr [rbp-0x70], 0\n        je       SHORT G_M1897_IG28\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this\n        call     [r11]System.IDisposable:Dispose():this\n \t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n G_M1897_IG28:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n G_M1897_IG29:\n        add      rsp, 24\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n G_M1897_IG30:\n        sub      rsp, 24\n \t\t\t\t\t\t;; size=4 bbWeight=0 PerfScore 0.00\n G_M1897_IG31:\n        mov      rdi, gword ptr [rbp-0x78]\n        add      rdi, 8\n        mov      r11d, 1\n        xchg     dword ptr [rdi], r11d\n        test     r11d, r11d\n        jne      SHORT G_M1897_IG32\n        mov      rdi, gword ptr [rbp-0x78]\n        mov      byte  ptr [rdi\u002B0x0C], 1\n \t\t\t\t\t\t;; size=30 bbWeight=0 PerfScore 0.00\n G_M1897_IG32:\n        add      rsp, 24\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n G_M1897_IG33:\n        sub      rsp, 24\n \t\t\t\t\t\t;; size=4 bbWeight=0 PerfScore 0.00\n G_M1897_IG34:\n        cmp      qword ptr [rbp-0x70], 0\n        je       SHORT G_M1897_IG35\n        mov      rdi, gword ptr [rbp-0x70]\n        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this\n        call     [r11]System.IDisposable:Dispose():this\n \t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n G_M1897_IG35:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n G_M1897_IG36:\n        add      rsp, 24\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1399, prolog size 45, PerfScore 1749.83, instruction count 315, allocated bytes for code 1399 (MethodHash=61fbf896) for method ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)\n\u002B; Total bytes of code 1386, prolog size 45, PerfScore 1737.83, instruction count 313, allocated bytes for code 1386 (MethodHash=61fbf896) for method ClosedXML.Excel.CalcEngine.DependencyTree:CreateFrom(ClosedXML.Excel.XLWorkbook):ClosedXML.Excel.CalcEngine.DependencyTree (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1399,"DiffBytes":1386},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)","Category":"improvement","Description":"263 -\u003E 231 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,136 \u002B1,129 @@\n ; Assembly listing for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T02] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V01 arg1         [V01,T03] (  3,  3   )     int  -\u003E  rsi         single-def\n ;* V02 arg2         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V04 tmp1         [V04,T11] (  4,  2.50)     ref  -\u003E  rax         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V05 tmp2         [V05,T00] (  8, 10   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n\u002B;  V05 tmp2         [V05,T00] (  9, 11   )     int  -\u003E  r15         \u0022Inlining Arg\u0022\n ;  V06 tmp3         [V06,T01] (  6,  8   )     ref  -\u003E  rbx         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.TypeSpecMD]\u003E\n ;  V07 tmp4         [V07,T04] (  7,  3.50)     ref  -\u003E  r14         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n-;  V09 tmp6         [V09,T07] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V09 tmp6         [V09,T12] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;  V10 tmp7         [V10    ] (  8,  4   )  struct ( 8) [rbp-0x20]  do-not-enreg[XS] addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V11 tmp8         [V11,T13] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V12 tmp9         [V12,T12] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V11 tmp8         [V11,T14] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V12 tmp9         [V12,T13] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V13 tmp10        [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V14 tmp11        [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.TypeSpecMD\u003E\n ;  V15 tmp12        [V15,T05] (  2,  1.50)     ref  -\u003E  rdx         single-def \u0022field V02.Type (fldOffset=0x0)\u0022 P-INDEP\n ;  V16 tmp13        [V16,T06] (  2,  1.50)     ref  -\u003E  rcx         single-def \u0022field V02.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V17 tmp14        [V17    ] (  8,  4   )     int  -\u003E  [rbp-0x20]  do-not-enreg[X] addr-exposed \u0022field V10.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V18 tmp15        [V18,T08] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V19 tmp16        [V19,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V20 rat0         [V20,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V18 tmp15        [V18,T07] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V19 tmp16        [V19,T08] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V20 tmp17        [V20,T09] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n\u002B;  V21 rat0         [V21,T10] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 8\n \n G_M52865_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     rbx\n        push     rax\n        lea      rbp, [rsp\u002B0x20]\n \t\t\t\t\t\t;; size=12 bbWeight=1 PerfScore 5.50\n G_M52865_IG02:\n        mov      rbx, gword ptr [rdi\u002B0x1C8]\n        lea      r15d, [rsi-0x01]\n        cmp      r15d, dword ptr [rbx\u002B0x18]\n        jae      G_M52865_IG09\n \t\t\t\t\t\t;; size=21 bbWeight=1 PerfScore 5.50\n G_M52865_IG03:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rsi\u002B0x08]\n-       jae      G_M52865_IG12\n\u002B       jae      G_M52865_IG11\n        mov      edi, r15d\n        cmp      qword ptr [rsi\u002B8*rdi\u002B0x10], 0\n        jne      G_M52865_IG07\n        mov      rax, gword ptr [rbx\u002B0x10]\n        lea      esi, [r15\u002B0x01]\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r14, rax\n        cmp      byte  ptr [r14], r14b\n        xor      edi, edi\n        mov      dword ptr [rbp-0x20], edi\n \t\t\t\t\t\t;; size=55 bbWeight=0.50 PerfScore 9.62\n G_M52865_IG04:\n        mov      dword ptr [rbp-0x20], edi\n        cmp      dword ptr [rbp-0x20], 100\n        jge      SHORT G_M52865_IG06\n        mov      edi, dword ptr [rbp-0x20]\n        inc      edi\n        mov      dword ptr [rbp-0x20], edi\n        cmp      byte  ptr [r14\u002B0x34], 0\n        jne      SHORT G_M52865_IG05\n        mov      rdi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n        call     [rax]dnlib.DotNet.TypeSpec:InitializeTypeSigAndExtraData():this\n \t\t\t\t\t\t;; size=39 bbWeight=0.50 PerfScore 5.88\n G_M52865_IG05:\n        mov      rsi, gword ptr [r14\u002B0x10]\n        lea      rdi, [rbp-0x20]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameterInternal(dnlib.DotNet.TypeSig):bool:this\n        mov      edi, dword ptr [rbp-0x20]\n        dec      edi\n        mov      dword ptr [rbp-0x20], edi\n        test     eax, eax\n        jne      SHORT G_M52865_IG08\n \t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 4.62\n G_M52865_IG06:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n\u002B       cmp      r15d, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M52865_IG11\n        mov      esi, r15d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.TypeSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M52865_IG11\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r14\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=28 bbWeight=0.50 PerfScore 3.88\n G_M52865_IG07:\n        mov      rax, gword ptr [rbx\u002B0x08]\n        cmp      r15d, dword ptr [rax\u002B0x08]\n-       jae      SHORT G_M52865_IG12\n\u002B       jae      SHORT G_M52865_IG11\n        mov      ecx, r15d\n        mov      rax, gword ptr [rax\u002B8*rcx\u002B0x10]\n        jmp      SHORT G_M52865_IG10\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 4.62\n G_M52865_IG08:\n        mov      rax, r14\n        jmp      SHORT G_M52865_IG10\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 1.12\n G_M52865_IG09:\n        xor      rax, rax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M52865_IG10:\n        add      rsp, 8\n        pop      rbx\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=11 bbWeight=1 PerfScore 3.25\n G_M52865_IG11:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M52865_IG12:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 263, prolog size 12, PerfScore 44.62, instruction count 75, allocated bytes for code 263 (MethodHash=7c29317e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n\u002B; Total bytes of code 231, prolog size 12, PerfScore 44.12, instruction count 69, allocated bytes for code 231 (MethodHash=7c29317e) for method dnlib.DotNet.ModuleDefMD:ResolveTypeSpec(uint,dnlib.DotNet.GenericParamContext):dnlib.DotNet.TypeSpec:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":263,"DiffBytes":231},{"Assembly":"ClosedXML.dasm","Method":"ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)","Category":"improvement","Description":"525 -\u003E 515 bytes (-10)","ExtraInfo":null,"Diff":"@@ -1,227 \u002B1,227 @@\n ; Assembly listing for method ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 14 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n-;  V00 this         [V00,T15] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.XLCellsCollection\u003E\n-;  V01 arg1         [V01,T12] (  3,  4   )     ref  -\u003E  rbx         class-hnd single-def \u003CSystem.String\u003E\n-;  V02 arg2         [V02,T13] (  3,  4   )     ref  -\u003E  r15         class-hnd single-def \u003CSystem.String\u003E\n\u002B;  V00 this         [V00,T16] (  3,  3   )     ref  -\u003E  rdi         this class-hnd single-def \u003CClosedXML.Excel.XLCellsCollection\u003E\n\u002B;  V01 arg1         [V01,T13] (  3,  4   )     ref  -\u003E  rbx         class-hnd single-def \u003CSystem.String\u003E\n\u002B;  V02 arg2         [V02,T14] (  3,  4   )     ref  -\u003E  r15         class-hnd single-def \u003CSystem.String\u003E\n ;  V03 loc0         [V03,T00] ( 10, 25.50)     ref  -\u003E  [rbp-0x38]  class-hnd exact EH-live single-def \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n-;  V04 loc1         [V04,T11] (  2,  8   )   byref  -\u003E  rax        \n\u002B;  V04 loc1         [V04,T12] (  2,  8   )   byref  -\u003E  rdi        \n ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    \u003CClosedXML.Excel.XLSheetPoint\u003E\n ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V07 tmp1         [V07    ] (  0,  0   )  struct (16) zero-ref    \u0022location for address-of(RValue)\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V08 tmp2         [V08,T16] (  2,  4   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.FormulaSlice\u003E\n-;  V09 tmp3         [V09,T19] (  2,  4   )  struct (16) [rbp-0x30]  do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n-;  V10 tmp4         [V10,T04] (  9, 18   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V08 tmp2         [V08,T17] (  2,  4   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.FormulaSlice\u003E\n\u002B;  V09 tmp3         [V09,T20] (  2,  4   )  struct (16) [rbp-0x30]  do-not-enreg[SF] \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetRange\u003E\n\u002B;  V10 tmp4         [V10,T06] (  9, 18   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V11 tmp5         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V12 tmp6         [V12,T17] (  2,  4   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n\u002B;  V12 tmp6         [V12,T18] (  2,  4   )     ref  -\u003E  r14         class-hnd single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\u003E\n ;* V13 tmp7         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601\u002BLutEnumerator[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]]\u003E\n ;* V14 tmp8         [V14    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[ClosedXML.Excel.XLCellFormula,ClosedXML.Excel.XLCellFormula]\u003E\n-;  V15 tmp9         [V15,T18] (  2,  4   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n-;* V16 tmp10        [V16,T24] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;* V17 tmp11        [V17,T25] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V18 tmp12        [V18,T30] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n\u002B;  V15 tmp9         [V15,T19] (  2,  4   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.Slice\u00601\u002BLut\u00601[System.__Canon,System.__Canon]\u003E\n\u002B;* V16 tmp10        [V16,T25] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n\u002B;* V17 tmp11        [V17,T26] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n\u002B;  V18 tmp12        [V18,T31] (  3,  0   )     ref  -\u003E  rbx         class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n ;  V19 tmp13        [V19,T01] (  3, 24   )   byref  -\u003E  rdi         \u0022Inlining Arg\u0022\n-;  V20 tmp14        [V20,T05] (  3, 16   )     int  -\u003E  rsi         \u0022impAppendStmt\u0022\n\u002B;  V20 tmp14        [V20,T07] (  3, 16   )     int  -\u003E  rsi         \u0022impAppendStmt\u0022\n ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u0022NewObj constructor temp\u0022 \u003CClosedXML.Excel.XLSheetPoint\u003E\n ;* V22 tmp16        [V22    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022NewObj constructor temp\u0022 \u003CSystem.ObjectDisposedException\u003E\n ;* V23 tmp17        [V23    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V24 tmp18        [V24    ] (  0,  0   )   byref  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V25 tmp19        [V25,T06] (  3, 16   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n\u002B;  V25 tmp19        [V25,T08] (  3, 16   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;* V26 tmp20        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLCellFormula\u003E\n ;* V27 tmp21        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLCellFormula\u003E\n-;* V28 tmp22        [V28,T26] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n\u002B;* V28 tmp22        [V28,T27] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V29 tmp23        [V29    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003CClosedXML.Excel.XLSheetPoint\u003E\n ;* V30 tmp24        [V30    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V05.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V31 tmp25        [V31    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V05.Column (fldOffset=0x4)\u0022 P-INDEP\n-;  V32 tmp26        [V32,T22] (  2,  2   )     ref  -\u003E  rsi         single-def \u0022field V11._lut (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V32 tmp26        [V32,T23] (  2,  2   )     ref  -\u003E  rsi         single-def \u0022field V11._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V33 tmp27        [V33    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V11._endIdx (fldOffset=0x8)\u0022 P-INDEP\n ;* V34 tmp28        [V34    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V11._idx (fldOffset=0xc)\u0022 P-INDEP\n ;* V35 tmp29        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V13._lut (fldOffset=0x0)\u0022 P-INDEP\n ;* V36 tmp30        [V36    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V13._endIdx (fldOffset=0x8)\u0022 P-INDEP\n-;* V37 tmp31        [V37,T27] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V13._idx (fldOffset=0xc)\u0022 P-INDEP\n\u002B;* V37 tmp31        [V37,T28] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V13._idx (fldOffset=0xc)\u0022 P-INDEP\n ;* V38 tmp32        [V38    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V21.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V39 tmp33        [V39    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V21.Column (fldOffset=0x4)\u0022 P-INDEP\n ;* V40 tmp34        [V40    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V29.Row (fldOffset=0x0)\u0022 P-INDEP\n ;* V41 tmp35        [V41    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V29.Column (fldOffset=0x4)\u0022 P-INDEP\n-;* V42 tmp36        [V42,T28] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V09.[000..004)\u0022\n-;* V43 tmp37        [V43,T29] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V09.[008..012)\u0022\n-;  V44 tmp38        [V44,T20] (  2,  4   )     int  -\u003E  rax         \u0022V07.[000..004)\u0022\n-;  V45 tmp39        [V45,T21] (  2,  4   )     int  -\u003E  rcx         \u0022V07.[004..008)\u0022\n-;  V46 tmp40        [V46,T09] (  3, 12   )   byref  -\u003E  rcx         \u0022Spilling address for field-by-field copy\u0022\n\u002B;* V42 tmp36        [V42,T29] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V09.[000..004)\u0022\n\u002B;* V43 tmp37        [V43,T30] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022V09.[008..012)\u0022\n\u002B;  V44 tmp38        [V44,T21] (  2,  4   )     int  -\u003E  rax         \u0022V07.[000..004)\u0022\n\u002B;  V45 tmp39        [V45,T22] (  2,  4   )     int  -\u003E  rcx         \u0022V07.[004..008)\u0022\n\u002B;  V46 tmp40        [V46,T10] (  3, 12   )   byref  -\u003E  rcx         \u0022Spilling address for field-by-field copy\u0022\n ;  V47 tmp41        [V47,T02] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V48 tmp42        [V48,T03] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n-;  V49 tmp43        [V49,T07] (  2, 16   )     ref  -\u003E  rdi         \u0022argument with side effect\u0022\n-;  V50 tmp44        [V50,T14] (  3,  6   )     ref  -\u003E  rcx         \u0022Field obj\u0022\n-;  V51 cse0         [V51,T10] (  3, 12   )     int  -\u003E  rdx         \u0022CSE #02: moderate\u0022\n-;  V52 cse1         [V52,T08] (  4, 12   )     ref  -\u003E  rdi         \u0022CSE #03: moderate\u0022\n-;  V53 cse2         [V53,T23] (  2,  2   )    long  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n\u002B;  V48 tmp42        [V48,T04] (  3, 24   )     int  -\u003E  rdi         \u0022index expr\u0022\n\u002B;  V49 tmp43        [V49,T03] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V50 tmp44        [V50,T05] (  3, 24   )     int  -\u003E  rdx         \u0022index expr\u0022\n\u002B;  V51 tmp45        [V51,T15] (  3,  6   )     ref  -\u003E  rcx         \u0022Field obj\u0022\n\u002B;  V52 cse0         [V52,T11] (  3, 12   )     int  -\u003E  rdi         \u0022CSE #02: moderate\u0022\n\u002B;  V53 cse1         [V53,T09] (  4, 12   )     ref  -\u003E  rdi         \u0022CSE #03: moderate\u0022\n\u002B;  V54 cse2         [V54,T24] (  2,  2   )    long  -\u003E  rdi         \u0022CSE #01: moderate\u0022\n ;\n ; Lcl frame size = 32\n \n G_M33293_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     rbx\n        sub      rsp, 32\n        lea      rbp, [rsp\u002B0x40]\n        mov      rbx, rsi\n        mov      r15, rdx\n \t\t\t\t\t\t;; size=23 bbWeight=1 PerfScore 6.25\n G_M33293_IG02:\n        mov      r14, gword ptr [rdi\u002B0x20]\n        mov      rdi, 0xD1FFAB1E      ; static handle\n        vmovups  xmm0, xmmword ptr [rdi]\n        vmovups  xmmword ptr [rbp-0x30], xmm0\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601\u002BEnumerator[ClosedXML.Excel.XLCellFormula]\n        call     CORINFO_HELP_NEWSFAST\n        mov      r13, rax\n        mov      r14, gword ptr [r14\u002B0x18]\n        vmovups  xmm0, xmmword ptr [rbp-0x30]\n        vmovups  xmmword ptr [r13\u002B0x10], xmm0\n        mov      dword ptr [r13\u002B0x10], 1\n        mov      dword ptr [r13\u002B0x18], 0xD1FFAB1E\n        mov      rdi, 0xD1FFAB1E      ; global ptr\n        test     byte  ptr [rdi], 1\n        je       G_M33293_IG13\n \t\t\t\t\t\t;; size=91 bbWeight=1 PerfScore 16.00\n G_M33293_IG03:\n        mov      rdi, 0xD1FFAB1E      ; data for ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]:Dummy\n        mov      rsi, gword ptr [rdi]\n        lea      rdi, bword ptr [r13\u002B0x20]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r13\u002B0x28], rdi\n        mov      rsi, gword ptr [r14\u002B0x10]\n        lea      rdi, bword ptr [r13\u002B0x30]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r13\u002B0x38], rdi\n        mov      gword ptr [rbp-0x38], r13\n \t\t\t\t\t\t;; size=67 bbWeight=1 PerfScore 10.75\n G_M33293_IG04:\n        mov      rdi, gword ptr [rbp-0x38]\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        call     [rax]ClosedXML.Excel.Slice\u00601\u002BEnumerator[System.__Canon]:MoveNext():bool:this\n        test     eax, eax\n        je       G_M33293_IG10\n \t\t\t\t\t\t;; size=24 bbWeight=8 PerfScore 44.00\n G_M33293_IG05:\n        mov      r13, gword ptr [rbp-0x38]\n        cmp      byte  ptr [r13\u002B0x0C], 0\n        jne      G_M33293_IG08\n        lea      rdi, bword ptr [r13\u002B0x20]\n        mov      rsi, gword ptr [rdi]\n        mov      rsi, gword ptr [rsi\u002B0x08]\n-       mov      edx, dword ptr [rdi\u002B0x0C]\n-       mov      edi, edx\n-       sar      edi, 5\n\u002B       mov      edi, dword ptr [rdi\u002B0x0C]\n\u002B       mov      edx, edi\n\u002B       sar      edx, 5\n\u002B       cmp      edx, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M33293_IG09\n\u002B       shl      rdx, 4\n\u002B       mov      rsi, gword ptr [rsi\u002Brdx\u002B0x10]\n\u002B       and      edi, 31\n        cmp      edi, dword ptr [rsi\u002B0x08]\n        jae      G_M33293_IG09\n-       shl      rdi, 4\n-       mov      rdi, gword ptr [rsi\u002Brdi\u002B0x10]\n-       and      edx, 31\n-       mov      esi, edx\n-       mov      rdx, 0xD1FFAB1E      ; ClosedXML.Excel.XLCellFormula\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n\u002B       lea      rdi, bword ptr [rsi\u002B8*rdi\u002B0x10]\n        mov      esi, dword ptr [r13\u002B0x3C]\n        inc      esi\n        mov      edx, dword ptr [r13\u002B0x2C]\n        inc      edx\n-       mov      rdi, gword ptr [rax]\n\u002B       mov      rdi, gword ptr [rdi]\n        cmp      byte  ptr [rdi\u002B0x12], 0\n        je       SHORT G_M33293_IG07\n-\t\t\t\t\t\t;; size=100 bbWeight=4 PerfScore 121.00\n\u002B\t\t\t\t\t\t;; size=90 bbWeight=4 PerfScore 122.00\n G_M33293_IG06:\n        mov      rcx, rdi\n        cmp      byte  ptr [rcx], cl\n        add      rcx, 36\n        mov      eax, dword ptr [rcx]\n        mov      ecx, dword ptr [rcx\u002B0x04]\n        cmp      eax, esi\n        jne      G_M33293_IG04\n        cmp      ecx, edx\n        jne      G_M33293_IG04\n \t\t\t\t\t\t;; size=30 bbWeight=2 PerfScore 18.00\n G_M33293_IG07:\n        mov      r13, gword ptr [rbp-0x38]\n        mov      edx, edx\n        shl      rdx, 32\n        mov      esi, esi\n        or       rsi, rdx\n        mov      rdx, rbx\n        mov      rcx, r15\n        mov      rax, 0xD1FFAB1E      ; code for ClosedXML.Excel.XLCellFormula:RenameSheet(ClosedXML.Excel.XLSheetPoint,System.String,System.String):this\n        call     [rax]ClosedXML.Excel.XLCellFormula:RenameSheet(ClosedXML.Excel.XLSheetPoint,System.String,System.String):this\n        jmp      G_M33293_IG04\n \t\t\t\t\t\t;; size=38 bbWeight=2 PerfScore 16.00\n G_M33293_IG08:\n        mov      rdi, 0xD1FFAB1E      ; System.ObjectDisposedException\n        call     CORINFO_HELP_NEWSFAST\n        mov      rbx, rax\n        mov      rdi, rbx\n        mov      rsi, 0xD1FFAB1E      ; \u0027Enumerator\u0027\n        mov      rax, 0xD1FFAB1E      ; code for System.ObjectDisposedException:.ctor(System.String):this\n        call     [rax]System.ObjectDisposedException:.ctor(System.String):this\n        mov      rdi, rbx\n        call     CORINFO_HELP_THROW\n        int3     \n \t\t\t\t\t\t;; size=52 bbWeight=0 PerfScore 0.00\n G_M33293_IG09:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n G_M33293_IG10:\n        mov      r13, gword ptr [rbp-0x38]\n        lea      rax, bword ptr [r13\u002B0x08]\n        mov      ecx, 1\n        xchg     dword ptr [rax], ecx\n        test     ecx, ecx\n        jne      SHORT G_M33293_IG12\n \t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 29.00\n G_M33293_IG11:\n        mov      byte  ptr [r13\u002B0x0C], 1\n \t\t\t\t\t\t;; size=5 bbWeight=0.50 PerfScore 0.50\n G_M33293_IG12:\n        add      rsp, 32\n        pop      rbx\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=13 bbWeight=1 PerfScore 3.75\n G_M33293_IG13:\n        mov      rdi, 0xD1FFAB1E      ; ClosedXML.Excel.Slice\u00601[ClosedXML.Excel.XLCellFormula]\n        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE\n        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE\n        jmp      G_M33293_IG03\n \t\t\t\t\t\t;; size=27 bbWeight=0 PerfScore 0.00\n G_M33293_IG14:\n        push     rax\n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n G_M33293_IG15:\n        mov      r13, gword ptr [rbp-0x38]\n        lea      rax, bword ptr [r13\u002B0x08]\n        mov      ecx, 1\n        xchg     dword ptr [rax], ecx\n        test     ecx, ecx\n        jne      SHORT G_M33293_IG16\n        mov      byte  ptr [r13\u002B0x0C], 1\n \t\t\t\t\t\t;; size=24 bbWeight=0 PerfScore 0.00\n G_M33293_IG16:\n        add      rsp, 8\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 525, prolog size 23, PerfScore 265.25, instruction count 125, allocated bytes for code 525 (MethodHash=11977df2) for method ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)\n\u002B; Total bytes of code 515, prolog size 23, PerfScore 266.25, instruction count 124, allocated bytes for code 515 (MethodHash=11977df2) for method ClosedXML.Excel.XLCellsCollection:ClosedXML.Excel.IWorkbookListener.OnSheetRenamed(System.String,System.String):this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":525,"DiffBytes":515},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)","Category":"improvement","Description":"1,092 -\u003E 1,060 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,425 \u002B1,418 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; partially interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 21 single block inlinees; 13 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 18, 10   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T01] ( 13,  8   )     ref  -\u003E  r15         class-hnd single-def \u003Cdnlib.DotNet.MethodSpec\u003E\n ;  V02 arg2         [V02,T08] (  3,  2.50)   ubyte  -\u003E  r14         single-def\n ;  V03 loc0         [V03,T09] (  8,  4   )     int  -\u003E  r13         ld-addr-op\n ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V06 tmp1         [V06,T26] (  4,  2   )     int  -\u003E  r13        \n ;  V07 tmp2         [V07,T19] (  3,  3   )     int  -\u003E  r14         \u0022impAppendStmt\u0022\n ;  V08 tmp3         [V08,T28] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;  V09 tmp4         [V09,T29] (  2,  2   )     ref  -\u003E  rsi         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;  V10 tmp5         [V10    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V11 tmp6         [V11    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp7         [V12,T30] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V13 tmp8         [V13,T23] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V15 tmp10        [V15,T31] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n-;  V16 tmp11        [V16,T41] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n\u002B;  V16 tmp11        [V16,T42] (  3,  1.50)   ubyte  -\u003E  rsi         \u0022Inline return value spill temp\u0022\n ;  V17 tmp12        [V17,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n-;  V18 tmp13        [V18,T39] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n-;  V19 tmp14        [V19,T36] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V18 tmp13        [V18,T40] (  3,  1.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V19 tmp14        [V19,T37] (  2,  2   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V20 tmp15        [V20    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V21 tmp16        [V21,T04] (  6,  6   )     ref  -\u003E  r14         class-hnd exact single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V22 tmp17        [V22,T24] (  4,  2   )     ref  -\u003E  r12         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V23 tmp18        [V23,T02] (  8,  8   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n\u002B;  V23 tmp18        [V23,T02] (  9,  9   )     int  -\u003E  r13         \u0022Inlining Arg\u0022\n ;* V24 tmp19        [V24    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V25 tmp20        [V25,T25] (  4,  2   )     ref  -\u003E  r12         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V26 tmp21        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V27 tmp22        [V27,T12] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n\u002B;  V27 tmp22        [V27,T32] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n ;* V28 tmp23        [V28    ] (  0,  0   )   ubyte  -\u003E  zero-ref    single-def \u0022Inline return value spill temp\u0022\n ;  V29 tmp24        [V29,T21] (  4,  2.75)     ref  -\u003E  rsi         single-def \u0022ISINST eval op1\u0022\n ;  V30 tmp25        [V30,T22] (  4,  2.75)     ref  -\u003E  rsi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V31 tmp26        [V31    ] (  7,  3.50)  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V32 tmp27        [V32,T42] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V33 tmp28        [V33,T37] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V32 tmp27        [V32,T43] (  2,  1   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V33 tmp28        [V33,T38] (  2,  2   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V34 tmp29        [V34    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V35 tmp30        [V35    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;  V36 tmp31        [V36,T20] (  3,  3   )     int  -\u003E  rax         \u0022Inlining Arg\u0022\n-;  V37 tmp32        [V37,T38] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n\u002B;  V37 tmp32        [V37,T39] (  2,  2   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;* V38 tmp33        [V38    ] (  0,  0   )  struct ( 8) zero-ref    \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;  V39 tmp34        [V39,T10] (  4,  4   )     int  -\u003E  rdi         \u0022Inlining Arg\u0022\n ;  V40 tmp35        [V40,T06] (  5,  5   )     ref  -\u003E  rsi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n-;  V41 tmp36        [V41,T32] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n\u002B;  V41 tmp36        [V41,T33] (  2,  2   )     ref  -\u003E  rdi         class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.MethodSpec]\u003E\n ;* V42 tmp37        [V42    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n-;  V43 tmp38        [V43,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V43 tmp38        [V43,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;* V44 tmp39        [V44    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;  V45 tmp40        [V45,T07] (  9,  4.50)     ref  -\u003E  r14         ld-addr-op class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V46 tmp41        [V46    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022Inlining Arg\u0022\n ;* V47 tmp42        [V47    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022non-inline candidate call\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V48 tmp43        [V48    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V49 tmp44        [V49    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V50 tmp45        [V50    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;* V51 tmp46        [V51    ] (  0,  0   )     ref  -\u003E  zero-ref   \n ;  V52 tmp47        [V52,T05] (  6,  6   )     ref  -\u003E  r12         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[dnlib.DotNet.Emit.Instruction,uint]\u003E\n-;  V53 tmp48        [V53,T43] (  3,  1.50)     int  -\u003E  [rbp-0x44]  spill-single-def \u0022Inline stloc first use temp\u0022\n\u002B;  V53 tmp48        [V53,T44] (  3,  1.50)     int  -\u003E  [rbp-0x44]  spill-single-def \u0022Inline stloc first use temp\u0022\n ;  V54 tmp49        [V54,T03] (  7,  7   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.Writer.SerializerMethodContext]\u003E\n-;  V55 tmp50        [V55,T40] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n\u002B;  V55 tmp50        [V55,T41] (  3,  1.50)     ref  -\u003E  rbx         class-hnd single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext[]\u003E\n ;  V56 tmp51        [V56,T27] (  4,  2   )     int  -\u003E  r15         single-def \u0022Inline stloc first use temp\u0022\n ;* V57 tmp52        [V57    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.SerializerMethodContext\u003E\n ;* V58 tmp53        [V58    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V59 tmp54        [V59    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V04.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n ;* V60 tmp55        [V60    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V20.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V61 tmp56        [V61    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V20.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V62 tmp57        [V62    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V63 tmp58        [V63    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V24.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V64 tmp59        [V64    ] (  7,  3.50)     int  -\u003E  [rbp-0x40]  do-not-enreg[X] addr-exposed \u0022field V31.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n ;* V65 tmp60        [V65    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V38.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V66 tmp61        [V66    ] (  0,  0   )     int  -\u003E  zero-ref    single-def \u0022field V38.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n-;  V67 tmp62        [V67,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V68 tmp63        [V68,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V69 tmp64        [V69,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n-;  V70 tmp65        [V70,T17] (  3,  3   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n-;  V71 tmp66        [V71,T33] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n-;  V72 tmp67        [V72,T34] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n-;  V73 tmp68        [V73,T35] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n-;  V74 cse0         [V74,T45] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n-;  V75 cse1         [V75,T44] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n-;  V76 rat0         [V76,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V67 tmp62        [V67,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V68 tmp63        [V68,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V69 tmp64        [V69,T15] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V70 tmp65        [V70,T16] (  3,  3   )     ref  -\u003E  rdx         single-def \u0022arr expr\u0022\n\u002B;  V71 tmp66        [V71,T17] (  3,  3   )   byref  -\u003E  rdi         single-def \u0022BlockOp address local\u0022\n\u002B;  V72 tmp67        [V72,T34] (  2,  2   )     ref  -\u003E  rcx         single-def \u0022argument with side effect\u0022\n\u002B;  V73 tmp68        [V73,T35] (  2,  2   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V74 tmp69        [V74,T36] (  2,  2   )     ref  -\u003E   r8         single-def \u0022argument with side effect\u0022\n\u002B;  V75 cse0         [V75,T46] (  2,  1   )     int  -\u003E  rsi         \u0022CSE #05: conservative\u0022\n\u002B;  V76 cse1         [V76,T45] (  3,  1.50)     int  -\u003E  rdi         \u0022CSE #02: conservative\u0022\n\u002B;  V77 rat0         [V77,T18] (  3,  3   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 40\n \n G_M53142_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 40\n        lea      rbp, [rsp\u002B0x50]\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r15, rsi\n        mov      r14d, edx\n \t\t\t\t\t\t;; size=44 bbWeight=1 PerfScore 10.08\n G_M53142_IG02:\n        test     r15, r15\n        je       G_M53142_IG25\n \t\t\t\t\t\t;; size=9 bbWeight=1 PerfScore 1.25\n G_M53142_IG03:\n        mov      rdi, gword ptr [rbx\u002B0x230]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M53142_IG04\n        xor      r13d, r13d\n        xor      esi, esi\n        jmp      SHORT G_M53142_IG05\n \t\t\t\t\t\t;; size=41 bbWeight=0.50 PerfScore 6.62\n G_M53142_IG04:\n        mov      r13d, dword ptr [rax]\n        mov      esi, 1\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 1.12\n G_M53142_IG05:\n        test     esi, esi\n        jne      G_M53142_IG23\n        test     r14b, r14b\n        je       SHORT G_M53142_IG06\n        mov      r13d, 1\n        jmp      G_M53142_IG16\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 2.38\n G_M53142_IG06:\n        mov      rsi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rsi\u002B0x30], 0x400\n        jne      SHORT G_M53142_IG07\n        xor      r13d, r13d\n        jmp      G_M53142_IG16\n \t\t\t\t\t\t;; size=21 bbWeight=0.50 PerfScore 3.62\n G_M53142_IG07:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13d, dword ptr [r15\u002B0x28]\n        mov      r14, gword ptr [rsi\u002B0x208]\n        dec      r13d\n        cmp      r13d, dword ptr [r14\u002B0x18]\n        jae      G_M53142_IG14\n        mov      rsi, gword ptr [r14\u002B0x08]\n        cmp      r13d, dword ptr [rsi\u002B0x08]\n-       jae      G_M53142_IG29\n\u002B       jae      G_M53142_IG28\n        mov      edx, r13d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M53142_IG13\n        mov      rax, gword ptr [r14\u002B0x10]\n        lea      esi, [r13\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      r12, rax\n        mov      rsi, gword ptr [r12\u002B0x10]\n        test     rsi, rsi\n        je       SHORT G_M53142_IG10\n \t\t\t\t\t\t;; size=92 bbWeight=0.50 PerfScore 14.50\n G_M53142_IG08:\n        mov      rdi, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rsi], rdi\n        jne      SHORT G_M53142_IG10\n \t\t\t\t\t\t;; size=15 bbWeight=0.25 PerfScore 0.81\n G_M53142_IG09:\n        jmp      SHORT G_M53142_IG11\n \t\t\t\t\t\t;; size=2 bbWeight=0.12 PerfScore 0.25\n G_M53142_IG10:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=0.25 PerfScore 0.06\n G_M53142_IG11:\n        xor      edi, edi\n        mov      dword ptr [rbp-0x40], edi\n        test     rsi, rsi\n        je       SHORT G_M53142_IG12\n        cmp      dword ptr [rbp-0x40], 100\n        jge      SHORT G_M53142_IG12\n        mov      edi, dword ptr [rbp-0x40]\n        inc      edi\n        mov      dword ptr [rbp-0x40], edi\n        mov      rsi, gword ptr [rsi\u002B0x18]\n        lea      rdi, [rbp-0x40]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x40]\n        dec      edi\n        mov      dword ptr [rbp-0x40], edi\n        test     eax, eax\n        je       SHORT G_M53142_IG12\n        jmp      SHORT G_M53142_IG15\n \t\t\t\t\t\t;; size=58 bbWeight=0.50 PerfScore 9.00\n G_M53142_IG12:\n        mov      rdi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M53142_IG28\n        mov      esi, r13d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M53142_IG27\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, r12\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=51 bbWeight=0.50 PerfScore 4.38\n\u002B\t\t\t\t\t\t;; size=32 bbWeight=0.50 PerfScore 3.88\n G_M53142_IG13:\n-       mov      rax, gword ptr [r14\u002B0x08]\n-       cmp      r13d, dword ptr [rax\u002B0x08]\n-       jae      G_M53142_IG29\n-       mov      ecx, r13d\n-       mov      r12, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rsi, gword ptr [r14\u002B0x08]\n\u002B       cmp      r13d, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M53142_IG28\n\u002B       mov      edi, r13d\n\u002B       mov      r12, gword ptr [rsi\u002B8*rdi\u002B0x10]\n        jmp      SHORT G_M53142_IG15\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M53142_IG14:\n        xor      r12, r12\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M53142_IG15:\n        cmp      r12, r15\n        sete     r13b\n        movzx    r13, r13b\n \t\t\t\t\t\t;; size=11 bbWeight=0.50 PerfScore 0.50\n G_M53142_IG16:\n        mov      rsi, gword ptr [r15\u002B0x08]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddMethodDefOrRef(dnlib.DotNet.IMethodDefOrRef):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddMethodDefOrRef(dnlib.DotNet.IMethodDefOrRef):uint:this\n        mov      r14d, eax\n        mov      rsi, gword ptr [r15\u002B0x10]\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        test     r13d, r13d\n        jne      SHORT G_M53142_IG17\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        mov      esi, eax\n        shl      rsi, 32\n        mov      eax, r14d\n        or       rsi, rax\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:Add(dnlib.DotNet.MD.RawMethodSpecRow):uint:this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:Add(dnlib.DotNet.MD.RawMethodSpecRow):uint:this\n        mov      r13d, eax\n        jmp      SHORT G_M53142_IG18\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.62\n G_M53142_IG17:\n        mov      edi, dword ptr [r15\u002B0x28]\n        mov      r13d, edi\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x170]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        dec      edi\n        cmp      edi, dword ptr [rsi\u002B0x10]\n-       jae      G_M53142_IG28\n\u002B       jae      G_M53142_IG27\n        mov      rdx, gword ptr [rsi\u002B0x08]\n        cmp      edi, dword ptr [rdx\u002B0x08]\n-       jae      G_M53142_IG29\n\u002B       jae      G_M53142_IG28\n        lea      rdi, bword ptr [rdx\u002B8*rdi\u002B0x10]\n        mov      dword ptr [rdi], r14d\n        mov      dword ptr [rdi\u002B0x04], eax\n        inc      dword ptr [rsi\u002B0x14]\n \t\t\t\t\t\t;; size=60 bbWeight=0.50 PerfScore 11.25\n G_M53142_IG18:\n        mov      rdi, gword ptr [rbx\u002B0x230]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r15\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:TryInsert(System.__Canon,uint,byte):bool:this\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        call     [r11]dnlib.DotNet.IHasCustomAttribute:get_CustomAttributes():dnlib.DotNet.CustomAttributeCollection:this\n        mov      rcx, rax\n        mov      rdi, rbx\n        mov      edx, r13d\n        mov      esi, 43\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomAttributes(byte,uint,dnlib.DotNet.CustomAttributeCollection):this\n        cmp      qword ptr [rbx\u002B0x20], 0\n        je       G_M53142_IG23\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      rdi, rax\n        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        call     [r11]System.Collections.Generic.ICollection\u00601[System.__Canon]:get_Count():int:this\n        test     eax, eax\n        je       G_M53142_IG23\n        mov      rdi, rbx\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AllocSerializerMethodContext():dnlib.DotNet.Writer.SerializerMethodContext:this\n        mov      r14, rax\n        cmp      qword ptr [r14\u002B0x18], 0\n        je       SHORT G_M53142_IG21\n        mov      r12, gword ptr [r14\u002B0x08]\n        mov      eax, dword ptr [r12\u002B0x38]\n        mov      dword ptr [rbp-0x44], eax\n        test     eax, eax\n        jle      SHORT G_M53142_IG19\n        mov      rdi, gword ptr [r12\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array)\n        call     [rcx]System.Array:Clear(System.Array)\n        mov      rdi, 0xD1FFAB1E\n        mov      qword ptr [r12\u002B0x38], rdi\n        xor      edi, edi\n        mov      dword ptr [r12\u002B0x40], edi\n        mov      rdi, gword ptr [r12\u002B0x10]\n        mov      edx, dword ptr [rbp-0x44]\n        xor      esi, esi\n        mov      rax, 0xD1FFAB1E      ; code for System.Array:Clear(System.Array,int,int)\n        call     [rax]System.Array:Clear(System.Array,int,int)\n \t\t\t\t\t\t;; size=232 bbWeight=0.50 PerfScore 28.12\n G_M53142_IG19:\n        xor      rdi, rdi\n        mov      gword ptr [r14\u002B0x18], rdi\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 0.62\n G_M53142_IG20:\n        mov      gword ptr [r14\u002B0x20], rdi\n        mov      byte  ptr [r14\u002B0x2C], 0\n \t\t\t\t\t\t;; size=9 bbWeight=0.50 PerfScore 1.00\n G_M53142_IG21:\n        mov      rdi, r15\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        call     [r11]dnlib.DotNet.IHasCustomDebugInformation:get_CustomDebugInfos():System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]:this\n        mov      r8, rax\n        mov      rsi, r14\n        mov      rdi, rbx\n        mov      ecx, r13d\n        mov      edx, 43\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        call     [rax]dnlib.DotNet.Writer.Metadata:AddCustomDebugInformationCore(dnlib.DotNet.Writer.SerializerMethodContext,byte,uint,System.Collections.Generic.IList\u00601[dnlib.DotNet.Pdb.PdbCustomDebugInfo]):this\n        mov      rdi, gword ptr [rbx\u002B0x1A0]\n        inc      dword ptr [rdi\u002B0x14]\n        mov      rbx, gword ptr [rdi\u002B0x08]\n        mov      r15d, dword ptr [rdi\u002B0x10]\n        mov      esi, dword ptr [rbx\u002B0x08]\n        cmp      esi, r15d\n        ja       SHORT G_M53142_IG22\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        call     [rax]System.Collections.Generic.List\u00601[System.__Canon]:AddWithResize(System.__Canon):this\n        jmp      SHORT G_M53142_IG23\n \t\t\t\t\t\t;; size=88 bbWeight=0.50 PerfScore 12.88\n G_M53142_IG22:\n        lea      esi, [r15\u002B0x01]\n        mov      dword ptr [rdi\u002B0x10], esi\n        mov      edi, r15d\n        lea      rdi, bword ptr [rbx\u002B8*rdi\u002B0x10]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 2.00\n G_M53142_IG23:\n        mov      eax, r13d\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M53142_IG24:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M53142_IG25:\n        mov      rdi, 0xD1FFAB1E      ; \u0027MethodSpec is null\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      rdi, 0xD1FFAB1E      ; const ptr\n        mov      rdi, gword ptr [rdi]\n        mov      gword ptr [rbp-0x38], rdi\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Error\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      edx, edx\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        xor      eax, eax\n \t\t\t\t\t\t;; size=116 bbWeight=0.50 PerfScore 11.75\n G_M53142_IG26:\n        add      rsp, 40\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M53142_IG27:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53142_IG28:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53142_IG29:\n\u002BG_M53142_IG28:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 1092, prolog size 35, PerfScore 143.96, instruction count 274, allocated bytes for code 1092 (MethodHash=25973069) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n\u002B; Total bytes of code 1060, prolog size 35, PerfScore 143.46, instruction count 268, allocated bytes for code 1060 (MethodHash=25973069) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":1092,"DiffBytes":1060},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)","Category":"improvement","Description":"853 -\u003E 821 bytes (-32)","ExtraInfo":null,"Diff":"@@ -1,303 \u002B1,296 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 15 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T00] ( 14,  9   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n ;  V01 arg1         [V01,T05] (  4,  3.50)     ref  -\u003E  r14         class-hnd single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n ;  V02 arg2         [V02,T02] (  8,  5.50)     int  -\u003E  r15         single-def\n ;  V03 loc0         [V03,T21] (  3,  2   )     int  -\u003E  r13         single-def\n-;  V04 loc1         [V04,T24] (  2,  1   )     int  -\u003E  rdi         ld-addr-op\n-;  V05 loc2         [V05,T25] (  2,  1   )     int  -\u003E  r12         single-def\n-;  V06 loc3         [V06,T28] (  2,  0   )     ref  -\u003E  [rbp-0x50]  class-hnd exact EH-live single-def \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V07 loc4         [V07,T27] (  3,  0.50)     ref  -\u003E  [rbp-0x58]  class-hnd EH-live single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n\u002B;  V04 loc1         [V04,T25] (  2,  1   )     int  -\u003E  rdi         ld-addr-op\n\u002B;  V05 loc2         [V05,T26] (  2,  1   )     int  -\u003E  r12         single-def\n\u002B;  V06 loc3         [V06,T29] (  2,  0   )     ref  -\u003E  [rbp-0x50]  class-hnd exact EH-live single-def \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V07 loc4         [V07,T28] (  3,  0.50)     ref  -\u003E  [rbp-0x58]  class-hnd EH-live single-def \u003Cdnlib.DotNet.CallingConventionSig\u003E\n ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;  V09 tmp1         [V09,T07] (  3,  3   )     ref  -\u003E  r13         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V10 tmp2         [V10,T08] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;  V11 tmp3         [V11,T09] (  3,  3   )     ref  -\u003E  r14         class-hnd exact single-def \u0022NewArr temp\u0022 \u003CSystem.Object[]\u003E\n ;  V12 tmp4         [V12,T10] (  3,  3   )     ref  -\u003E  rax         class-hnd exact single-def \u0022Single-def Box Helper\u0022 \u003CSystem.UInt32\u003E\n ;* V13 tmp5         [V13    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V14 tmp6         [V14,T04] (  3,  6   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n ;  V15 tmp7         [V15,T19] (  3,  2.50)   byref  -\u003E  rax         single-def \u0022Inline stloc first use temp\u0022\n ;  V16 tmp8         [V16    ] (  3,  3   )     ref  -\u003E  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V17 tmp9         [V17    ] (  3,  3   )     ref  -\u003E  [rbp-0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n ;  V18 tmp10        [V18,T22] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V19 tmp11        [V19,T17] (  5,  2.50)     ref  -\u003E  rdi        \n ;* V20 tmp12        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V21 tmp13        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V22 tmp14        [V22,T03] (  6,  6   )     ref  -\u003E  [rbp-0x60]  class-hnd exact spill-single-def \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n ;  V23 tmp15        [V23,T06] (  9,  4.50)     ref  -\u003E  r12         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V24 tmp16        [V24,T01] (  8,  8   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V24 tmp16        [V24,T01] (  9,  9   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V25 tmp17        [V25    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V26 tmp18        [V26,T20] (  4,  2   )     ref  -\u003E  [rbp-0x68]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V27 tmp19        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V28 tmp20        [V28,T11] (  3,  3   )   byref  -\u003E  rax         single-def \u0022impAppendStmt\u0022\n-;  V29 tmp21        [V29,T26] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n\u002B;  V28 tmp20        [V28,T23] (  2,  2   )   byref  -\u003E  rdi         single-def \u0022impAppendStmt\u0022\n\u002B;  V29 tmp21        [V29,T27] (  2,  1   )   ubyte  -\u003E  rax         single-def \u0022Inline return value spill temp\u0022\n ;* V30 tmp22        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact single-def \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V31 tmp23        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.Metadata\u002BRows\u00601[dnlib.DotNet.StandAloneSig]\u003E\n-;  V32 tmp24        [V32,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n\u002B;  V32 tmp24        [V32,T11] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[System.__Canon,uint]\u003E\n ;  V33 tmp25        [V33    ] (  3,  3   )     ref  -\u003E  [rbp-0x40]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.String\u003E\n ;  V34 tmp26        [V34    ] (  3,  3   )     ref  -\u003E  [rbp-0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Object[]\u003E\n-;  V35 tmp27        [V35,T23] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n\u002B;  V35 tmp27        [V35,T24] (  2,  2   )     ref  -\u003E  rdi         class-hnd single-def \u0022dup spill\u0022 \u003Cdnlib.DotNet.ILogger\u003E\n ;  V36 tmp28        [V36,T18] (  5,  2.50)     ref  -\u003E  rdi        \n-;  V37 tmp29        [V37,T13] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n\u002B;  V37 tmp29        [V37,T12] (  3,  3   )     ref  -\u003E  rdi         class-hnd single-def \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.Dictionary\u00602[uint,uint]\u003E\n ;* V38 tmp30        [V38    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V21.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V39 tmp31        [V39    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V21.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V40 tmp32        [V40    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V25.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V41 tmp33        [V41    ] (  0,  0   )     ref  -\u003E  zero-ref    single-def \u0022field V25.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V42 tmp34        [V42,T14] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n-;  V43 tmp35        [V43,T15] (  3,  3   )     ref  -\u003E  rax         single-def \u0022arr expr\u0022\n-;  V44 rat0         [V44,T16] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n\u002B;  V42 tmp34        [V42,T13] (  3,  3   )     ref  -\u003E  rsi         single-def \u0022arr expr\u0022\n\u002B;  V43 tmp35        [V43,T14] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V44 tmp36        [V44,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022arr expr\u0022\n\u002B;  V45 rat0         [V45,T16] (  3,  3   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 72\n \n G_M62810_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 72\n        lea      rbp, [rsp\u002B0x70]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x48], rax\n        vxorps   xmm8, xmm8, xmm8\n        vmovdqa  xmmword ptr [rbp-0x40], xmm8\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n        mov      r14, rsi\n        mov      r15d, edx\n \t\t\t\t\t\t;; size=48 bbWeight=1 PerfScore 11.08\n G_M62810_IG02:\n        mov      rdi, rbx\n        mov      rsi, r14\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        call     [rax]dnlib.DotNet.Writer.Metadata:GetSignature(dnlib.DotNet.CallingConventionSig):uint:this\n        mov      r13d, eax\n        mov      rdi, gword ptr [rbx\u002B0x238]\n        cmp      byte  ptr [rdi], dil\n        mov      esi, r15d\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[uint,uint]:FindValue(uint):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[uint,uint]:FindValue(uint):byref:this\n        test     rax, rax\n        jne      G_M62810_IG13\n \t\t\t\t\t\t;; size=55 bbWeight=1 PerfScore 12.75\n G_M62810_IG03:\n        mov      r12d, r15d\n        and      r12d, 0xD1FFAB1E\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      rax, gword ptr [rsi\u002B0x1A8]\n        mov      gword ptr [rbp-0x60], rax\n        dec      r12d\n        cmp      r12d, dword ptr [rax\u002B0x18]\n        jae      G_M62810_IG06\n        mov      rsi, gword ptr [rax\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M62810_IG17\n\u002B       jae      G_M62810_IG16\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      SHORT G_M62810_IG04\n        mov      r8, gword ptr [rax\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [r8\u002B0x10]\n        call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      gword ptr [rbp-0x68], rax\n        mov      rdi, gword ptr [rax\u002B0x08]\n        mov      rcx, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rcx]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M62810_IG05\n        mov      rax, gword ptr [rbp-0x60]\n        mov      rdi, gword ptr [rax\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M62810_IG16\n        mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rcx]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M62810_IG16\n-       mov      rdi, rax\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rsi\u002B0x10]\n        mov      rsi, gword ptr [rbp-0x68]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n        mov      rax, gword ptr [rbp-0x60]\n-\t\t\t\t\t\t;; size=171 bbWeight=0.50 PerfScore 22.00\n\u002B\t\t\t\t\t\t;; size=152 bbWeight=0.50 PerfScore 21.50\n G_M62810_IG04:\n-       mov      rax, gword ptr [rax\u002B0x08]\n-       cmp      r12d, dword ptr [rax\u002B0x08]\n-       jae      G_M62810_IG17\n-       mov      ecx, r12d\n-       mov      r12, gword ptr [rax\u002B8*rcx\u002B0x10]\n\u002B       mov      rdi, gword ptr [rax\u002B0x08]\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M62810_IG16\n\u002B       mov      esi, r12d\n\u002B       mov      r12, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M62810_IG07\n \t\t\t\t\t\t;; size=24 bbWeight=0.50 PerfScore 4.62\n G_M62810_IG05:\n        mov      r12, gword ptr [rbp-0x68]\n        jmp      SHORT G_M62810_IG07\n \t\t\t\t\t\t;; size=6 bbWeight=0.50 PerfScore 1.50\n G_M62810_IG06:\n        xor      r12, r12\n \t\t\t\t\t\t;; size=3 bbWeight=0.50 PerfScore 0.12\n G_M62810_IG07:\n        mov      gword ptr [rbp-0x50], r12\n        mov      rdi, gword ptr [rbx\u002B0x210]\n        mov      rdi, gword ptr [rdi\u002B0x08]\n        cmp      byte  ptr [rdi], dil\n        mov      rsi, r12\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[System.__Canon,uint]:FindValue(System.__Canon):byref:this\n        test     rax, rax\n        jne      SHORT G_M62810_IG12\n        mov      rsi, gword ptr [r12\u002B0x08]\n        mov      gword ptr [rbp-0x58], rsi\n \t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 7.38\n G_M62810_IG08:\n        lea      rdi, bword ptr [r12\u002B0x08]\n        mov      rsi, r14\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, rbx\n        mov      rsi, r12\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        nop      \n \t\t\t\t\t\t;; size=37 bbWeight=0.50 PerfScore 3.00\n G_M62810_IG09:\n        lea      rdi, bword ptr [r12\u002B0x08]\n        mov      rsi, gword ptr [rbp-0x58]\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, gword ptr [rbx\u002B0x238]\n        cmp      byte  ptr [rdi], dil\n        mov      esi, r15d\n        mov      edx, r13d\n        mov      ecx, 2\n        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary\u00602[uint,uint]:TryInsert(uint,uint,byte):bool:this\n        call     [rax]System.Collections.Generic.Dictionary\u00602[uint,uint]:TryInsert(uint,uint,byte):bool:this\n \t\t\t\t\t\t;; size=47 bbWeight=0.50 PerfScore 5.25\n G_M62810_IG10:\n        mov      eax, r15d\n        and      eax, 0xD1FFAB1E\n \t\t\t\t\t\t;; size=8 bbWeight=0.50 PerfScore 0.25\n G_M62810_IG11:\n        add      rsp, 72\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M62810_IG12:\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r13, rax\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r13\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027StandAloneSig 0x{0:X8} already exists\u0027\n        mov      gword ptr [rbp-0x40], rdi\n        mov      gword ptr [rbp-0x48], r13\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x48]\n        lea      rdx, [rbp-0x40]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Warning\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x40]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x48]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        mov      edx, 1\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        jmp      G_M62810_IG14\n \t\t\t\t\t\t;; size=163 bbWeight=0.50 PerfScore 14.38\n G_M62810_IG13:\n        mov      edi, dword ptr [rax]\n        cmp      r13d, edi\n        je       G_M62810_IG10\n        mov      rdi, 0xD1FFAB1E      ; System.Object[]\n        mov      esi, 1\n        call     CORINFO_HELP_NEWARR_1_PTR\n        mov      r14, rax\n        mov      rdi, 0xD1FFAB1E      ; System.UInt32\n        call     CORINFO_HELP_NEWSFAST\n        mov      dword ptr [rax\u002B0x08], r15d\n        lea      rdi, bword ptr [r14\u002B0x10]\n        mov      rsi, rax\n        call     CORINFO_HELP_ASSIGN_REF\n        mov      rdi, 0xD1FFAB1E      ; \u0027Could not preserve StandAloneSig token 0x{0:X8}\u0027\n        mov      gword ptr [rbp-0x30], rdi\n        mov      gword ptr [rbp-0x38], r14\n        mov      rdi, gword ptr [rbx\u002B0x18]\n        lea      rcx, [rbp-0x38]\n        lea      rdx, [rbp-0x30]\n        mov      rsi, 0xD1FFAB1E      ; \u0027Warning\u0027\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MetadataErrorContext:Append(System.String,byref,byref):this\n        mov      rdi, gword ptr [rbx\u002B0x10]\n        mov      rcx, 0xD1FFAB1E      ; const ptr\n        test     rdi, rdi\n        cmove    rdi, gword ptr [rcx]\n        mov      rcx, gword ptr [rbp-0x30]\n        mov      rsi, rbx\n        mov      r8, gword ptr [rbp-0x38]\n        mov      r11, 0xD1FFAB1E      ; code for dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n        mov      edx, 1\n        call     [r11]dnlib.DotNet.ILogger:Log(System.Object,int,System.String,System.Object[]):this\n \t\t\t\t\t\t;; size=169 bbWeight=0.50 PerfScore 15.00\n G_M62810_IG14:\n        xor      eax, eax\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 0.12\n G_M62810_IG15:\n        add      rsp, 72\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M62810_IG16:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M62810_IG17:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n-G_M62810_IG18:\n\u002BG_M62810_IG17:\n        push     rax\n \t\t\t\t\t\t;; size=1 bbWeight=0 PerfScore 0.00\n-G_M62810_IG19:\n\u002BG_M62810_IG18:\n        mov      rdi, gword ptr [rbp-0x50]\n        lea      rdi, bword ptr [rdi\u002B0x08]\n        mov      rsi, gword ptr [rbp-0x58]\n        call     CORINFO_HELP_ASSIGN_REF\n        nop      \n \t\t\t\t\t\t;; size=18 bbWeight=0 PerfScore 0.00\n-G_M62810_IG20:\n\u002BG_M62810_IG19:\n        add      rsp, 8\n        ret      \n \t\t\t\t\t\t;; size=5 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 853, prolog size 48, PerfScore 101.71, instruction count 202, allocated bytes for code 853 (MethodHash=3c1f0aa5) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n\u002B; Total bytes of code 821, prolog size 48, PerfScore 101.21, instruction count 196, allocated bytes for code 821 (MethodHash=3c1f0aa5) for method dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.CallingConventionSig,uint):uint:this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":853,"DiffBytes":821},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)","Category":"improvement","Description":"462 -\u003E 434 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,200 \u002B1,195 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T14] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct (16) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawMemberRefRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n-;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMemberRefRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n-;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V13 tmp10        [V13,T01] (  6, 24   )     ref  -\u003E  r12         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MemberRefMD]\u003E\n\u002B;  V14 tmp11        [V14,T13] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V15 tmp12        [V15,T02] (  6, 24   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V17 tmp14        [V17,T11] (  5, 10   )     ref  -\u003E  [rbp-0x30]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n\u002B;  V17 tmp14        [V17,T12] (  5, 10   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T14] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;* V20 tmp17        [V20    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MemberRefMD\u003E\n-;  V21 tmp18        [V21,T13] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V21 tmp18        [V21,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Class (fldOffset=0x0)\u0022 P-INDEP\n ;* V22 tmp19        [V22    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Name (fldOffset=0x4)\u0022 P-INDEP\n ;* V23 tmp20        [V23    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Signature (fldOffset=0x8)\u0022 P-INDEP\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V25 tmp22        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V28 tmp25        [V28,T15] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V28 tmp25        [V28,T17] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V29 tmp26        [V29,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V30 tmp27        [V30,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V31 tmp28        [V31,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V32 rat0         [V32,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V32 tmp29        [V32,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V33 cse0         [V33,T07] (  5, 14   )    long  -\u003E  r13         \u0022CSE #02: aggressive\u0022\n\u002B;  V34 rat0         [V34,T11] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 8\n\u002B; Lcl frame size = 24\n \n G_M2026_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n-       push     rax\n-       lea      rbp, [rsp\u002B0x30]\n\u002B       sub      rsp, 24\n\u002B       lea      rbp, [rsp\u002B0x40]\n        mov      rbx, rdi\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M2026_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 32\n        je       G_M2026_IG13\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M2026_IG03:\n        cmp      byte  ptr [rbx\u002B0x244], 0\n        jne      G_M2026_IG13\n        mov      byte  ptr [rbx\u002B0x244], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0xA0]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M2026_IG11\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M2026_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x68]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M2026_IG14\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M2026_IG16\n-       lea      rdx, [rdx\u002B2*rdx]\n\u002B       jae      G_M2026_IG15\n\u002B       mov      r13d, edx\n\u002B       lea      rdx, [r13\u002B2*r13]\n        mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n        test     esi, esi\n        jne      G_M2026_IG10\n-\t\t\t\t\t\t;; size=54 bbWeight=4 PerfScore 73.00\n\u002B\t\t\t\t\t\t;; size=58 bbWeight=4 PerfScore 80.00\n G_M2026_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rsi\u002B0x188]\n-       lea      r12d, [r14-0x01]\n-       cmp      r12d, dword ptr [r13\u002B0x18]\n\u002B       mov      r12, gword ptr [rsi\u002B0x188]\n\u002B       lea      eax, [r14-0x01]\n\u002B       mov      dword ptr [rbp-0x2C], eax\n\u002B       cmp      eax, dword ptr [r12\u002B0x18]\n        jae      G_M2026_IG08\n-       mov      rsi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M2026_IG16\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M2026_IG15\n\u002B       cmp      qword ptr [rsi\u002B8*r13\u002B0x10], 0\n        jne      SHORT G_M2026_IG06\n-       mov      rax, gword ptr [r13\u002B0x10]\n-       lea      esi, [r12\u002B0x01]\n\u002B       mov      r8, gword ptr [r12\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n-       mov      rdi, gword ptr [rax\u002B0x10]\n-       call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n-       mov      gword ptr [rbp-0x30], rsi\n\u002B       mov      gword ptr [rbp-0x38], rsi\n        cmp      byte  ptr [rsi], sil\n        mov      rdi, rsi\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.MemberRef):bool\n        test     eax, eax\n        jne      SHORT G_M2026_IG07\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MemberRefMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M2026_IG15\n-       mov      rdi, rax\n-       mov      rsi, gword ptr [rbp-0x30]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M2026_IG15\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r13\u002B0x10]\n\u002B       mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=154 bbWeight=2 PerfScore 82.50\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=139 bbWeight=2 PerfScore 85.50\n G_M2026_IG06:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      G_M2026_IG16\n-       mov      esi, r12d\n-       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M2026_IG15\n\u002B       mov      rsi, gword ptr [rdi\u002B8*r13\u002B0x10]\n        jmp      SHORT G_M2026_IG09\n-\t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 18.50\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=2 PerfScore 18.00\n G_M2026_IG07:\n-       mov      r13, gword ptr [rbp-0x30]\n\u002B       mov      r13, gword ptr [rbp-0x38]\n        mov      rsi, r13\n        jmp      SHORT G_M2026_IG09\n \t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.50\n G_M2026_IG08:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M2026_IG09:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddMemberRef(dnlib.DotNet.MemberRef,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M2026_IG10:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M2026_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M2026_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x68]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=20 bbWeight=0.50 PerfScore 3.12\n G_M2026_IG12:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMemberRefRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M2026_IG13:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M2026_IG14:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M2026_IG15:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M2026_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 462, prolog size 19, PerfScore 225.38, instruction count 119, allocated bytes for code 462 (MethodHash=a6e7f815) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n\u002B; Total bytes of code 434, prolog size 22, PerfScore 234.12, instruction count 114, allocated bytes for code 434 (MethodHash=a6e7f815) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMemberRefTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":462,"DiffBytes":434},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)","Category":"improvement","Description":"523 -\u003E 495 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,233 \u002B1,226 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T18] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T19] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawMethodSpecRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawMethodSpecRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.MethodSpecMD]\u003E\n ;  V14 tmp11        [V14,T13] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V15 tmp12        [V15,T00] (  9, 36   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n ;  V17 tmp14        [V17,T14] (  4,  8   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V19 tmp16        [V19,T15] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n ;* V20 tmp17        [V20    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;  V21 tmp18        [V21,T11] (  4, 11   )     ref  -\u003E  rdi         \u0022ISINST eval op1\u0022\n ;  V22 tmp19        [V22,T12] (  4, 11   )     ref  -\u003E  rdi         class-hnd \u0022spilling qmarkNull\u0022 \u003Cdnlib.DotNet.GenericInstMethodSig\u003E\n ;  V23 tmp20        [V23    ] (  8, 16   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.TypeHelper\u003E\n-;  V24 tmp21        [V24,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n-;  V25 tmp22        [V25,T15] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n\u002B;  V24 tmp21        [V24,T18] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V25 tmp22        [V25,T16] (  2,  8   )     int  -\u003E  rax         \u0022impAppendStmt\u0022\n ;* V26 tmp23        [V26    ] (  0,  0   )   ubyte  -\u003E  zero-ref    \u0022Inline return value spill temp\u0022\n ;* V27 tmp24        [V27    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MethodSpecMD\u003E\n-;  V28 tmp25        [V28,T16] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V28 tmp25        [V28,T17] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Method (fldOffset=0x0)\u0022 P-INDEP\n ;* V29 tmp26        [V29    ] (  0,  0   )     int  -\u003E  zero-ref    \u0022field V04.Instantiation (fldOffset=0x4)\u0022 P-INDEP\n ;* V30 tmp27        [V30    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V31 tmp28        [V31    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V32 tmp29        [V32    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V33 tmp30        [V33    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n ;  V34 tmp31        [V34    ] (  8, 16   )     int  -\u003E  [rbp-0x30]  do-not-enreg[X] addr-exposed \u0022field V23.recursionCounter (fldOffset=0x0)\u0022 P-DEP\n-;  V35 tmp32        [V35,T19] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V35 tmp32        [V35,T20] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V36 tmp33        [V36,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V37 tmp34        [V37,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n-;  V38 tmp35        [V38,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V39 rat0         [V39,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V37 tmp34        [V37,T07] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n\u002B;  V38 tmp35        [V38,T08] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V39 tmp36        [V39,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V40 rat0         [V40,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n ;\n ; Lcl frame size = 24\n \n G_M53969_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n        sub      rsp, 24\n        lea      rbp, [rsp\u002B0x40]\n        xor      eax, eax\n        mov      qword ptr [rbp-0x30], rax\n        mov      rbx, rdi\n \t\t\t\t\t\t;; size=28 bbWeight=1 PerfScore 8.25\n G_M53969_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     dword ptr [rdi\u002B0x30], 0x400\n        je       G_M53969_IG17\n \t\t\t\t\t\t;; size=17 bbWeight=1 PerfScore 5.00\n G_M53969_IG03:\n        cmp      byte  ptr [rbx\u002B0x247], 0\n        jne      G_M53969_IG17\n        mov      byte  ptr [rbx\u002B0x247], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0x1A8]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M53969_IG16\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M53969_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0x170]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M53969_IG19\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M53969_IG21\n\u002B       jae      G_M53969_IG20\n        mov      esi, dword ptr [rsi\u002B8*rdx\u002B0x10]\n        test     esi, esi\n        jne      G_M53969_IG15\n \t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n G_M53969_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n        mov      r13, gword ptr [rsi\u002B0x208]\n        lea      r12d, [r14-0x01]\n        cmp      r12d, dword ptr [r13\u002B0x18]\n        jae      G_M53969_IG13\n        mov      rsi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M53969_IG21\n\u002B       jae      G_M53969_IG20\n        mov      edx, r12d\n        cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n        jne      G_M53969_IG12\n        mov      rax, gword ptr [r13\u002B0x10]\n        lea      esi, [r12\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n        mov      rdi, gword ptr [rax\u002B0x10]\n        call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n        mov      gword ptr [rbp-0x38], rsi\n        mov      rdi, gword ptr [rsi\u002B0x10]\n        test     rdi, rdi\n        je       SHORT G_M53969_IG08\n \t\t\t\t\t\t;; size=93 bbWeight=2 PerfScore 56.50\n G_M53969_IG06:\n        mov      rax, 0xD1FFAB1E      ; dnlib.DotNet.GenericInstMethodSig\n        cmp      qword ptr [rdi], rax\n        jne      SHORT G_M53969_IG08\n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 3.25\n G_M53969_IG07:\n        jmp      SHORT G_M53969_IG09\n \t\t\t\t\t\t;; size=2 bbWeight=0.50 PerfScore 1.00\n G_M53969_IG08:\n        xor      rdi, rdi\n \t\t\t\t\t\t;; size=2 bbWeight=1 PerfScore 0.25\n G_M53969_IG09:\n        xor      eax, eax\n        mov      dword ptr [rbp-0x30], eax\n \t\t\t\t\t\t;; size=5 bbWeight=2 PerfScore 2.50\n G_M53969_IG10:\n        mov      dword ptr [rbp-0x30], eax\n        test     rdi, rdi\n        je       SHORT G_M53969_IG11\n        cmp      dword ptr [rbp-0x30], 100\n        jge      SHORT G_M53969_IG11\n        mov      eax, dword ptr [rbp-0x30]\n        inc      eax\n        mov      dword ptr [rbp-0x30], eax\n        mov      rsi, gword ptr [rdi\u002B0x18]\n        lea      rdi, [rbp-0x30]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(System.Collections.Generic.IList\u00601[dnlib.DotNet.TypeSig]):bool:this\n        mov      edi, dword ptr [rbp-0x30]\n        dec      edi\n        mov      dword ptr [rbp-0x30], edi\n        test     eax, eax\n        je       SHORT G_M53969_IG11\n        mov      r12, gword ptr [rbp-0x38]\n        mov      rsi, r12\n        jmp      SHORT G_M53969_IG14\n \t\t\t\t\t\t;; size=63 bbWeight=2 PerfScore 38.00\n G_M53969_IG11:\n        mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.MethodSpecMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       SHORT G_M53969_IG20\n-       mov      rdi, rax\n\u002B       cmp      r12d, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M53969_IG20\n\u002B       mov      edx, r12d\n\u002B       lea      rdi, bword ptr [rdi\u002B8*rdx\u002B0x10]\n        mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=48 bbWeight=2 PerfScore 19.00\n\u002B\t\t\t\t\t\t;; size=33 bbWeight=2 PerfScore 17.00\n G_M53969_IG12:\n        mov      rdi, gword ptr [r13\u002B0x08]\n        cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      SHORT G_M53969_IG21\n\u002B       jae      SHORT G_M53969_IG20\n        mov      esi, r12d\n        mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n        jmp      SHORT G_M53969_IG14\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 18.50\n G_M53969_IG13:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M53969_IG14:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddMethodSpec(dnlib.DotNet.MethodSpec,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M53969_IG15:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M53969_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M53969_IG16:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0x170]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n        call     [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawMethodSpecRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=25 bbWeight=0.50 PerfScore 4.62\n G_M53969_IG17:\n        nop      \n \t\t\t\t\t\t;; size=1 bbWeight=1 PerfScore 0.25\n G_M53969_IG18:\n        add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=1 PerfScore 4.25\n G_M53969_IG19:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M53969_IG20:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M53969_IG21:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 523, prolog size 28, PerfScore 256.62, instruction count 135, allocated bytes for code 523 (MethodHash=fef92d2e) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n\u002B; Total bytes of code 495, prolog size 28, PerfScore 254.62, instruction count 129, allocated bytes for code 495 (MethodHash=fef92d2e) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeMethodSpecTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":523,"DiffBytes":495},{"Assembly":"dnlib.dasm","Method":"dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)","Category":"improvement","Description":"462 -\u003E 434 bytes (-28)","ExtraInfo":null,"Diff":"@@ -1,197 \u002B1,192 @@\n ; Assembly listing for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n ; Emitting BLENDED_CODE for x64 \u002B VEX \u002B EVEX on Unix\n ; FullOpts code\n ; optimized code\n ; rbp based frame\n ; fully interruptible\n ; No PGO data\n ; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data\n ; Final local variable assignments\n ;\n ;  V00 this         [V00,T06] ( 10, 13   )     ref  -\u003E  rbx         this class-hnd single-def \u003Cdnlib.DotNet.Writer.PreserveTokensMetadata\u003E\n-;  V01 loc0         [V01,T14] (  3,  5   )     int  -\u003E  r15         single-def\n\u002B;  V01 loc0         [V01,T16] (  3,  5   )     int  -\u003E  r15         single-def\n ;  V02 loc1         [V02,T05] (  6, 18.50)     int  -\u003E  r14        \n ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp\u002B0x00]  do-not-enreg[XS] addr-exposed \u0022OutgoingArgSpace\u0022 \u003CEmpty\u003E\n ;* V04 tmp1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    \u0022location for address-of(RValue)\u0022 \u003Cdnlib.DotNet.MD.RawStandAloneSigRow\u003E\n ;* V05 tmp2         [V05    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V06 tmp3         [V06    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.TablesStream\u003E\n ;* V07 tmp4         [V07    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.MD.MDTable\u003E\n ;* V08 tmp5         [V08    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n-;  V09 tmp6         [V09,T01] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n\u002B;  V09 tmp6         [V09,T00] (  4, 32   )     int  -\u003E  rdx         \u0022Inlining Arg\u0022\n ;  V10 tmp7         [V10,T03] (  3, 24   )     ref  -\u003E  rsi         class-hnd \u0022Inlining Arg\u0022 \u003CSystem.Collections.Generic.List\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]\u003E\n ;* V11 tmp8         [V11    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.ModuleDefMD\u003E\n ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V13 tmp10        [V13,T02] (  6, 24   )     ref  -\u003E  r13         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n-;  V14 tmp11        [V14,T11] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V15 tmp12        [V15,T00] (  8, 32   )     int  -\u003E  r12         \u0022Inlining Arg\u0022\n\u002B;  V13 tmp10        [V13,T01] (  6, 24   )     ref  -\u003E  r12         class-hnd exact \u0022impAppendStmt\u0022 \u003Cdnlib.Utils.SimpleLazyList2\u00601[dnlib.DotNet.StandAloneSigMD]\u003E\n\u002B;  V14 tmp11        [V14,T12] (  4,  8   )     ref  -\u003E  rsi         class-hnd \u0022Inline return value spill temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V15 tmp12        [V15,T02] (  6, 24   )     int  -\u003E  [rbp-0x2C]  spill-single-def \u0022Inlining Arg\u0022\n ;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.GenericParamContext\u003E\n-;  V17 tmp14        [V17,T12] (  4,  8   )     ref  -\u003E  [rbp-0x30]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n\u002B;  V17 tmp14        [V17,T13] (  4,  8   )     ref  -\u003E  [rbp-0x38]  class-hnd spill-single-def \u0022Inline stloc first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n ;* V18 tmp15        [V18    ] (  0,  0   )     ref  -\u003E  zero-ref    ld-addr-op class-hnd \u0022Inline ldloca(s) first use temp\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V19 tmp16        [V19,T07] (  3, 12   )   byref  -\u003E  rax         \u0022impAppendStmt\u0022\n-;  V20 tmp17        [V20,T15] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n\u002B;  V19 tmp16        [V19,T14] (  2,  8   )   byref  -\u003E  rdi         \u0022impAppendStmt\u0022\n\u002B;  V20 tmp17        [V20,T17] (  2,  4   )   ubyte  -\u003E  rax         \u0022Inline return value spill temp\u0022\n ;* V21 tmp18        [V21    ] (  0,  0   )     ref  -\u003E  zero-ref    class-hnd exact \u0022Inlining Arg\u0022 \u003Cdnlib.DotNet.StandAloneSigMD\u003E\n-;  V22 tmp19        [V22,T13] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n\u002B;  V22 tmp19        [V22,T15] (  2,  8   )     int  -\u003E  rsi         \u0022field V04.Signature (fldOffset=0x0)\u0022 P-INDEP\n ;* V23 tmp20        [V23    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V24 tmp21        [V24    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V12.Method (fldOffset=0x8)\u0022 P-INDEP\n ;* V25 tmp22        [V25    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Type (fldOffset=0x0)\u0022 P-INDEP\n ;* V26 tmp23        [V26    ] (  0,  0   )     ref  -\u003E  zero-ref    \u0022field V16.Method (fldOffset=0x8)\u0022 P-INDEP\n-;  V27 tmp24        [V27,T16] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n\u002B;  V27 tmp24        [V27,T18] (  3,  3   )     ref  -\u003E  rdi         single-def \u0022argument with side effect\u0022\n ;  V28 tmp25        [V28,T04] (  3, 24   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V29 tmp26        [V29,T08] (  3, 12   )     ref  -\u003E  rsi         \u0022arr expr\u0022\n ;  V30 tmp27        [V30,T09] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n-;  V31 rat0         [V31,T10] (  3, 12   )     ref  -\u003E  rax         \u0022delegate invoke call\u0022\n\u002B;  V31 tmp28        [V31,T10] (  3, 12   )     ref  -\u003E  rdi         \u0022arr expr\u0022\n\u002B;  V32 cse0         [V32,T07] (  5, 14   )    long  -\u003E  r13         \u0022CSE #02: aggressive\u0022\n\u002B;  V33 rat0         [V33,T11] (  3, 12   )     ref  -\u003E   r8         \u0022delegate invoke call\u0022\n ;\n-; Lcl frame size = 8\n\u002B; Lcl frame size = 24\n \n G_M19027_IG01:\n        push     rbp\n        push     r15\n        push     r14\n        push     r13\n        push     r12\n        push     rbx\n-       push     rax\n-       lea      rbp, [rsp\u002B0x30]\n\u002B       sub      rsp, 24\n\u002B       lea      rbp, [rsp\u002B0x40]\n        mov      rbx, rdi\n-\t\t\t\t\t\t;; size=19 bbWeight=1 PerfScore 7.75\n\u002B\t\t\t\t\t\t;; size=22 bbWeight=1 PerfScore 7.00\n G_M19027_IG02:\n        mov      rdi, gword ptr [rbx\u002B0x08]\n        test     byte  ptr [rdi\u002B0x30], 64\n        je       G_M19027_IG13\n \t\t\t\t\t\t;; size=14 bbWeight=1 PerfScore 5.00\n G_M19027_IG03:\n        cmp      byte  ptr [rbx\u002B0x245], 0\n        jne      G_M19027_IG13\n        mov      byte  ptr [rbx\u002B0x245], 1\n        mov      rdi, gword ptr [rbx\u002B0x1D8]\n        mov      rdi, gword ptr [rdi\u002B0x130]\n        mov      rax, qword ptr [rdi]\n        mov      rax, qword ptr [rax\u002B0x48]\n        call     [rax\u002B0x38]dnlib.DotNet.MD.Metadata:get_TablesStream():dnlib.DotNet.MD.TablesStream:this\n        mov      rsi, gword ptr [rax\u002B0xD8]\n        mov      r15d, dword ptr [rsi\u002B0x58]\n        mov      r14d, 1\n        test     r15d, r15d\n        je       G_M19027_IG11\n \t\t\t\t\t\t;; size=70 bbWeight=0.50 PerfScore 10.25\n G_M19027_IG04:\n        mov      rsi, gword ptr [rbx\u002B0x58]\n        mov      rsi, gword ptr [rsi\u002B0xA0]\n        mov      rsi, gword ptr [rsi\u002B0x10]\n        lea      edx, [r14-0x01]\n        cmp      edx, dword ptr [rsi\u002B0x10]\n        jae      G_M19027_IG14\n        mov      rsi, gword ptr [rsi\u002B0x08]\n        cmp      edx, dword ptr [rsi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      esi, dword ptr [rsi\u002B4*rdx\u002B0x10]\n\u002B       jae      G_M19027_IG15\n\u002B       mov      r13d, edx\n\u002B       mov      esi, dword ptr [rsi\u002B4*r13\u002B0x10]\n        test     esi, esi\n        jne      G_M19027_IG10\n-\t\t\t\t\t\t;; size=53 bbWeight=4 PerfScore 71.00\n\u002B\t\t\t\t\t\t;; size=57 bbWeight=4 PerfScore 72.00\n G_M19027_IG05:\n        mov      rsi, gword ptr [rbx\u002B0x1D8]\n-       mov      r13, gword ptr [rsi\u002B0x1A8]\n-       lea      r12d, [r14-0x01]\n-       cmp      r12d, dword ptr [r13\u002B0x18]\n\u002B       mov      r12, gword ptr [rsi\u002B0x1A8]\n\u002B       lea      eax, [r14-0x01]\n\u002B       mov      dword ptr [rbp-0x2C], eax\n\u002B       cmp      eax, dword ptr [r12\u002B0x18]\n        jae      G_M19027_IG08\n-       mov      rsi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rsi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      edx, r12d\n-       cmp      qword ptr [rsi\u002B8*rdx\u002B0x10], 0\n\u002B       mov      rsi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rsi\u002B0x08]\n\u002B       jae      G_M19027_IG15\n\u002B       cmp      qword ptr [rsi\u002B8*r13\u002B0x10], 0\n        jne      SHORT G_M19027_IG06\n-       mov      rax, gword ptr [r13\u002B0x10]\n-       lea      esi, [r12\u002B0x01]\n\u002B       mov      r8, gword ptr [r12\u002B0x10]\n\u002B       lea      esi, [rax\u002B0x01]\n        xor      rdx, rdx\n        xor      rcx, rcx\n-       mov      rdi, gword ptr [rax\u002B0x10]\n-       call     [rax\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n\u002B       mov      rdi, gword ptr [r8\u002B0x10]\n\u002B       call     [r8\u002B0x18]System.Func\u00603[uint,dnlib.DotNet.GenericParamContext,System.__Canon]:Invoke(uint,dnlib.DotNet.GenericParamContext):System.__Canon:this\n        mov      rsi, rax\n-       mov      gword ptr [rbp-0x30], rsi\n\u002B       mov      gword ptr [rbp-0x38], rsi\n        mov      rdi, gword ptr [rsi\u002B0x08]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        call     [rax]dnlib.DotNet.TypeHelper:ContainsGenericParameter(dnlib.DotNet.CallingConventionSig):bool\n        test     eax, eax\n        jne      SHORT G_M19027_IG07\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       mov      esi, r12d\n-       mov      rdx, 0xD1FFAB1E      ; dnlib.DotNet.StandAloneSigMD\n-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_LDELEMA_REF\n-       call     [rax]CORINFO_HELP_LDELEMA_REF\n-       test     rax, rax\n-       je       G_M19027_IG15\n-       mov      rdi, rax\n-       mov      rsi, gword ptr [rbp-0x30]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      G_M19027_IG15\n\u002B       lea      rdi, bword ptr [rdi\u002B8*r13\u002B0x10]\n\u002B       mov      rsi, gword ptr [rbp-0x38]\n        xor      rdx, rdx\n        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object\n-\t\t\t\t\t\t;; size=152 bbWeight=2 PerfScore 82.00\n\u002B       mov      eax, dword ptr [rbp-0x2C]\n\u002B\t\t\t\t\t\t;; size=137 bbWeight=2 PerfScore 85.00\n G_M19027_IG06:\n-       mov      rdi, gword ptr [r13\u002B0x08]\n-       cmp      r12d, dword ptr [rdi\u002B0x08]\n-       jae      G_M19027_IG16\n-       mov      esi, r12d\n-       mov      rsi, gword ptr [rdi\u002B8*rsi\u002B0x10]\n\u002B       mov      rdi, gword ptr [r12\u002B0x08]\n\u002B       cmp      eax, dword ptr [rdi\u002B0x08]\n\u002B       jae      SHORT G_M19027_IG15\n\u002B       mov      rsi, gword ptr [rdi\u002B8*r13\u002B0x10]\n        jmp      SHORT G_M19027_IG09\n-\t\t\t\t\t\t;; size=24 bbWeight=2 PerfScore 18.50\n\u002B\t\t\t\t\t\t;; size=17 bbWeight=2 PerfScore 18.00\n G_M19027_IG07:\n-       mov      r13, gword ptr [rbp-0x30]\n\u002B       mov      r13, gword ptr [rbp-0x38]\n        mov      rsi, r13\n        jmp      SHORT G_M19027_IG09\n \t\t\t\t\t\t;; size=9 bbWeight=2 PerfScore 6.50\n G_M19027_IG08:\n        xor      rsi, rsi\n \t\t\t\t\t\t;; size=2 bbWeight=2 PerfScore 0.50\n G_M19027_IG09:\n        mov      rdi, rbx\n        mov      edx, 1\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n        call     [rax]dnlib.DotNet.Writer.PreserveTokensMetadata:AddStandAloneSig(dnlib.DotNet.StandAloneSig,bool):uint:this\n \t\t\t\t\t\t;; size=20 bbWeight=2 PerfScore 7.50\n G_M19027_IG10:\n        inc      r14d\n        cmp      r14d, r15d\n        jbe      G_M19027_IG04\n \t\t\t\t\t\t;; size=12 bbWeight=4 PerfScore 6.00\n G_M19027_IG11:\n        mov      rdi, gword ptr [rbx\u002B0x58]\n        mov      rdi, gword ptr [rdi\u002B0xA0]\n        mov      rax, 0xD1FFAB1E      ; code for dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:ReAddRows():this\n        cmp      dword ptr [rdi], edi\n \t\t\t\t\t\t;; size=23 bbWeight=0.50 PerfScore 3.12\n G_M19027_IG12:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        tail.jmp [rax]dnlib.DotNet.Writer.MDTable\u00601[dnlib.DotNet.MD.RawStandAloneSigRow]:ReAddRows():this\n \t\t\t\t\t\t;; size=17 bbWeight=0.50 PerfScore 2.62\n G_M19027_IG13:\n-       add      rsp, 8\n\u002B       add      rsp, 24\n        pop      rbx\n        pop      r12\n        pop      r13\n        pop      r14\n        pop      r15\n        pop      rbp\n        ret      \n \t\t\t\t\t\t;; size=15 bbWeight=0.50 PerfScore 2.12\n G_M19027_IG14:\n        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()\n        int3     \n \t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n G_M19027_IG15:\n-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()\n-       call     [rax]System.ThrowHelper:ThrowNullReferenceException()\n-       int3     \n-\t\t\t\t\t\t;; size=13 bbWeight=0 PerfScore 0.00\n-G_M19027_IG16:\n        call     CORINFO_HELP_RNGCHKFAIL\n        int3     \n \t\t\t\t\t\t;; size=6 bbWeight=0 PerfScore 0.00\n \n-; Total bytes of code 462, prolog size 19, PerfScore 222.88, instruction count 117, allocated bytes for code 462 (MethodHash=2300b5ac) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n\u002B; Total bytes of code 434, prolog size 22, PerfScore 225.62, instruction count 112, allocated bytes for code 434 (MethodHash=2300b5ac) for method dnlib.DotNet.Writer.PreserveTokensMetadata:InitializeStandAloneSigTableRows():this (FullOpts)\n ; ============================================================","Truncated":false,"BaseBytes":462,"DiffBytes":434}]}