MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] xtqqczze/dotnet-runtime/BinaryWriter #482

Open MihuBot opened 3 months ago

MihuBot commented 3 months ago

Job completed in 14 minutes.

Diffs

Found 269 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41566430
Total bytes of diff: 41567233
Total bytes of delta: 803 (0.00 % of base)
Total relative delta: -2.63
    diff is a regression.
    relative diff is an improvement.

Total byte diff includes 248 bytes from reconciling methods
    Base had    1 unique methods,       37 unique bytes
    Diff had    7 unique methods,      285 unique bytes

Top file regressions (bytes):
         316 : System.Private.Xml.dasm (0.01 % of base)
         272 : System.Security.Cryptography.dasm (0.02 % of base)
         228 : System.IO.Compression.dasm (0.24 % of base)
          32 : System.Private.CoreLib.dasm (0.00 % of base)
          11 : System.IO.IsolatedStorage.dasm (0.05 % of base)
          11 : System.Configuration.ConfigurationManager.dasm (0.00 % of base)
           9 : System.ComponentModel.TypeConverter.dasm (0.00 % of base)

Top file improvements (bytes):
         -38 : System.Resources.Extensions.dasm (-0.07 % of base)
         -38 : System.Resources.Writer.dasm (-0.40 % of base)

9 total files with Code Size differences (2 improved, 7 regressed), 250 unchanged.

Top method regressions (bytes):
         293 (15.19 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:GetObjectData(byref,byref):this (FullOpts)
         272 (17.05 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts)
         189 (14.52 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCentralDirectoryFileHeader():this (FullOpts)
         104 (9.39 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeader(ubyte):ubyte:this (FullOpts)
          63 (11.91 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipEndOfCentralDirectoryBlock:WriteBlock(System.IO.Stream,long,long,long,ubyte[]) (FullOpts)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[double](double):this (FullOpts) (0 base, 1 diff methods)
          44 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[long](long):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[int](int):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[short](short):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[ubyte](ubyte):this (FullOpts) (0 base, 1 diff methods)
          37 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|40_0(ubyte[],int,int,ubyte):this (FullOpts) (0 base, 1 diff methods)
          33 (3.82 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts) (0 base, 1 diff methods)
          27 (5.44 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
          23 (3.09 % of base) : System.Private.Xml.dasm - System.Xml.XmlWriterSettings:GetObjectData(System.Xml.Xsl.Runtime.XmlQueryDataWriter):this (FullOpts)
          14 (0.30 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
          11 (1.84 % of base) : System.IO.IsolatedStorage.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
          11 (1.84 % of base) : System.Configuration.ConfigurationManager.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
           9 (1.16 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.DesigntimeLicenseContextSerializer:Serialize(System.IO.Stream,System.String,System.ComponentModel.Design.DesigntimeLicenseContext) (FullOpts)

Top method improvements (bytes):
         -54 (-15.13 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         -42 (-12.77 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts)
         -38 (-1.15 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.PreserializedResourceWriter:Generate():this (FullOpts)
         -38 (-1.14 % of base) : System.Resources.Writer.dasm - System.Resources.ResourceWriter:Generate():this (FullOpts)
         -37 (-100.00 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|39_0(ubyte[],int,int,ubyte):this (FullOpts) (1 base, 0 diff methods)
         -36 (-8.96 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts)
         -30 (-7.21 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64ExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(short):this (FullOpts)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(System.Half):this (FullOpts)
         -28 (-5.42 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ushort):this (FullOpts) (2 methods)
         -26 (-5.57 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryRecord:WriteBlock(System.IO.Stream,long,long,long) (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(int):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(long):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(uint):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ulong):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(double):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(float):this (FullOpts)

Top method regressions (percentages):
          37 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|40_0(ubyte[],int,int,ubyte):this (FullOpts) (0 base, 1 diff methods)
          45 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[double](double):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[int](int):this (FullOpts) (0 base, 1 diff methods)
          44 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[long](long):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[short](short):this (FullOpts) (0 base, 1 diff methods)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts) (0 base, 1 diff methods)
          43 (Infinity of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:WriteBytes[ubyte](ubyte):this (FullOpts) (0 base, 1 diff methods)
         272 (17.05 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts)
         293 (15.19 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:GetObjectData(byref,byref):this (FullOpts)
         189 (14.52 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCentralDirectoryFileHeader():this (FullOpts)
          63 (11.91 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipEndOfCentralDirectoryBlock:WriteBlock(System.IO.Stream,long,long,long,ubyte[]) (FullOpts)
         104 (9.39 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeader(ubyte):ubyte:this (FullOpts)
          27 (5.44 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
          33 (3.82 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteCrcAndSizesInLocalHeader(ubyte):this (FullOpts)
          23 (3.09 % of base) : System.Private.Xml.dasm - System.Xml.XmlWriterSettings:GetObjectData(System.Xml.Xsl.Runtime.XmlQueryDataWriter):this (FullOpts)
          11 (1.84 % of base) : System.IO.IsolatedStorage.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
          11 (1.84 % of base) : System.Configuration.ConfigurationManager.dasm - System.Security.IdentityHelper:GetNormalizedStrongNameHash(System.Reflection.AssemblyName):System.String (FullOpts)
           9 (1.16 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Design.DesigntimeLicenseContextSerializer:Serialize(System.IO.Stream,System.String,System.ComponentModel.Design.DesigntimeLicenseContext) (FullOpts)
          14 (0.30 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)

Top method improvements (percentages):
         -37 (-100.00 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream|39_0(ubyte[],int,int,ubyte):this (FullOpts) (1 base, 0 diff methods)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(short):this (FullOpts)
         -29 (-39.73 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(System.Half):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(int):this (FullOpts)
         -25 (-36.76 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(uint):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(long):this (FullOpts)
         -25 (-36.23 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ulong):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(double):this (FullOpts)
         -22 (-32.84 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(float):this (FullOpts)
         -54 (-15.13 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         -42 (-12.77 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts)
         -36 (-8.96 % of base) : System.IO.Compression.dasm - System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts)
         -30 (-7.21 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64ExtraField:WriteBlock(System.IO.Stream):this (FullOpts)
         -26 (-5.57 % of base) : System.IO.Compression.dasm - System.IO.Compression.Zip64EndOfCentralDirectoryRecord:WriteBlock(System.IO.Stream,long,long,long) (FullOpts)
         -28 (-5.42 % of base) : System.Private.CoreLib.dasm - System.IO.BinaryWriter:Write(ushort):this (FullOpts) (2 methods)
         -38 (-1.15 % of base) : System.Resources.Extensions.dasm - System.Resources.Extensions.PreserializedResourceWriter:Generate():this (FullOpts)
         -38 (-1.14 % of base) : System.Resources.Writer.dasm - System.Resources.ResourceWriter:Generate():this (FullOpts)

36 total methods with Code Size differences (17 improved, 19 regressed), 252697 unchanged.

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

Artifacts:

MihuBot commented 3 months ago

Top method regressions

272 (17.05 % of base) - System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] ```diff ; Assembly listing for method System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 10 single block inlinees; 6 inlinees without PGO data +; 0 inlinees with PGO data; 54 single block inlinees; 28 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T05] ( 10, 9 ) struct (64) [rbp+0x10] do-not-enreg[SF] single-def -; V01 loc0 [V01,T09] ( 8, 5.50) ubyte -> [rbp-0x2C] spill-single-def -; V02 loc1 [V02,T21] ( 3, 2 ) int -> [rbp-0x30] spill-single-def -; V03 loc2 [V03,T22] ( 3, 2 ) int -> [rbp-0x34] spill-single-def -; V04 loc3 [V04,T20] ( 4, 2 ) ref -> [rbp-0x50] class-hnd exact EH-live spill-single-def -; V05 loc4 [V05,T01] ( 16, 14 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def +; V00 arg0 [V00,T07] ( 10, 9 ) struct (64) [rbp+0x10] do-not-enreg[SF] single-def +; V01 loc0 [V01,T11] ( 8, 5.50) ubyte -> [rbp-0x2C] spill-single-def +; V02 loc1 [V02,T36] ( 3, 2 ) int -> [rbp-0x30] spill-single-def +; V03 loc2 [V03,T37] ( 3, 2 ) int -> [rbp-0x34] spill-single-def +; V04 loc3 [V04,T35] ( 4, 2 ) ref -> [rbp-0x78] class-hnd exact EH-live spill-single-def +; V05 loc4 [V05,T03] ( 16, 14 ) ref -> [rbp-0x80] class-hnd exact EH-live spill-single-def ; V06 loc5 [V06 ] ( 2, 2 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V07 loc6 [V07,T26] ( 2, 2 ) ref -> r12 class-hnd single-def +; V07 loc6 [V07,T41] ( 2, 2 ) ref -> r12 class-hnd single-def ; V08 OutArgs [V08 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V09 tmp1 [V09,T23] ( 3, 2 ) int -> rdi -; V10 tmp2 [V10,T24] ( 3, 2 ) int -> r8 -; V11 tmp3 [V11,T04] ( 5, 10 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" -; V12 tmp4 [V12,T00] ( 25, 31 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" +; V09 tmp1 [V09,T38] ( 3, 2 ) int -> rdi +; V10 tmp2 [V10,T39] ( 3, 2 ) int -> r8 +; V11 tmp3 [V11,T06] ( 5, 10 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" +; V12 tmp4 [V12,T00] ( 25, 31 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref single-def -; V15 tmp7 [V15,T27] ( 2, 1 ) int -> rsi +; V15 tmp7 [V15,T46] ( 2, 1 ) int -> rsi ;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref single-def -; V18 tmp10 [V18,T28] ( 2, 1 ) int -> rsi -; V19 tmp11 [V19,T06] ( 4, 7 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" +; V18 tmp10 [V18,T47] ( 2, 1 ) int -> rsi +; V19 tmp11 [V19,T08] ( 4, 7 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def ;* V21 tmp13 [V21 ] ( 0, 0 ) ref -> zero-ref -; V22 tmp14 [V22,T25] ( 3, 2 ) int -> rcx -; V23 tmp15 [V23,T30] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V24 tmp16 [V24,T02] ( 4, 12.25) int -> [rbp-0x44] "Inline stloc first use temp" -; V25 tmp17 [V25,T03] ( 4, 12.25) int -> rbx "Inline stloc first use temp" -; V26 tmp18 [V26,T14] ( 5, 4 ) ref -> rbx single-def "V00.[000..008)" -; V27 tmp19 [V27,T12] ( 6, 4.50) ref -> r15 single-def "V00.[008..016)" -; V28 tmp20 [V28,T15] ( 5, 4 ) ref -> r14 single-def "V00.[016..024)" -; V29 tmp21 [V29,T16] ( 5, 3.50) ref -> r13 single-def "V00.[024..032)" -; V30 tmp22 [V30,T13] ( 6, 4.50) ref -> r12 single-def "V00.[032..040)" -; V31 tmp23 [V31,T11] ( 7, 4.50) ref -> [rbp-0x78] spill-single-def "V00.[040..048)" -; V32 tmp24 [V32,T08] ( 9, 5.50) ref -> [rbp-0x80] spill-single-def "V00.[048..056)" -; V33 tmp25 [V33,T17] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V34 tmp26 [V34,T07] ( 3, 6 ) ref -> rax single-def "argument with side effect" -; V35 tmp27 [V35,T31] ( 3, 0 ) ref -> rdi single-def "argument with side effect" -; V36 tmp28 [V36,T32] ( 3, 0 ) ref -> rdi single-def "argument with side effect" -; V37 tmp29 [V37,T18] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V38 tmp30 [V38,T19] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V39 tmp31 [V39,T33] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V40 PSPSym [V40,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" -; V41 cse0 [V41,T10] ( 6, 5 ) int -> rdx "CSE #01: moderate" +; V22 tmp14 [V22,T40] ( 3, 2 ) int -> rcx +; V23 tmp15 [V23,T76] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref single-def +; V25 tmp17 [V25 ] ( 2, 2 ) int -> [rbp-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V26 tmp18 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V27 tmp19 [V27,T25] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V30 tmp22 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V32 tmp24 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref single-def +; V35 tmp27 [V35,T42] ( 2, 2 ) int -> rsi "Inlining Arg" +; V36 tmp28 [V36 ] ( 2, 2 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V38 tmp30 [V38,T26] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V39 tmp31 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V40 tmp32 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V43 tmp35 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V44 tmp36 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V45 tmp37 [V45 ] ( 0, 0 ) ref -> zero-ref single-def +; V46 tmp38 [V46 ] ( 2, 2 ) int -> [rbp-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V47 tmp39 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V48 tmp40 [V48,T27] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V50 tmp42 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V52 tmp44 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V53 tmp45 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V55 tmp47 [V55 ] ( 0, 0 ) ref -> zero-ref single-def +; V56 tmp48 [V56,T43] ( 2, 2 ) int -> rsi "Inlining Arg" +; V57 tmp49 [V57 ] ( 2, 2 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V58 tmp50 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V59 tmp51 [V59,T28] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V64 tmp56 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V65 tmp57 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V66 tmp58 [V66,T04] ( 4, 12.25) int -> [rbp-0x54] "Inline stloc first use temp" +;* V67 tmp59 [V67 ] ( 0, 0 ) ref -> zero-ref single-def +; V68 tmp60 [V68 ] ( 2, 1 ) int -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V69 tmp61 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V70 tmp62 [V70,T44] ( 3, 1.50) ref -> rdi class-hnd single-def "impAppendStmt" +;* V71 tmp63 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V73 tmp65 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V75 tmp67 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V76 tmp68 [V76 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V77 tmp69 [V77 ] ( 0, 0 ) ref -> zero-ref +; V78 tmp70 [V78 ] ( 2, 16 ) int -> [rbp-0x5C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V79 tmp71 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V80 tmp72 [V80,T01] ( 3, 24 ) ref -> rcx class-hnd "impAppendStmt" +;* V81 tmp73 [V81 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V83 tmp75 [V83 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V84 tmp76 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V85 tmp77 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V86 tmp78 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V87 tmp79 [V87 ] ( 0, 0 ) ref -> zero-ref single-def +;* V88 tmp80 [V88 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V89 tmp81 [V89 ] ( 2, 2 ) int -> [rbp-0x60] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V90 tmp82 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V91 tmp83 [V91,T29] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V92 tmp84 [V92 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V95 tmp87 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V96 tmp88 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V97 tmp89 [V97 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V98 tmp90 [V98 ] ( 0, 0 ) ref -> zero-ref single-def +; V99 tmp91 [V99 ] ( 2, 2 ) int -> [rbp-0x64] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V100 tmp92 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V101 tmp93 [V101,T30] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V102 tmp94 [V102 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V103 tmp95 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V104 tmp96 [V104 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V105 tmp97 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V106 tmp98 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V107 tmp99 [V107 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V108 tmp100 [V108,T05] ( 4, 12.25) int -> r15 "Inline stloc first use temp" +;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref single-def +; V110 tmp102 [V110 ] ( 2, 1 ) int -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V111 tmp103 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V112 tmp104 [V112,T45] ( 3, 1.50) ref -> rdi class-hnd single-def "impAppendStmt" +;* V113 tmp105 [V113 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V114 tmp106 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V115 tmp107 [V115 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V116 tmp108 [V116 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V119 tmp111 [V119 ] ( 0, 0 ) ref -> zero-ref +; V120 tmp112 [V120 ] ( 2, 16 ) int -> [rbp-0x6C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V121 tmp113 [V121 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V122 tmp114 [V122,T02] ( 3, 24 ) ref -> rax class-hnd "impAppendStmt" +;* V123 tmp115 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V124 tmp116 [V124 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V125 tmp117 [V125 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V126 tmp118 [V126 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V127 tmp119 [V127 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V128 tmp120 [V128 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V129 tmp121 [V129 ] ( 0, 0 ) ref -> zero-ref single-def +;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V131 tmp123 [V131 ] ( 2, 2 ) int -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V132 tmp124 [V132 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V133 tmp125 [V133,T31] ( 3, 3 ) ref -> rdi class-hnd single-def "impAppendStmt" +;* V134 tmp126 [V134 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V135 tmp127 [V135 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V136 tmp128 [V136 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V137 tmp129 [V137 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V138 tmp130 [V138 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V139 tmp131 [V139 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V140 tmp132 [V140,T49] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V141 tmp133 [V141 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +;* V142 tmp134 [V142 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP +;* V143 tmp135 [V143 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +;* V144 tmp136 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP +;* V145 tmp137 [V145 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP +;* V146 tmp138 [V146,T50] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP +;* V147 tmp139 [V147,T63] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP +;* V148 tmp140 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP +;* V149 tmp141 [V149 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP +;* V150 tmp142 [V150,T51] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP +;* V151 tmp143 [V151 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP +;* V152 tmp144 [V152 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP +;* V153 tmp145 [V153 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP +;* V154 tmp146 [V154 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V155 tmp147 [V155 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP +;* V156 tmp148 [V156,T52] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP +;* V157 tmp149 [V157,T64] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP +;* V158 tmp150 [V158 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP +;* V159 tmp151 [V159 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP +;* V160 tmp152 [V160,T53] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP +;* V161 tmp153 [V161 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP +;* V162 tmp154 [V162 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP +;* V163 tmp155 [V163 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP +;* V164 tmp156 [V164 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP +;* V165 tmp157 [V165 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP +;* V166 tmp158 [V166,T54] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP +;* V167 tmp159 [V167,T65] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP +;* V168 tmp160 [V168 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP +;* V169 tmp161 [V169 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP +;* V170 tmp162 [V170,T55] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP +;* V171 tmp163 [V171 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V172 tmp164 [V172 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP +;* V173 tmp165 [V173 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP +;* V174 tmp166 [V174 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP +;* V175 tmp167 [V175 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP +;* V176 tmp168 [V176,T56] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP +;* V177 tmp169 [V177,T66] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP +;* V178 tmp170 [V178 ] ( 0, 0 ) byref -> zero-ref single-def "field V63._reference (fldOffset=0x0)" P-INDEP +;* V179 tmp171 [V179 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP +;* V180 tmp172 [V180,T70] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP +;* V181 tmp173 [V181 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP +;* V182 tmp174 [V182 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP +;* V183 tmp175 [V183 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP +;* V184 tmp176 [V184 ] ( 0, 0 ) byref -> zero-ref single-def "field V72._reference (fldOffset=0x0)" P-INDEP +;* V185 tmp177 [V185 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP +;* V186 tmp178 [V186,T71] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP +;* V187 tmp179 [V187,T74] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP +;* V188 tmp180 [V188 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP +;* V189 tmp181 [V189 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP +;* V190 tmp182 [V190,T18] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP +;* V191 tmp183 [V191 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x8)" P-INDEP +;* V192 tmp184 [V192 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP +;* V193 tmp185 [V193 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP +;* V194 tmp186 [V194 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP +;* V195 tmp187 [V195 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP +;* V196 tmp188 [V196,T19] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP +;* V197 tmp189 [V197,T22] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP +;* V198 tmp190 [V198 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP +;* V199 tmp191 [V199 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP +;* V200 tmp192 [V200,T57] ( 0, 0 ) byref -> zero-ref single-def "field V90._reference (fldOffset=0x0)" P-INDEP +;* V201 tmp193 [V201 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x8)" P-INDEP +;* V202 tmp194 [V202 ] ( 0, 0 ) byref -> zero-ref "field V92._reference (fldOffset=0x0)" P-INDEP +;* V203 tmp195 [V203 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0x8)" P-INDEP +;* V204 tmp196 [V204 ] ( 0, 0 ) byref -> zero-ref single-def "field V93._reference (fldOffset=0x0)" P-INDEP +;* V205 tmp197 [V205 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0x8)" P-INDEP +;* V206 tmp198 [V206,T58] ( 0, 0 ) byref -> zero-ref single-def "field V94._reference (fldOffset=0x0)" P-INDEP +;* V207 tmp199 [V207,T67] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP +;* V208 tmp200 [V208 ] ( 0, 0 ) byref -> zero-ref single-def "field V95._reference (fldOffset=0x0)" P-INDEP +;* V209 tmp201 [V209 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP +;* V210 tmp202 [V210,T59] ( 0, 0 ) byref -> zero-ref single-def "field V100._reference (fldOffset=0x0)" P-INDEP +;* V211 tmp203 [V211 ] ( 0, 0 ) int -> zero-ref "field V100._length (fldOffset=0x8)" P-INDEP +;* V212 tmp204 [V212 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP +;* V213 tmp205 [V213 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP +;* V214 tmp206 [V214 ] ( 0, 0 ) byref -> zero-ref single-def "field V103._reference (fldOffset=0x0)" P-INDEP +;* V215 tmp207 [V215 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP +;* V216 tmp208 [V216,T60] ( 0, 0 ) byref -> zero-ref single-def "field V104._reference (fldOffset=0x0)" P-INDEP +;* V217 tmp209 [V217,T68] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP +;* V218 tmp210 [V218 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP +;* V219 tmp211 [V219 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP +;* V220 tmp212 [V220,T72] ( 0, 0 ) byref -> zero-ref single-def "field V111._reference (fldOffset=0x0)" P-INDEP +;* V221 tmp213 [V221 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP +;* V222 tmp214 [V222 ] ( 0, 0 ) byref -> zero-ref "field V113._reference (fldOffset=0x0)" P-INDEP +;* V223 tmp215 [V223 ] ( 0, 0 ) int -> zero-ref "field V113._length (fldOffset=0x8)" P-INDEP +;* V224 tmp216 [V224 ] ( 0, 0 ) byref -> zero-ref single-def "field V114._reference (fldOffset=0x0)" P-INDEP +;* V225 tmp217 [V225 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP +;* V226 tmp218 [V226,T73] ( 0, 0 ) byref -> zero-ref single-def "field V115._reference (fldOffset=0x0)" P-INDEP +;* V227 tmp219 [V227,T75] ( 0, 0 ) int -> zero-ref "field V115._length (fldOffset=0x8)" P-INDEP +;* V228 tmp220 [V228 ] ( 0, 0 ) byref -> zero-ref single-def "field V116._reference (fldOffset=0x0)" P-INDEP +;* V229 tmp221 [V229 ] ( 0, 0 ) int -> zero-ref "field V116._length (fldOffset=0x8)" P-INDEP +;* V230 tmp222 [V230,T20] ( 0, 0 ) byref -> zero-ref "field V121._reference (fldOffset=0x0)" P-INDEP +;* V231 tmp223 [V231 ] ( 0, 0 ) int -> zero-ref "field V121._length (fldOffset=0x8)" P-INDEP +;* V232 tmp224 [V232 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP +;* V233 tmp225 [V233 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP +;* V234 tmp226 [V234 ] ( 0, 0 ) byref -> zero-ref "field V124._reference (fldOffset=0x0)" P-INDEP +;* V235 tmp227 [V235 ] ( 0, 0 ) int -> zero-ref "field V124._length (fldOffset=0x8)" P-INDEP +;* V236 tmp228 [V236,T21] ( 0, 0 ) byref -> zero-ref "field V125._reference (fldOffset=0x0)" P-INDEP +;* V237 tmp229 [V237,T23] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP +;* V238 tmp230 [V238 ] ( 0, 0 ) byref -> zero-ref "field V126._reference (fldOffset=0x0)" P-INDEP +;* V239 tmp231 [V239 ] ( 0, 0 ) int -> zero-ref "field V126._length (fldOffset=0x8)" P-INDEP +;* V240 tmp232 [V240,T61] ( 0, 0 ) byref -> zero-ref single-def "field V132._reference (fldOffset=0x0)" P-INDEP +;* V241 tmp233 [V241 ] ( 0, 0 ) int -> zero-ref "field V132._length (fldOffset=0x8)" P-INDEP +;* V242 tmp234 [V242 ] ( 0, 0 ) byref -> zero-ref "field V134._reference (fldOffset=0x0)" P-INDEP +;* V243 tmp235 [V243 ] ( 0, 0 ) int -> zero-ref "field V134._length (fldOffset=0x8)" P-INDEP +;* V244 tmp236 [V244 ] ( 0, 0 ) byref -> zero-ref single-def "field V135._reference (fldOffset=0x0)" P-INDEP +;* V245 tmp237 [V245 ] ( 0, 0 ) int -> zero-ref "field V135._length (fldOffset=0x8)" P-INDEP +;* V246 tmp238 [V246,T62] ( 0, 0 ) byref -> zero-ref single-def "field V136._reference (fldOffset=0x0)" P-INDEP +;* V247 tmp239 [V247,T69] ( 0, 0 ) int -> zero-ref "field V136._length (fldOffset=0x8)" P-INDEP +;* V248 tmp240 [V248 ] ( 0, 0 ) byref -> zero-ref single-def "field V137._reference (fldOffset=0x0)" P-INDEP +;* V249 tmp241 [V249 ] ( 0, 0 ) int -> zero-ref "field V137._length (fldOffset=0x8)" P-INDEP +; V250 tmp242 [V250,T16] ( 5, 4 ) ref -> rbx single-def "V00.[000..008)" +; V251 tmp243 [V251,T14] ( 6, 4.50) ref -> r15 single-def "V00.[008..016)" +; V252 tmp244 [V252,T17] ( 5, 4 ) ref -> r14 single-def "V00.[016..024)" +; V253 tmp245 [V253,T24] ( 5, 3.50) ref -> r13 single-def "V00.[024..032)" +; V254 tmp246 [V254,T15] ( 6, 4.50) ref -> r12 single-def "V00.[032..040)" +; V255 tmp247 [V255,T13] ( 7, 4.50) ref -> [rbp-0xA0] spill-single-def "V00.[040..048)" +; V256 tmp248 [V256,T10] ( 9, 5.50) ref -> [rbp-0xA8] spill-single-def "V00.[048..056)" +; V257 tmp249 [V257,T32] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V258 tmp250 [V258,T09] ( 3, 6 ) ref -> rax single-def "argument with side effect" +; V259 tmp251 [V259,T77] ( 3, 0 ) ref -> rdi single-def "argument with side effect" +; V260 tmp252 [V260,T78] ( 3, 0 ) ref -> rdi single-def "argument with side effect" +; V261 tmp253 [V261,T33] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V262 tmp254 [V262,T34] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V263 tmp255 [V263,T79] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V264 PSPSym [V264,T48] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym" +; V265 cse0 [V265,T12] ( 6, 5 ) int -> rdx "CSE #01: moderate" ; -; Lcl frame size = 168 +; Lcl frame size = 200 G_M53852_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 168 - lea rbp, [rsp+0xD0] - mov qword ptr [rbp-0x90], rsp + sub rsp, 200 + lea rbp, [rsp+0xF0] + mov qword ptr [rbp-0xB0], rsp ;; size=32 bbWeight=1 PerfScore 7.75 G_M53852_IG02: mov rbx, gword ptr [rbp+0x10] mov r15, gword ptr [rbp+0x18] mov r14, gword ptr [rbp+0x20] mov r13, gword ptr [rbp+0x28] mov r12, gword ptr [rbp+0x30] mov rax, gword ptr [rbp+0x38] - mov gword ptr [rbp-0x78], rax + mov gword ptr [rbp-0xA0], rax mov rcx, gword ptr [rbp+0x40] - mov gword ptr [rbp-0x80], rcx + mov gword ptr [rbp-0xA8], rcx test rbx, rbx je G_M53852_IG42 mov edx, dword ptr [rbx+0x08] test edx, edx je G_M53852_IG42 test r15, r15 je G_M53852_IG42 cmp dword ptr [r15+0x08], 20 jne G_M53852_IG42 test r14, r14 je G_M53852_IG42 cmp dword ptr [r14+0x08], edx jne G_M53852_IG42 test r12, r12 je SHORT G_M53852_IG04 - ;; size=100 bbWeight=1 PerfScore 25.25 + ;; size=106 bbWeight=1 PerfScore 25.25 G_M53852_IG03: cmp dword ptr [r12+0x08], edx jge G_M53852_IG42 ;; size=11 bbWeight=0.50 PerfScore 2.00 G_M53852_IG04: test r13, r13 je SHORT G_M53852_IG06 ;; size=5 bbWeight=1 PerfScore 1.25 G_M53852_IG05: cmp dword ptr [r13+0x08], edx jne G_M53852_IG42 ;; size=10 bbWeight=0.50 PerfScore 2.00 G_M53852_IG06: test rcx, rcx je SHORT G_M53852_IG08 ;; size=5 bbWeight=1 PerfScore 1.25 G_M53852_IG07: cmp dword ptr [rcx+0x08], 20 - mov rcx, gword ptr [rbp-0x80] + mov rcx, gword ptr [rbp-0xA8] jne G_M53852_IG42 - ;; size=14 bbWeight=0.50 PerfScore 2.50 + ;; size=17 bbWeight=0.50 PerfScore 2.50 G_M53852_IG08: test rax, rax je SHORT G_M53852_IG10 ;; size=5 bbWeight=1 PerfScore 1.25 G_M53852_IG09: cmp dword ptr [rax+0x08], 0 setne dil movzx rdi, dil jmp SHORT G_M53852_IG11 ;; size=14 bbWeight=0.50 PerfScore 3.12 G_M53852_IG10: xor edi, edi ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M53852_IG11: movzx rsi, dil mov dword ptr [rbp-0x2C], esi test esi, esi je SHORT G_M53852_IG13 ;; size=11 bbWeight=1 PerfScore 2.50 G_M53852_IG12: cmp dword ptr [rax+0x08], 20 - mov rax, gword ptr [rbp-0x78] + mov rax, gword ptr [rbp-0xA0] jne G_M53852_IG42 - ;; size=14 bbWeight=0.50 PerfScore 2.50 + ;; size=17 bbWeight=0.50 PerfScore 2.50 G_M53852_IG13: shl edx, 3 mov dword ptr [rbp-0x30], edx test r12, r12 je SHORT G_M53852_IG15 ;; size=11 bbWeight=1 PerfScore 2.75 G_M53852_IG14: mov r8d, dword ptr [r12+0x08] shl r8d, 3 jmp SHORT G_M53852_IG16 ;; size=11 bbWeight=0.50 PerfScore 2.25 G_M53852_IG15: xor r8d, r8d ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M53852_IG16: mov dword ptr [rbp-0x34], r8d mov rdi, 0xD1FFAB1E ; System.IO.MemoryStream call CORINFO_HELP_NEWSFAST - mov gword ptr [rbp-0x60], rax + mov gword ptr [rbp-0x88], rax mov rdi, rax xor esi, esi mov rcx, 0xD1FFAB1E ; code for System.IO.MemoryStream:.ctor(int):this call [rcx]System.IO.MemoryStream:.ctor(int):this - mov rax, gword ptr [rbp-0x60] - mov gword ptr [rbp-0x50], rax - ;; size=48 bbWeight=1 PerfScore 9.00 + mov rax, gword ptr [rbp-0x88] + mov gword ptr [rbp-0x78], rax + ;; size=54 bbWeight=1 PerfScore 9.00 G_M53852_IG17: mov rdi, 0xD1FFAB1E ; System.IO.BinaryWriter call CORINFO_HELP_NEWSFAST - mov gword ptr [rbp-0x68], rax + mov gword ptr [rbp-0x90], rax mov rdi, 0xD1FFAB1E ; const ptr mov rcx, gword ptr [rdi] - mov gword ptr [rbp-0x70], rcx - mov rdx, gword ptr [rbp-0x60] + mov gword ptr [rbp-0x98], rcx + mov rdx, gword ptr [rbp-0x88] cmp byte ptr [rdx+0x29], 0 je G_M53852_IG39 lea rdi, bword ptr [rax+0x08] mov rsi, rdx call CORINFO_HELP_ASSIGN_REF - mov rax, gword ptr [rbp-0x68] + mov rax, gword ptr [rbp-0x90] lea rdi, bword ptr [rax+0x10] - mov rsi, gword ptr [rbp-0x70] + mov rsi, gword ptr [rbp-0x98] call CORINFO_HELP_ASSIGN_REF - mov rax, gword ptr [rbp-0x68] + mov rax, gword ptr [rbp-0x90] mov byte ptr [rax+0x18], 0 - mov rdi, gword ptr [rbp-0x70] + mov rdi, gword ptr [rbp-0x98] cmp dword ptr [rdi+0x20], 0xFDE9 jne SHORT G_M53852_IG19 - ;; size=100 bbWeight=1 PerfScore 22.75 + ;; size=121 bbWeight=1 PerfScore 22.75 G_M53852_IG18: mov rdi, gword ptr [rdi+0x10] mov rcx, qword ptr [rdi] mov rcx, qword ptr [rcx+0x40] call [rcx+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this cmp eax, 1 setle cl movzx rcx, cl jmp SHORT G_M53852_IG20 ;; size=25 bbWeight=0.50 PerfScore 6.25 G_M53852_IG19: xor ecx, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M53852_IG20: - mov rax, gword ptr [rbp-0x68] + mov rax, gword ptr [rbp-0x90] mov byte ptr [rax+0x19], cl - mov gword ptr [rbp-0x58], rax - ;; size=11 bbWeight=1 PerfScore 3.00 + mov gword ptr [rbp-0x80], rax + ;; size=14 bbWeight=1 PerfScore 3.00 G_M53852_IG21: lea rdi, [rsp] lea rsi, [rbp+0x10] mov rcx, gword ptr [rsi] mov gword ptr [rsp], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x08], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x10], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x18], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x20], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x28], rcx add rsi, 8 add rdi, 8 mov rcx, gword ptr [rsi] mov gword ptr [rsp+0x30], rcx add rsi, 8 add rdi, 8 movsq lea rdx, [rbp-0x40] mov rdi, rax mov esi, dword ptr [rbp-0x2C] mov rcx, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteKeyBlobHeader(System.Security.Cryptography.DSAParameters,System.IO.BinaryWriter,ubyte,byref) call [rcx]System.Security.Cryptography.CapiHelper:WriteKeyBlobHeader(System.Security.Cryptography.DSAParameters,System.IO.BinaryWriter,ubyte,byref) cmp byte ptr [rbp-0x40], 0 je G_M53852_IG29 ;; size=153 bbWeight=1 PerfScore 34.50 G_M53852_IG22: mov esi, 0xD1FFAB1E mov edi, 0xD1FFAB1E cmp dword ptr [rbp-0x2C], 0 cmove esi, edi - mov rdi, gword ptr [rbp-0x68] + mov rdi, gword ptr [rbp-0x90] mov rcx, 0xD1FFAB1E mov rcx, qword ptr [rcx] call [rcx+0x38]System.IO.BinaryWriter:Write(int):this - mov rdi, gword ptr [rbp-0x68] - mov esi, dword ptr [rbp-0x30] - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this + mov eax, dword ptr [rbp-0x30] + mov dword ptr [rbp-0x44], eax + mov rcx, gword ptr [rbp-0x90] + mov rdi, gword ptr [rcx+0x08] + lea rsi, bword ptr [rbp-0x44] + mov edx, 4 + mov rax, qword ptr [rdi] + mov rax, qword ptr [rax+0x60] + call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov esi, dword ptr [r15+0x08] shl esi, 3 - mov rdi, gword ptr [rbp-0x68] - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - mov rdi, gword ptr [rbp-0x68] - mov esi, dword ptr [rbp-0x34] - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this + mov dword ptr [rbp-0x48], esi + mov rax, gword ptr [rbp-0x90] + mov rdi, gword ptr [rax+0x08] + lea rsi, bword ptr [rbp-0x48] + mov edx, 4 + mov rcx, qword ptr [rdi] + mov rcx, qword ptr [rcx+0x60] + call [rcx+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov eax, dword ptr [rbp-0x34] + mov dword ptr [rbp-0x4C], eax + mov rcx, gword ptr [rbp-0x90] + mov rdi, gword ptr [rcx+0x08] + lea rsi, bword ptr [rbp-0x4C] + mov edx, 4 + mov r8, qword ptr [rdi] + mov r8, qword ptr [r8+0x60] + call [r8+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this cmp dword ptr [rbp-0x2C], 0 je SHORT G_M53852_IG23 - mov rcx, gword ptr [rbp-0x78] + mov rcx, gword ptr [rbp-0xA0] mov esi, dword ptr [rcx+0x08] shl esi, 3 - mov rdi, gword ptr [rbp-0x68] - mov rdx, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rdx]System.IO.BinaryWriter:Write(uint):this - ;; size=130 bbWeight=0.50 PerfScore 18.50 + mov dword ptr [rbp-0x50], esi + mov r8, gword ptr [rbp-0x90] + mov rdi, gword ptr [r8+0x08] + lea rsi, bword ptr [rbp-0x50] + mov edx, 4 + mov r9, qword ptr [rdi] + mov r9, qword ptr [r9+0x60] + call [r9+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + ;; size=206 bbWeight=0.50 PerfScore 33.50 G_M53852_IG23: - mov rcx, gword ptr [rbp-0x80] + mov rcx, gword ptr [rbp-0xA8] test rcx, rcx je SHORT G_M53852_IG24 cmp dword ptr [rcx+0x08], 0 jne G_M53852_IG35 - ;; size=19 bbWeight=0.50 PerfScore 3.12 + ;; size=22 bbWeight=0.50 PerfScore 3.12 G_M53852_IG24: - mov rdi, gword ptr [rbp-0x68] - mov esi, -1 - mov rcx, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rcx]System.IO.BinaryWriter:Write(uint):this + mov dword ptr [rbp-0x58], -1 + mov r8, gword ptr [rbp-0x90] + mov rdi, gword ptr [r8+0x08] + lea rsi, bword ptr [rbp-0x58] + mov edx, 4 + mov rcx, qword ptr [rdi] + mov rcx, qword ptr [rcx+0x60] + call [rcx+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this xor eax, eax - mov dword ptr [rbp-0x44], eax - ;; size=26 bbWeight=0.25 PerfScore 1.44 + mov dword ptr [rbp-0x54], eax + ;; size=42 bbWeight=0.25 PerfScore 3.25 G_M53852_IG25: - mov rdi, gword ptr [rbp-0x58] - mov esi, -1 - mov rcx, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rcx]System.IO.BinaryWriter:Write(uint):this - mov eax, dword ptr [rbp-0x44] + mov dword ptr [rbp-0x5C], -1 + mov rdi, gword ptr [rbp-0x80] + mov rcx, gword ptr [rdi+0x08] + lea rsi, bword ptr [rbp-0x5C] + mov edx, 4 + mov rdi, rcx + mov rcx, qword ptr [rcx] + mov rcx, qword ptr [rcx+0x60] + call [rcx+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov eax, dword ptr [rbp-0x54] add eax, 4 cmp eax, 20 - mov dword ptr [rbp-0x44], eax + mov dword ptr [rbp-0x54], eax jl SHORT G_M53852_IG25 - ;; size=35 bbWeight=4 PerfScore 32.00 + ;; size=51 bbWeight=4 PerfScore 62.00 G_M53852_IG26: - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rsi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) cmp dword ptr [rbp-0x34], 0 je SHORT G_M53852_IG27 - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rsi, r12 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) ;; size=82 bbWeight=0.50 PerfScore 10.50 G_M53852_IG27: - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) cmp dword ptr [rbp-0x2C], 0 je SHORT G_M53852_IG28 - mov rdi, gword ptr [rbp-0x58] - mov rsi, gword ptr [rbp-0x78] + mov rdi, gword ptr [rbp-0x80] + mov rsi, gword ptr [rbp-0xA0] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - ;; size=45 bbWeight=0.50 PerfScore 6.38 + ;; size=48 bbWeight=0.50 PerfScore 6.38 G_M53852_IG28: - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] mov rax, gword ptr [rdi+0x08] mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x50] call [rax+0x30]System.IO.Stream:Flush():this - mov rdi, gword ptr [rbp-0x50] + mov rdi, gword ptr [rbp-0x78] mov rax, 0xD1FFAB1E ; code for System.IO.MemoryStream:ToArray():ubyte[]:this call [rax]System.IO.MemoryStream:ToArray():ubyte[]:this mov r12, rax jmp G_M53852_IG36 ;; size=45 bbWeight=1 PerfScore 16.75 G_M53852_IG29: mov esi, 0xD1FFAB1E mov edi, 0xD1FFAB1E mov r12d, dword ptr [rbp-0x2C] test r12d, r12d cmove esi, edi - mov rdi, gword ptr [rbp-0x68] + mov rdi, gword ptr [rbp-0x90] mov rax, 0xD1FFAB1E mov rax, qword ptr [rax] call [rax+0x38]System.IO.BinaryWriter:Write(int):this - mov rdi, gword ptr [rbp-0x68] mov esi, dword ptr [rbp-0x30] - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - mov rdi, gword ptr [rbp-0x68] + mov dword ptr [rbp-0x64], esi + mov rax, gword ptr [rbp-0x90] + mov rdi, gword ptr [rax+0x08] + lea rsi, bword ptr [rbp-0x64] + mov edx, 4 + mov rcx, qword ptr [rdi] + mov rcx, qword ptr [rcx+0x60] + call [rcx+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov rdi, gword ptr [rbp-0x90] mov rsi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - mov rdi, gword ptr [rbp-0x68] + mov rdi, gword ptr [rbp-0x90] mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - mov rdi, gword ptr [rbp-0x68] + mov rdi, gword ptr [rbp-0x90] mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) test r12d, r12d je SHORT G_M53852_IG30 - mov rdi, gword ptr [rbp-0x68] - mov rsi, gword ptr [rbp-0x78] + mov rdi, gword ptr [rbp-0x90] + mov rsi, gword ptr [rbp-0xA0] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) jmp SHORT G_M53852_IG31 - ;; size=143 bbWeight=0.50 PerfScore 17.75 + ;; size=178 bbWeight=0.50 PerfScore 21.50 G_M53852_IG30: - mov rdi, gword ptr [rbp-0x68] + mov rdi, gword ptr [rbp-0x90] mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) - ;; size=19 bbWeight=0.50 PerfScore 2.25 + ;; size=22 bbWeight=0.50 PerfScore 2.25 G_M53852_IG31: - mov rbx, gword ptr [rbp-0x80] + mov rbx, gword ptr [rbp-0xA8] test rbx, rbx je SHORT G_M53852_IG32 cmp dword ptr [rbx+0x08], 0 jne SHORT G_M53852_IG34 - ;; size=15 bbWeight=0.50 PerfScore 3.12 + ;; size=18 bbWeight=0.50 PerfScore 3.12 G_M53852_IG32: - mov rdi, gword ptr [rbp-0x68] - mov esi, -1 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - xor ebx, ebx - ;; size=23 bbWeight=0.25 PerfScore 1.19 + mov dword ptr [rbp-0x68], -1 + mov r15, gword ptr [rbp-0x90] + mov rdi, gword ptr [r15+0x08] + lea rsi, bword ptr [rbp-0x68] + mov edx, 4 + mov rax, qword ptr [rdi] + mov rax, qword ptr [rax+0x60] + call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + xor r15d, r15d + ;; size=40 bbWeight=0.25 PerfScore 3.00 G_M53852_IG33: - mov rdi, gword ptr [rbp-0x58] - mov esi, -1 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - add ebx, 4 - cmp ebx, 20 + mov dword ptr [rbp-0x6C], -1 + mov rdi, gword ptr [rbp-0x80] + mov rax, gword ptr [rdi+0x08] + lea rsi, bword ptr [rbp-0x6C] + mov edx, 4 + mov rdi, rax + mov rax, qword ptr [rax] + mov rax, qword ptr [rax+0x60] + call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + add r15d, 4 + cmp r15d, 20 jl SHORT G_M53852_IG33 jmp G_M53852_IG28 - ;; size=34 bbWeight=4 PerfScore 32.00 + ;; size=52 bbWeight=4 PerfScore 62.00 G_M53852_IG34: - mov rdi, gword ptr [rbp-0x68] mov esi, dword ptr [rbp+0x48] - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(int):this - call [rax]System.IO.BinaryWriter:Write(int):this - mov rdi, gword ptr [rbp-0x68] + mov dword ptr [rbp-0x70], esi + mov r15, gword ptr [rbp-0x90] + mov rdi, gword ptr [r15+0x08] + lea rsi, bword ptr [rbp-0x70] + mov edx, 4 + mov rax, qword ptr [rdi] + mov rax, qword ptr [rax+0x60] + call [rax+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov rdi, r15 mov rsi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) jmp G_M53852_IG28 - ;; size=43 bbWeight=0.50 PerfScore 5.88 + ;; size=59 bbWeight=0.50 PerfScore 9.25 G_M53852_IG35: - mov rdi, gword ptr [rbp-0x68] mov esi, dword ptr [rbp+0x48] - mov rdx, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(int):this - call [rdx]System.IO.BinaryWriter:Write(int):this - mov rdi, gword ptr [rbp-0x68] - mov rsi, gword ptr [rbp-0x80] + mov dword ptr [rbp-0x60], esi + mov r8, gword ptr [rbp-0x90] + mov rdi, gword ptr [r8+0x08] + lea rsi, bword ptr [rbp-0x60] + mov edx, 4 + mov r9, qword ptr [rdi] + mov r9, qword ptr [r9+0x60] + call [r9+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov rdi, gword ptr [rbp-0x90] + mov rsi, gword ptr [rbp-0xA8] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) call [rax]System.Security.Cryptography.CapiHelper:WriteReversed(System.IO.BinaryWriter,ubyte[]) jmp G_M53852_IG26 - ;; size=44 bbWeight=0.50 PerfScore 6.25 + ;; size=68 bbWeight=0.50 PerfScore 10.00 G_M53852_IG36: - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] cmp byte ptr [rdi+0x18], 0 je SHORT G_M53852_IG38 ;; size=10 bbWeight=1 PerfScore 5.00 G_M53852_IG37: mov rdi, gword ptr [rdi+0x08] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x30]System.IO.Stream:Flush():this jmp SHORT G_M53852_IG40 ;; size=16 bbWeight=0.50 PerfScore 5.50 G_M53852_IG38: mov rdi, gword ptr [rdi+0x08] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x18]System.IO.Stream:Close():this jmp SHORT G_M53852_IG40 ;; size=16 bbWeight=0.50 PerfScore 5.50 G_M53852_IG39: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_StreamNotWritable():System.String call [rax]System.SR:get_Argument_StreamNotWritable():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M53852_IG40: - mov rdi, gword ptr [rbp-0x50] + mov rdi, gword ptr [rbp-0x78] mov rax, 0xD1FFAB1E ; code for System.IO.Stream:Dispose():this call [rax]System.IO.Stream:Dispose():this mov rax, r12 ;; size=19 bbWeight=1 PerfScore 4.50 G_M53852_IG41: - add rsp, 168 + add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=1 PerfScore 4.25 G_M53852_IG42: mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CapiHelper:GetBadDataException():System.Security.Cryptography.CryptographicException call [rax]System.Security.Cryptography.CapiHelper:GetBadDataException():System.Security.Cryptography.CryptographicException mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=21 bbWeight=0 PerfScore 0.00 G_M53852_IG43: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 72 mov rbp, qword ptr [rdi+0x40] mov qword ptr [rsp+0x40], rbp - lea rbp, [rbp+0xD0] + lea rbp, [rbp+0xF0] ;; size=30 bbWeight=0 PerfScore 0.00 G_M53852_IG44: - mov rdi, gword ptr [rbp-0x58] + mov rdi, gword ptr [rbp-0x80] cmp byte ptr [rdi+0x18], 0 jne SHORT G_M53852_IG45 mov rdi, gword ptr [rdi+0x08] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x18]System.IO.Stream:Close():this jmp SHORT G_M53852_IG46 ;; size=26 bbWeight=0 PerfScore 0.00 G_M53852_IG45: mov rdi, gword ptr [rdi+0x08] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x30]System.IO.Stream:Flush():this ;; size=14 bbWeight=0 PerfScore 0.00 G_M53852_IG46: nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M53852_IG47: add rsp, 72 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 G_M53852_IG48: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 72 mov rbp, qword ptr [rdi+0x40] mov qword ptr [rsp+0x40], rbp - lea rbp, [rbp+0xD0] + lea rbp, [rbp+0xF0] ;; size=30 bbWeight=0 PerfScore 0.00 G_M53852_IG49: - mov rdi, gword ptr [rbp-0x50] + mov rdi, gword ptr [rbp-0x78] mov rax, 0xD1FFAB1E ; code for System.IO.Stream:Dispose():this call [rax]System.IO.Stream:Dispose():this nop ;; size=17 bbWeight=0 PerfScore 0.00 G_M53852_IG50: add rsp, 72 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1595, prolog size 32, PerfScore 314.12, instruction count 402, allocated bytes for code 1595 (MethodHash=e0822da3) for method System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts) +; Total bytes of code 1867, prolog size 32, PerfScore 403.62, instruction count 455, allocated bytes for code 1867 (MethodHash=e0822da3) for method System.Security.Cryptography.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):ubyte[] (FullOpts) ```

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

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

MihuBot commented 3 months ago

Top method improvements

-54 (-15.13 % of base) - System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this ```diff ; Assembly listing for method System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 10 single block inlinees; 4 inlinees without PGO data +; 0 inlinees with PGO data; 18 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T03] ( 5, 5 ) byref -> r15 this single-def -; V01 arg1 [V01,T01] ( 6, 6 ) ref -> rbx class-hnd single-def +; V00 this [V00,T02] ( 5, 5 ) byref -> r15 this single-def +; V01 arg1 [V01,T00] ( 9, 9 ) ref -> rbx class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T00] ( 8, 16 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V04 tmp2 [V04,T04] ( 4, 7 ) ref -> r13 class-hnd exact single-def "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def -; V07 tmp5 [V07,T07] ( 3, 2 ) int -> rsi -; V08 tmp6 [V08,T08] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V09 tmp7 [V09,T02] ( 4, 8 ) ref -> rsi class-hnd single-def "Inlining Arg" -; V10 tmp8 [V10,T06] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V11 tmp9 [V11,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V12 rat0 [V12,T05] ( 3, 6 ) ref -> rdi "virtual vtable call" +;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" +; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> r14 class-hnd exact single-def "Inlining Arg" +;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref +; V08 tmp6 [V08,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref +; V10 tmp8 [V10,T05] ( 2, 4 ) ushort -> rsi "Inlining Arg" +; V11 tmp9 [V11 ] ( 2, 4 ) ushort -> [rbp-0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref +; V21 tmp19 [V21,T06] ( 2, 4 ) ushort -> rsi "Inlining Arg" +; V22 tmp20 [V22 ] ( 2, 4 ) ushort -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V25 tmp23 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V26 tmp24 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V27 tmp25 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V30 tmp28 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V31 tmp29 [V31,T01] ( 4, 8 ) ref -> rsi class-hnd single-def "Inlining Arg" +;* V32 tmp30 [V32 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" +;* V33 tmp31 [V33,T08] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP +;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP +;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP +;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP +;* V39 tmp37 [V39,T09] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V40 tmp38 [V40,T12] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP +;* V43 tmp41 [V43,T10] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP +;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP +;* V45 tmp43 [V45 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP +;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP +;* V47 tmp45 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V48 tmp46 [V48 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +;* V49 tmp47 [V49,T11] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V50 tmp48 [V50,T13] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP +;* V51 tmp49 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP +;* V52 tmp50 [V52 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +;* V53 tmp51 [V53 ] ( 0, 0 ) long -> zero-ref "V32.[000..008)" +;* V54 tmp52 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "V32.[008..016)" +;* V55 tmp53 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "V32.[016..024)" +;* V56 tmp54 [V56 ] ( 0, 0 ) ubyte -> zero-ref "V32.[024..025)" +;* V57 tmp55 [V57 ] ( 0, 0 ) ubyte -> zero-ref "V32.[025..026)" +; V58 tmp56 [V58,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V59 tmp57 [V59,T15] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V60 cse0 [V60,T04] ( 4, 4 ) long -> r14 "CSE #02: moderate" ; -; Lcl frame size = 0 +; Lcl frame size = 8 G_M45311_IG01: push rbp push r15 push r14 - push r13 push rbx + push rax lea rbp, [rsp+0x20] mov r15, rdi mov rbx, rsi - ;; size=19 bbWeight=1 PerfScore 6.00 + ;; size=18 bbWeight=1 PerfScore 6.00 G_M45311_IG02: - mov rdi, 0xD1FFAB1E ; System.IO.BinaryWriter - call CORINFO_HELP_NEWSFAST - mov r14, rax mov rdi, 0xD1FFAB1E ; const ptr - mov r13, gword ptr [rdi] + mov r14, gword ptr [rdi] test rbx, rbx - je G_M45311_IG09 + je G_M45311_IG08 mov rdi, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x40] call [rax+0x30]System.IO.Stream:get_CanWrite():ubyte:this test eax, eax - je G_M45311_IG08 - lea rdi, bword ptr [r14+0x08] - mov rsi, rbx - call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [r14+0x10] - mov rsi, r13 - call CORINFO_HELP_ASSIGN_REF - mov byte ptr [r14+0x18], 0 - cmp dword ptr [r13+0x20], 0xFDE9 + je G_M45311_IG07 + cmp dword ptr [r14+0x20], 0xFDE9 jne SHORT G_M45311_IG04 - ;; size=100 bbWeight=1 PerfScore 22.00 + ;; size=53 bbWeight=1 PerfScore 16.00 G_M45311_IG03: - mov rdi, gword ptr [r13+0x10] + mov rdi, gword ptr [r14+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this - cmp eax, 1 - setle sil - movzx rsi, sil - jmp SHORT G_M45311_IG05 - ;; size=27 bbWeight=0.50 PerfScore 6.25 + ;; size=14 bbWeight=0.50 PerfScore 4.50 G_M45311_IG04: - xor esi, esi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M45311_IG05: - mov byte ptr [r14+0x19], sil movzx rsi, word ptr [r15+0x08] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(ushort):this - call [rax]System.IO.BinaryWriter:Write(ushort):this + mov word ptr [rbp-0x1C], si + lea rsi, bword ptr [rbp-0x1C] + mov edx, 2 + mov rdi, rbx + mov rax, qword ptr [rbx] + mov r14, qword ptr [rax+0x60] + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this movzx rsi, word ptr [r15+0x0A] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(ushort):this - call [rax]System.IO.BinaryWriter:Write(ushort):this + mov word ptr [rbp-0x20], si + lea rsi, bword ptr [rbp-0x20] + mov edx, 2 + mov rdi, rbx + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov rsi, gword ptr [r15] test rsi, rsi - je SHORT G_M45311_IG07 - mov rdi, gword ptr [r14+0x08] + je SHORT G_M45311_IG06 mov ecx, dword ptr [rsi+0x08] + mov rdi, rbx xor edx, edx - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x60] - ;; size=68 bbWeight=1 PerfScore 23.50 -G_M45311_IG06: + call [r14+0x30]System.IO.Stream:Write(ubyte[],int,int):this + nop + ;; size=78 bbWeight=1 PerfScore 27.00 +G_M45311_IG05: + add rsp, 8 pop rbx - pop r13 pop r14 pop r15 pop rbp - tail.jmp [rax+0x30]System.IO.Stream:Write(ubyte[],int,int):this - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M45311_IG07: + ret + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M45311_IG06: mov edi, 0x137F6 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) call [rax]System.ArgumentNullException:Throw(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -G_M45311_IG08: +G_M45311_IG07: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_StreamNotWritable():System.String call [rax]System.SR:get_Argument_StreamNotWritable():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 -G_M45311_IG09: +G_M45311_IG08: mov edi, 0x146D0 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) call [rax]System.ArgumentNullException:Throw(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 357, prolog size 13, PerfScore 62.38, instruction count 88, allocated bytes for code 357 (MethodHash=7a694f00) for method System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts) +; Total bytes of code 303, prolog size 12, PerfScore 56.75, instruction count 78, allocated bytes for code 303 (MethodHash=7a694f00) for method System.IO.Compression.ZipGenericExtraField:WriteBlock(System.IO.Stream):this (FullOpts) ```
-42 (-12.77 % of base) - System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) ```diff ; Assembly listing for method System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data +; 0 inlinees with PGO data; 22 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T01] ( 6, 6 ) ref -> rbx class-hnd single-def +; V00 arg0 [V00,T00] ( 10, 10 ) ref -> rbx class-hnd single-def ; V01 arg1 [V01,T03] ( 3, 3 ) long -> r15 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T00] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V04 tmp2 [V04,T02] ( 4, 7 ) ref -> r13 class-hnd exact single-def "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def -; V07 tmp5 [V07,T05] ( 3, 2 ) int -> rdi -; V08 tmp6 [V08,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V09 tmp7 [V09,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V10 tmp8 [V10,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" +; V04 tmp2 [V04,T02] ( 3, 5 ) ref -> r14 class-hnd exact single-def "Inlining Arg" +;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref +;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref +;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref +; V08 tmp6 [V08,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref +; V10 tmp8 [V10 ] ( 2, 4 ) int -> [rbp-0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref +; V20 tmp18 [V20 ] ( 2, 4 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V24 tmp22 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V25 tmp23 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V26 tmp24 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V28 tmp26 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref +; V30 tmp28 [V30 ] ( 2, 4 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V31 tmp29 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V33 tmp31 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V34 tmp32 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V39 tmp37 [V39 ] ( 0, 0 ) byref -> zero-ref +; V40 tmp38 [V40 ] ( 2, 4 ) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V41 tmp39 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V42 tmp40 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V43 tmp41 [V43 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V44 tmp42 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V45 tmp43 [V45 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V46 tmp44 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V47 tmp45 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V48 tmp46 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V49 tmp47 [V49 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" +;* V50 tmp48 [V50,T05] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP +;* V51 tmp49 [V51 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP +;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP +;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP +;* V54 tmp52 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP +;* V55 tmp53 [V55 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP +;* V56 tmp54 [V56,T06] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP +;* V57 tmp55 [V57,T13] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP +;* V58 tmp56 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V59 tmp57 [V59 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP +;* V60 tmp58 [V60,T07] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP +;* V61 tmp59 [V61 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP +;* V62 tmp60 [V62 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP +;* V63 tmp61 [V63 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP +;* V64 tmp62 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP +;* V65 tmp63 [V65 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP +;* V66 tmp64 [V66,T08] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP +;* V67 tmp65 [V67,T14] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP +;* V68 tmp66 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp67 [V69 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +;* V70 tmp68 [V70,T09] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP +;* V71 tmp69 [V71 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP +;* V72 tmp70 [V72 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP +;* V73 tmp71 [V73 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP +;* V74 tmp72 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp73 [V75 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP +;* V76 tmp74 [V76,T10] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP +;* V77 tmp75 [V77,T15] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP +;* V78 tmp76 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp77 [V79 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP +;* V80 tmp78 [V80,T11] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp79 [V81 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP +;* V82 tmp80 [V82 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp81 [V83 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +;* V84 tmp82 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP +;* V85 tmp83 [V85 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP +;* V86 tmp84 [V86,T12] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP +;* V87 tmp85 [V87,T16] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP +;* V88 tmp86 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP +;* V89 tmp87 [V89 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP +;* V90 tmp88 [V90 ] ( 0, 0 ) long -> zero-ref "V49.[000..008)" +;* V91 tmp89 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "V49.[008..016)" +;* V92 tmp90 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "V49.[016..024)" +;* V93 tmp91 [V93 ] ( 0, 0 ) ubyte -> zero-ref "V49.[024..025)" +;* V94 tmp92 [V94 ] ( 0, 0 ) ubyte -> zero-ref "V49.[025..026)" +; V95 tmp93 [V95,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V96 tmp94 [V96,T18] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V97 cse0 [V97,T01] ( 5, 5 ) long -> r14 "CSE #02: aggressive" ; -; Lcl frame size = 0 +; Lcl frame size = 24 G_M55626_IG01: push rbp push r15 push r14 - push r13 push rbx - lea rbp, [rsp+0x20] + sub rsp, 24 + lea rbp, [rsp+0x30] mov rbx, rdi mov r15, rsi - ;; size=19 bbWeight=1 PerfScore 6.00 + ;; size=21 bbWeight=1 PerfScore 5.25 G_M55626_IG02: - mov rdi, 0xD1FFAB1E ; System.IO.BinaryWriter - call CORINFO_HELP_NEWSFAST - mov r14, rax mov rdi, 0xD1FFAB1E ; const ptr - mov r13, gword ptr [rdi] + mov r14, gword ptr [rdi] test rbx, rbx - je G_M55626_IG08 + je G_M55626_IG07 mov rdi, rbx mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x40] call [rax+0x30]System.IO.Stream:get_CanWrite():ubyte:this test eax, eax - je G_M55626_IG07 - lea rdi, bword ptr [r14+0x08] - mov rsi, rbx - call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [r14+0x10] - mov rsi, r13 - call CORINFO_HELP_ASSIGN_REF - mov byte ptr [r14+0x18], 0 - cmp dword ptr [r13+0x20], 0xFDE9 + je G_M55626_IG06 + cmp dword ptr [r14+0x20], 0xFDE9 jne SHORT G_M55626_IG04 - ;; size=100 bbWeight=1 PerfScore 22.00 + ;; size=53 bbWeight=1 PerfScore 16.00 G_M55626_IG03: - mov rdi, gword ptr [r13+0x10] + mov rdi, gword ptr [r14+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this - cmp eax, 1 - setle dil - movzx rdi, dil - jmp SHORT G_M55626_IG05 - ;; size=27 bbWeight=0.50 PerfScore 6.25 + ;; size=14 bbWeight=0.50 PerfScore 4.50 G_M55626_IG04: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M55626_IG05: - mov byte ptr [r14+0x19], dil - mov rdi, r14 - mov esi, 0xD1FFAB1E - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - mov rdi, r14 + mov dword ptr [rbp-0x1C], 0xD1FFAB1E + lea rsi, bword ptr [rbp-0x1C] + mov edx, 4 + mov rdi, rbx + mov rax, qword ptr [rbx] + mov r14, qword ptr [rax+0x60] + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this xor esi, esi - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this - mov rdi, r14 - mov rsi, r15 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this - call [rax]System.IO.BinaryWriter:Write(long):this - mov rdi, r14 - mov esi, 1 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - ;; size=77 bbWeight=1 PerfScore 13.00 -G_M55626_IG06: + mov dword ptr [rbp-0x20], esi + lea rsi, bword ptr [rbp-0x20] + mov edx, 4 + mov rdi, rbx + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov qword ptr [rbp-0x28], r15 + lea rsi, bword ptr [rbp-0x28] + mov edx, 8 + mov rdi, rbx + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + mov dword ptr [rbp-0x2C], 1 + lea rsi, bword ptr [rbp-0x2C] + mov edx, 4 + mov rdi, rbx + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + nop + ;; size=95 bbWeight=1 PerfScore 24.50 +G_M55626_IG05: + add rsp, 24 pop rbx - pop r13 pop r14 pop r15 pop rbp - tail.jmp [rax]System.IO.BinaryWriter:Write(uint):this - ;; size=11 bbWeight=1 PerfScore 4.50 -G_M55626_IG07: + ret + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M55626_IG06: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_StreamNotWritable():System.String call [rax]System.SR:get_Argument_StreamNotWritable():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 -G_M55626_IG08: +G_M55626_IG07: mov edi, 0x146D0 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) call [rax]System.ArgumentNullException:Throw(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 329, prolog size 13, PerfScore 51.88, instruction count 80, allocated bytes for code 329 (MethodHash=063826b5) for method System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts) +; Total bytes of code 287, prolog size 15, PerfScore 53.50, instruction count 73, allocated bytes for code 287 (MethodHash=063826b5) for method System.IO.Compression.Zip64EndOfCentralDirectoryLocator:WriteBlock(System.IO.Stream,long) (FullOpts) ```
-36 (-8.96 % of base) - System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this ```diff ; Assembly listing for method System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data -; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data +; 0 inlinees with PGO data; 31 single block inlinees; 16 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T02] ( 10, 7.50) ref -> rbx this class-hnd single-def -;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def +; V00 this [V00,T01] ( 10, 7.50) ref -> rbx this class-hnd single-def +;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref class-hnd exact ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T00] ( 11, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V04 tmp2 [V04,T04] ( 2, 4 ) ref -> r15 class-hnd single-def "Inlining Arg" -; V05 tmp3 [V05,T01] ( 5, 10 ) ref -> r15 class-hnd single-def "Inlining Arg" -; V06 tmp4 [V06,T03] ( 4, 7 ) ref -> r13 class-hnd exact single-def "Inlining Arg" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref -;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def -; V09 tmp7 [V09,T06] ( 3, 2 ) int -> rdi -; V10 tmp8 [V10,T08] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -;* V11 tmp9 [V11,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V12 tmp10 [V12,T05] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V13 tmp11 [V13,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" +; V04 tmp2 [V04,T04] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V05 tmp3 [V05,T00] ( 11, 18 ) ref -> r15 class-hnd single-def "Inlining Arg" +; V06 tmp4 [V06,T03] ( 3, 5 ) ref -> r14 class-hnd exact single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref +;* V08 tmp6 [V08 ] ( 0, 0 ) byref -> zero-ref +;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref +; V10 tmp8 [V10,T30] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref +; V12 tmp10 [V12 ] ( 2, 4 ) int -> [rbp-0x1C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V16 tmp14 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref +; V22 tmp20 [V22,T05] ( 2, 4 ) int -> rsi "Inlining Arg" +; V23 tmp21 [V23 ] ( 2, 4 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V24 tmp22 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V26 tmp24 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V27 tmp25 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V32 tmp30 [V32,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref +; V34 tmp32 [V34,T07] ( 2, 2 ) long -> rsi "Inlining Arg" +; V35 tmp33 [V35 ] ( 2, 2 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V37 tmp35 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V38 tmp36 [V38 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V39 tmp37 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V40 tmp38 [V40 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V41 tmp39 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V44 tmp42 [V44 ] ( 0, 0 ) byref -> zero-ref +; V45 tmp43 [V45,T08] ( 2, 2 ) long -> rsi "Inlining Arg" +; V46 tmp44 [V46 ] ( 2, 2 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V47 tmp45 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V48 tmp46 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V49 tmp47 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V50 tmp48 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V51 tmp49 [V51 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V52 tmp50 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V53 tmp51 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V54 tmp52 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V55 tmp53 [V55 ] ( 0, 0 ) byref -> zero-ref +; V56 tmp54 [V56,T09] ( 2, 2 ) int -> rsi "Inlining Arg" +; V57 tmp55 [V57 ] ( 2, 2 ) int -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V58 tmp56 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V59 tmp57 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V60 tmp58 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V61 tmp59 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V62 tmp60 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V63 tmp61 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V64 tmp62 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V65 tmp63 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V66 tmp64 [V66 ] ( 0, 0 ) byref -> zero-ref +; V67 tmp65 [V67,T10] ( 2, 2 ) int -> rsi "Inlining Arg" +; V68 tmp66 [V68 ] ( 2, 2 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" +;* V69 tmp67 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +;* V70 tmp68 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" +;* V71 tmp69 [V71 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +;* V72 tmp70 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V73 tmp71 [V73 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" +;* V74 tmp72 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V75 tmp73 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +;* V76 tmp74 [V76 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V77 tmp75 [V77 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" +;* V78 tmp76 [V78,T11] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp77 [V79 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP +;* V80 tmp78 [V80 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp79 [V81 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP +;* V82 tmp80 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp81 [V83 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP +;* V84 tmp82 [V84,T12] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP +;* V85 tmp83 [V85,T15] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP +;* V86 tmp84 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V87 tmp85 [V87 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP +;* V88 tmp86 [V88,T13] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP +;* V89 tmp87 [V89 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP +;* V90 tmp88 [V90 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP +;* V91 tmp89 [V91 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +;* V92 tmp90 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP +;* V93 tmp91 [V93 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP +;* V94 tmp92 [V94,T14] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP +;* V95 tmp93 [V95,T16] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP +;* V96 tmp94 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP +;* V97 tmp95 [V97 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP +;* V98 tmp96 [V98,T17] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP +;* V99 tmp97 [V99 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP +;* V100 tmp98 [V100 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP +;* V101 tmp99 [V101 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP +;* V102 tmp100 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP +;* V103 tmp101 [V103 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP +;* V104 tmp102 [V104,T18] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V105 tmp103 [V105,T26] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP +;* V106 tmp104 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP +;* V107 tmp105 [V107 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP +;* V108 tmp106 [V108,T19] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP +;* V109 tmp107 [V109 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP +;* V110 tmp108 [V110 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP +;* V111 tmp109 [V111 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP +;* V112 tmp110 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP +;* V113 tmp111 [V113 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP +;* V114 tmp112 [V114,T20] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP +;* V115 tmp113 [V115,T27] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP +;* V116 tmp114 [V116 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP +;* V117 tmp115 [V117 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP +;* V118 tmp116 [V118,T21] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP +;* V119 tmp117 [V119 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V120 tmp118 [V120 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP +;* V121 tmp119 [V121 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP +;* V122 tmp120 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP +;* V123 tmp121 [V123 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP +;* V124 tmp122 [V124,T22] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP +;* V125 tmp123 [V125,T28] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP +;* V126 tmp124 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V63._reference (fldOffset=0x0)" P-INDEP +;* V127 tmp125 [V127 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP +;* V128 tmp126 [V128,T23] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP +;* V129 tmp127 [V129 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP +;* V130 tmp128 [V130 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP +;* V131 tmp129 [V131 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP +;* V132 tmp130 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V72._reference (fldOffset=0x0)" P-INDEP +;* V133 tmp131 [V133 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP +;* V134 tmp132 [V134,T24] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP +;* V135 tmp133 [V135,T29] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP +;* V136 tmp134 [V136 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP +;* V137 tmp135 [V137 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP +;* V138 tmp136 [V138 ] ( 0, 0 ) long -> zero-ref "V77.[000..008)" +;* V139 tmp137 [V139 ] ( 0, 0 ) ref -> zero-ref single-def "V77.[008..016)" +;* V140 tmp138 [V140 ] ( 0, 0 ) ref -> zero-ref single-def "V77.[016..024)" +;* V141 tmp139 [V141 ] ( 0, 0 ) ubyte -> zero-ref "V77.[024..025)" +;* V142 tmp140 [V142 ] ( 0, 0 ) ubyte -> zero-ref "V77.[025..026)" +; V143 tmp141 [V143,T06] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V144 tmp142 [V144,T31] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V145 cse0 [V145,T02] ( 7, 5 ) long -> r14 "CSE #02: aggressive" ; -; Lcl frame size = 0 +; Lcl frame size = 40 G_M43765_IG01: push rbp push r15 push r14 - push r13 push rbx - lea rbp, [rsp+0x20] + sub rsp, 40 + lea rbp, [rsp+0x40] mov rbx, rdi - ;; size=16 bbWeight=1 PerfScore 5.75 + ;; size=18 bbWeight=1 PerfScore 5.00 G_M43765_IG02: - mov r15, gword ptr [rbx+0x08] - mov rdi, 0xD1FFAB1E ; System.IO.BinaryWriter - call CORINFO_HELP_NEWSFAST - mov r14, rax - mov r15, gword ptr [r15+0x08] + mov rdi, gword ptr [rbx+0x08] + mov r15, gword ptr [rdi+0x08] mov rdi, 0xD1FFAB1E ; const ptr - mov r13, gword ptr [rdi] + mov r14, gword ptr [rdi] test r15, r15 - je G_M43765_IG12 + je G_M43765_IG11 mov rdi, r15 mov rax, qword ptr [r15] mov rax, qword ptr [rax+0x40] call [rax+0x30]System.IO.Stream:get_CanWrite():ubyte:this test eax, eax - je G_M43765_IG11 - lea rdi, bword ptr [r14+0x08] - mov rsi, r15 - call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [r14+0x10] - mov rsi, r13 - call CORINFO_HELP_ASSIGN_REF - mov byte ptr [r14+0x18], 0 - cmp dword ptr [r13+0x20], 0xFDE9 + je G_M43765_IG10 + cmp dword ptr [r14+0x20], 0xFDE9 jne SHORT G_M43765_IG04 - ;; size=108 bbWeight=1 PerfScore 26.00 + ;; size=61 bbWeight=1 PerfScore 20.00 G_M43765_IG03: - mov rdi, gword ptr [r13+0x10] + mov rdi, gword ptr [r14+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this - cmp eax, 1 - setle dil - movzx rdi, dil - jmp SHORT G_M43765_IG05 - ;; size=27 bbWeight=0.50 PerfScore 6.25 + ;; size=14 bbWeight=0.50 PerfScore 4.50 G_M43765_IG04: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M43765_IG05: - mov byte ptr [r14+0x19], dil - mov rdi, r14 - mov esi, 0xD1FFAB1E - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this + mov dword ptr [rbp-0x1C], 0xD1FFAB1E + lea rsi, bword ptr [rbp-0x1C] + mov edx, 4 + mov rdi, r15 + mov rax, qword ptr [r15] + mov r14, qword ptr [rax+0x60] + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov esi, dword ptr [rbx+0x6C] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this + mov dword ptr [rbp-0x20], esi + lea rsi, bword ptr [rbp-0x20] + mov edx, 4 + mov rdi, r15 + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov esi, 0xD1FFAB1E cmp qword ptr [rbx+0x50], rsi - jg SHORT G_M43765_IG07 - ;; size=53 bbWeight=1 PerfScore 14.50 -G_M43765_IG06: + jg SHORT G_M43765_IG06 + ;; size=63 bbWeight=1 PerfScore 20.25 +G_M43765_IG05: mov esi, 0xD1FFAB1E cmp qword ptr [rbx+0x58], rsi - jle SHORT G_M43765_IG09 + jle SHORT G_M43765_IG07 ;; size=11 bbWeight=0.50 PerfScore 2.12 -G_M43765_IG07: +G_M43765_IG06: mov rsi, qword ptr [rbx+0x50] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this - call [rax]System.IO.BinaryWriter:Write(long):this + mov qword ptr [rbp-0x28], rsi + lea rsi, bword ptr [rbp-0x28] + mov edx, 8 + mov rdi, r15 + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov rsi, qword ptr [rbx+0x58] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(long):this - ;; size=36 bbWeight=0.50 PerfScore 4.00 -G_M43765_IG08: - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - tail.jmp [rax]System.IO.BinaryWriter:Write(long):this - ;; size=11 bbWeight=0.50 PerfScore 2.25 -G_M43765_IG09: + mov qword ptr [rbp-0x30], rsi + lea rsi, bword ptr [rbp-0x30] + mov edx, 8 + mov rdi, r15 + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + jmp SHORT G_M43765_IG08 + ;; size=50 bbWeight=0.50 PerfScore 8.00 +G_M43765_IG07: mov esi, dword ptr [rbx+0x50] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - call [rax]System.IO.BinaryWriter:Write(uint):this + mov dword ptr [rbp-0x34], esi + lea rsi, bword ptr [rbp-0x34] + mov edx, 4 + mov rdi, r15 + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this mov esi, dword ptr [rbx+0x58] - mov rdi, r14 - mov rax, 0xD1FFAB1E ; code for System.IO.BinaryWriter:Write(uint):this - ;; size=34 bbWeight=0.50 PerfScore 4.00 -G_M43765_IG10: + mov dword ptr [rbp-0x38], esi + lea rsi, bword ptr [rbp-0x38] + mov edx, 4 + mov rdi, r15 + call [r14+0x38]System.IO.Stream:Write(System.ReadOnlySpan`1[ubyte]):this + ;; size=44 bbWeight=0.50 PerfScore 7.00 +G_M43765_IG08: + nop + ;; size=1 bbWeight=1 PerfScore 0.25 +G_M43765_IG09: + add rsp, 40 pop rbx - pop r13 pop r14 pop r15 pop rbp - tail.jmp [rax]System.IO.BinaryWriter:Write(uint):this - ;; size=11 bbWeight=0.50 PerfScore 2.25 -G_M43765_IG11: + ret + ;; size=11 bbWeight=1 PerfScore 3.25 +G_M43765_IG10: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_StreamNotWritable():System.String call [rax]System.SR:get_Argument_StreamNotWritable():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 -G_M43765_IG12: +G_M43765_IG11: mov edi, 0x146D0 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) call [rax]System.ArgumentNullException:Throw(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 402, prolog size 13, PerfScore 67.25, instruction count 100, allocated bytes for code 402 (MethodHash=15b5550a) for method System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts) +; Total bytes of code 366, prolog size 15, PerfScore 70.38, instruction count 95, allocated bytes for code 366 (MethodHash=15b5550a) for method System.IO.Compression.ZipArchiveEntry:WriteDataDescriptor():this (FullOpts) ```

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

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

MihuBot commented 3 months ago

@xtqqczze